Nothing
test_that("add_duration", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_duration <- add_duration(wt, cutoff = 300, replace_by = NA)
# test that variables in result
expect_true("duration" %in% names(wt_duration))
# test that duration variable is not NA
expect_true(min(wt_duration$duration, na.rm = TRUE) >= 0)
# test that no duration > cutoff
expect_true(max(wt_duration$duration, na.rm = TRUE) < 300)
# test that last row for panelist is NA for default
expect_true(is.na(tail(wt_duration$duration[wt_duration$panelist_id == "AiDS4k1rQZ"], 1)))
# test that last row for panelist is not NA
wt_duration <- add_duration(wt, last_replace_by = 0)
expect_true(tail(wt_duration$duration[wt_duration$panelist_id == "AiDS4k1rQZ"], 1) == 0)
# test device_switch_na
wt_duration <- add_duration(wt, device_switch_na = TRUE, device_var = "device")
wt_duration$device_next <- ave(wt_duration$device, wt_duration$panelist_id, FUN = function(x) c(tail(x, -1), NA))
expect_true(is.na(wt_duration$duration[wt_duration$device_next != wt_duration$device][1]))
})
test_that("add_duration testdt_specific", {
skip_on_cran()
options(digits = 22)
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_duration <- add_duration(wt)
# test duration for first row
expect_true(as.numeric(wt_duration[1, "duration"]) == 2.8580000400543212890625)
# test total duration
expect_true(sum(wt_duration[, "duration"], na.rm = T) == 1177364.354005098342896)
})
test_that("add_duration errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(add_duration(wt, replace_by = -1))
expect_error(add_duration(wt, device_switch_na = T, device_var = NULL))
expect_error(add_duration(wt, device_switch_na = T, device_var = "not_a_variable"))
})
test_that("add_session", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_session <- add_session(wt, cutoff = 1800)
# test that variables in result
expect_true("session" %in% names(wt_session))
# test that session variable always positive
expect_true(min(wt_session$session, na.rm = T) >= 1)
# test that next session is only smaller than session when switch to new panelist
wt_session$next_session <- ave(wt_session$session, wt_session$panelist_id, FUN = function(x) c(tail(x, -1), NA))
expect_true(nrow(wt_session[wt_session$session > wt_session$next_session, ]) <=
length(unique(wt_session$panelist_id)))
})
test_that("add_session errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
# no cutoff specified
expect_error(add_session(wt))
})
test_that("add_session testdt_specific", {
options(digits = 22)
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_session <- add_session(wt, cutoff = 1800)
expect_true(max(wt_session$session[wt$panelist_id == "AiDS4k1rQZ"]) == 123)
})
test_that("deduplicate", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt <- add_duration(wt, cutoff = 300, replace_by = 300)
# test that variables in result
wt_dedup <- deduplicate(wt, method = "flag")
expect_true("duplicate" %in% names(wt_dedup))
wt_dedup <- deduplicate(wt, method = "drop")
expect_true(!"duplicate" %in% names(wt_dedup))
wt_dedup <- deduplicate(wt, method = "aggregate", keep_nvisits = TRUE)
expect_true("visits" %in% names(wt_dedup))
wt <- extract_domain(wt)
wt_dedup <- deduplicate(wt, method = "aggregate", add_grpvars = "domain")
expect_true("domain" %in% names(wt_dedup))
wt <- extract_host(wt)
wt_dedup <- deduplicate(wt, method = "aggregate", add_grpvars = c("domain", "host"))
expect_true("domain" %in% names(wt_dedup))
})
test_that("deduplicate errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt <- add_duration(wt, cutoff = 300, replace_by = 300)
expect_error(deduplicate(wt, method = "aggregate", duration_var = "not_a_variable"))
expect_error(deduplicate(wt, method = "flag", within = NULL))
expect_error(deduplicate(wt, method = "drop", within = NULL))
})
test_that("deduplicate testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt <- add_duration(wt, cutoff = 300, replace_by = 300)
wt_dedup <- deduplicate(wt, method = "drop")
expect_true(nrow(wt_dedup) == 46574)
wt_dedup <- deduplicate(wt, method = "flag")
expect_true(sum(wt_dedup[, "duplicate"]) == 3038)
wt_dedup <- deduplicate(wt, method = "aggregate")
expect_true(nrow(wt_dedup) == 39540)
wt_dedup <- deduplicate(wt, method = "aggregate", keep_nvisits = TRUE)
expect_true(max(wt_dedup[, "visits"]) == 608)
})
test_that("extract_host", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_host <- suppressWarnings(extract_host(wt))
expect_true("host" %in% names(wt_host))
wt$other_url <- wt$url
wt_host <- suppressWarnings(extract_host(wt, varname = "other_url"))
expect_true("other_url_host" %in% names(wt_host))
})
test_that("extract_host errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(extract_host(wt, varname = "not_a_variable"))
})
test_that("extract_host testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_host <- extract_host(wt)
expect_true(wt_host$host[1] == "dkr1.ssisurveys.com")
expect_true(!any(is.na(wt_host$host)))
})
test_that("extract_domain", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
# test existence of new columns
wt_domain <- extract_domain(wt)
expect_true("domain" %in% names(wt_domain))
wt$other_url <- wt$url
wt_domain <- extract_domain(wt, varname = "other_url")
expect_true("other_url_domain" %in% names(wt_domain))
})
test_that("extract_domain errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(extract_domain(wt, varname = "not_a_variable"))
})
test_that("extract_domain testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_domain <- extract_domain(wt)
expect_true(wt_domain[1, "domain"] == "ssisurveys.com")
})
test_that("extract_path", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_path <- extract_path(wt)
expect_true("path" %in% names(wt_path))
wt$other_url <- wt$url
wt_path <- extract_path(wt, varname = "other_url")
expect_true("other_url_path" %in% names(wt_path))
})
test_that("extract_path errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(extract_path(wt, varname = "not_a_variable"))
})
test_that("extract_path testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_path <- extract_path(wt)
expect_true(wt_path[1, "path"] == "/tzktsxomta")
expect_true(wt_path[wt_path$url == "https://www.youtube.com/", "path"][1] == "/")
})
test_that("parse_path", {
skip_on_cran()
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_path <- parse_path(wt)
expect_true("path_split" %in% names(wt_path))
# test that all path_split values have letters
expect_true(sum(grepl("[A-Za-z]", wt_path$path_split)) ==
sum(wt_path$path_split != ""))
# test different name for URL variable
wt$url2 <- wt$url
wt_path2 <- parse_path(wt, varname = "url2")
expect_true("url2_path_split" %in% names(wt_path2))
})
test_that("parse_path errors", {
skip_on_cran()
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(extract_path(wt, varname = "not_a_variable"))
})
test_that("parse_path testdt_specific", {
skip_on_cran()
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_path <- parse_path(wt)
expect_true(wt_path[4879, "path_split"] == "quartzy,instagram,influencers,are,out,slackers,are,in")
expect_true(wt_path$path_split[wt_path$url == "https://www.youtube.com/"][1] == "")
})
test_that("drop_query", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
# test existence of new colums
wt_noquery <- drop_query(wt)
expect_true("url_noquery" %in% names(wt_noquery))
wt$other_url <- wt$url
wt_noquery <- drop_query(wt, varname = "other_url")
expect_true("other_url_noquery" %in% names(wt_noquery))
# test absence of queries / fragments
wt_noquery <- drop_query(wt)
expect_true(length(grep("\\?|#", wt_noquery$url_noquery)) == 0)
})
test_that("drop_query errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(drop_query(wt, varname = "not_a_variable"))
})
test_that("drop_query testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_noquery <- drop_query(wt)
expect_true(wt_noquery[1, "url_noquery"] == "https://dkr1.ssisurveys.com/tzktsxomta")
wt_queries <- wt[grep("\\?", wt$url), ]
wt_noquery <- drop_query(wt_queries)
expect_true(wt_noquery[1, "url_noquery"] == "https://www.marketwatch.com/story/kelloggs-owned-veggie-burger-brand-morningstar-farms-to-go-all-vegan-by-2021-2019-03-04")
})
test_that("add_next_visit add_previous_visit", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
# test existence of new colums
wt_next <- add_next_visit(wt)
expect_true("url_next" %in% names(wt_next))
wt_next <- add_next_visit(wt, level = "host")
expect_true("host_next" %in% names(wt_next))
wt_next <- add_next_visit(wt, level = "domain")
expect_true("domain_next" %in% names(wt_next))
wt_prev <- add_previous_visit(wt)
expect_true("url_previous" %in% names(wt_prev))
wt_prev <- add_previous_visit(wt, level = "host")
expect_true("host_previous" %in% names(wt_prev))
wt_prev <- add_previous_visit(wt, level = "domain")
expect_true("domain_previous" %in% names(wt_prev))
# test identity of second visit and first next visit
wt_next <- add_next_visit(wt)
expect_true(wt_next[2, "url"] == wt_next[1, "url_next"])
# test identity of first visit and second previous visit
wt_prev <- add_previous_visit(wt)
expect_true(wt_prev[1, "url"] == wt_prev[2, "url_previous"])
# test first and last row
expect_true(is.na(wt_next[nrow(wt_next), "url_next"]))
expect_true(is.na(wt_prev[1, "url_previous"]))
})
test_that("add_next_visit add_previous_visit testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_next <- add_next_visit(wt)
expect_true(wt_next[1, "url_next"] == "https://roirocket.decipherinc.com/hivvocmeox")
wt_prev <- add_previous_visit(wt)
expect_true(wt_prev[2, "url_previous"] == "https://dkr1.ssisurveys.com/tzktsxomta")
})
test_that("add_title", {
skip_on_cran()
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking[1, ])
wt_title <- add_title(wt)
expect_true("title" %in% names(wt_title))
})
test_that("add_title testdt_specific", {
skip_on_cran()
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking[1, ])
wt_title <- add_title(wt)
expect_true(is.na(wt_title[, "title"]))
})
test_that("add_referral", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_ref <- add_referral(wt, platform_domains = "facebook.com", patterns = "fbclid=")
# test existence of columns
expect_true("referral" %in% names(wt_ref))
expect_true(!"domain_previous" %in% names(wt_ref))
# test value of new column
expect_true(names(table(wt_ref$referral)) == "facebook.com")
})
test_that("add_referral errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
expect_error(add_referral(wt))
expect_error(add_referral(wt, platform_domains = "facebook.com"))
expect_error(add_referral(wt, platform_domains = c("facebook.com", "twitter.com"), pattern = "some"))
})
test_that("add_referral testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt_ref <- add_referral(wt, platform_domains = "facebook.com", patterns = "fbclid=")
expect_true(table(wt_ref$referral) == 57)
expect_true(table(wt_ref$referral, exclude = NULL)[2] == 49555)
})
test_that("urldummy", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
wt <- extract_domain(wt)
code_urls <- c("https://dkr1.ssisurveys.com/tzktsxomta")
wt <- create_urldummy(wt, dummy = code_urls, name = "test_dummy")
expect_true(wt$test_dummy[1])
})
test_that("panelist_data", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
data("testdt_survey_w")
# test existence of columns
wt_joined <- add_panelist_data(wt, testdt_survey_w)
expect_true("leftright" %in% names(wt_joined))
wt_joined <- add_panelist_data(wt, testdt_survey_w, cols = c("gender", "education"))
expect_true(!("leftright" %in% names(wt_joined)))
# text presence of data
expect_true(sum(is.na(wt_joined$gender)) == 0)
})
test_that("panelist_data errors", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
data("testdt_survey_w")
wt_joined <- add_panelist_data(wt, testdt_survey_w)
expect_error(add_panelist_data(wt_joined, "not_a_variable"))
expect_error(add_panelist_data(wt_joined, join_on = "not_a_variable"))
})
test_that("panelist_data testdt_specific", {
data("testdt_tracking")
wt <- as.wt_dt(testdt_tracking)
data("testdt_survey_w")
wt_joined <- add_panelist_data(wt, testdt_survey_w)
expect_true(round(mean(wt_joined$leftright), 2) == 4.99)
})
test_that("issue 98", {
test <- data.frame(
panelist_id = "abc",
timestamp = as.POSIXct("2019-05-31 12:41:59"),
url = "https://www.omahasteaks.com/product/Private-Reserve%AE-Boneless-Strips-00000004718"
)
test <- as.wt_dt(test)
expect_error(suppressWarnings(parse_path(test, decode = TRUE)))
expect_no_error(parse_path(test, decode = FALSE))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.