tests/testthat/test_eventlog.R

read_testdata <- function () {
  read.csv("./testdata/patients.csv") %>%
    mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d %H:%M:%S", tz = "UTC"))
}
test_that("test eventlog without error", {

	patients <- read_testdata()

	expect_error(
		patientslog <- patients %>%
			eventlog(case_id = "patient",
					 activity_id = "activity",
					 activity_instance_id = "activity_instance",
					 lifecycle_id = "status",
					 timestamp = "timestamp",
					 resource_id = "resource"),
	NA)

})
test_that("test eventlog without warning", {

	patients <- read_testdata()

	expect_warning(
		patientslog <- patients %>%
			eventlog(case_id = "patient",
					 activity_id = "activity",
					 activity_instance_id = "activity_instance",
					 lifecycle_id = "status",
					 timestamp = "timestamp",
					 resource_id = "resource"),
		NA)

})
test_that("test eventlog correctly parsing dataset", {

  patients <- read_testdata()
  patientslog <- patients %>%
    eventlog(case_id = "patient",
             activity_id = "activity",
             activity_instance_id = "activity_instance",
             lifecycle_id = "status",
             timestamp = "timestamp",
             resource_id = "resource")

  expect_s3_class(patientslog, "eventlog")
  expect_equal(nrow(patients), nrow(patientslog))
})

test_that("test eventlog multiple value arg", {

  patients_multicase <- read.csv("./testdata/patients_multicase.csv") %>%
    mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d %H:%M:%S", tz = "UTC"))
  patientslog <- patients_multicase %>%
    eventlog(case_id = c("patient_firstname", "patient_lastname"),
             activity_id = "activity",
             activity_instance_id = "activity_instance",
             lifecycle_id = "status",
             timestamp = "timestamp",
             resource_id = "resource")

  expect_equal(case_id(patientslog), "patient_firstname_patient_lastname")
  expect_equal(patientslog[[case_id(patientslog)]][1], "John_Doe")
})

test_that("test eventlog timestamp no POSIXct arg", {

  patients_noPOSIXct <- read.csv("./testdata/patients.csv")

  expect_error(
    patientslog <- patients_noPOSIXct %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource"),
    "*POSIXct*")
})

test_that("test eventlog timestamp Date arg", {

	patients_noPOSIXct <- read.csv("./testdata/patients.csv") %>%
		mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d", tz = "UTC"))

	expect_error(
		patientslog <- patients_noPOSIXct %>%
			eventlog(case_id = "patient",
					 activity_id = "activity",
					 activity_instance_id = "activity_instance",
					 lifecycle_id = "status",
					 timestamp = "timestamp",
					 resource_id = "resource"),
		NA)
})

test_that("test eventlog order arg 'auto'", {

  patientslog <- read_testdata() %>%
    eventlog(case_id = "patient",
             activity_id = "activity",
             activity_instance_id = "activity_instance",
             lifecycle_id = "status",
             timestamp = "timestamp",
             resource_id = "resource",
             order = "auto")

  expect_equal(patientslog$.order, seq_len(nrow(patientslog)))
})

test_that("test eventlog order arg 'alphabetical'", {

  patients_ordering <- read.csv("./testdata/patients_ordering.csv") %>%
    mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d %H:%M:%S", tz = "UTC"))

  patientslog <- patients_ordering %>%
    eventlog(case_id = "patient",
             activity_id = "activity",
             activity_instance_id = "activity_instance",
             lifecycle_id = "status",
             timestamp = "timestamp",
             resource_id = "resource",
             order = "alphabetical")

  expect_equal(patientslog$.order, c(1, 8, 9, 3, 4, 5, 6, 7, 2))
})

test_that("test eventlog order arg sort column", {

  patients_ordering <- read.csv("./testdata/patients_ordering.csv") %>%
    mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d %H:%M:%S", tz = "UTC"))

  patientslog <- patients_ordering %>%
    eventlog(case_id = "patient",
             activity_id = "activity",
             activity_instance_id = "activity_instance",
             lifecycle_id = "status",
             timestamp = "timestamp",
             resource_id = "resource",
             order = "resource")

  expect_equal(patientslog$.order, c(6, 4, 5, 1, 2, 3, 8, 9, 7))
})

test_that("test eventlog order arg 'sorted' missing .order column", {

  expect_error(
    read_testdata() %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource",
               order = "sorted"),
    "Order should be a character with value 'auto', 'alphabetical', 'sorted', or a valid column-name")
})

test_that("test eventlog order arg out of range", {

  expect_error(
    read_testdata() %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource",
               order = "random"),
    "Order should be a character with value 'auto', 'alphabetical', 'sorted', or a valid column-name")
})

test_that("test eventlog mandatory args", {

  patients <- read_testdata()

  expect_error(
    patients %>%
      eventlog(activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource"),
    "*case_id*")
  expect_error(
    patients %>%
      eventlog(case_id = "patient",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource"),
    "*activity_id*")
  expect_error(
    patients %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               lifecycle_id = "status",
               timestamp = "timestamp",
               resource_id = "resource"),
    "*activity_instance_id*")
  expect_error(
    patients %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               timestamp = "timestamp",
               resource_id = "resource"),
    "*lifecycle_id*")
  expect_error(
    patients %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               resource_id = "resource"),
    "*timestamp*")
  expect_error(
    patients %>%
      eventlog(case_id = "patient",
               activity_id = "activity",
               activity_instance_id = "activity_instance",
               lifecycle_id = "status",
               timestamp = "timestamp"),
    "*resource_id*")
})

Try the bupaR package in your browser

Any scripts or data that you put into this service are public.

bupaR documentation built on April 3, 2023, 5:23 p.m.