#' logger_screen_test
#'
#' Test the logger exports against the schema to see if the event name has the correct screen_name
#' @param log_data The output of the logger
#' @param schema The schema
#' @export
logger_screen_test <- function(log_data,schema) {
require(tidyverse)
log_data2 <- log_data %>%
rename(screen_log = screen_name) %>%
filter(!event_name == 'screen_view')
schema2 <- schema %>%
select(firebase_event_name,screen_name) %>%
rename(screen_schema = screen_name) %>%
mutate(multiple_locations = str_detect(screen_schema,' / |(multiple)'))
final_names <- c("app_version", "app_package", "operating_system", "os_version",
"device_model", "screen_log", "time", "type", "tracker", "event_name",
"app_session_hit_count", "app_session_id", "date",
"timestamp", "screen_schema", "multiple_locations", "matching_screen",
"pass_ct")
final <- log_data2 %>%
left_join(schema2,by=c('event_name'='firebase_event_name')) %>%
filter(!screen_schema == '(depends on location)') %>%
mutate(matching_screen = screen_log == screen_schema,
matching_screen = ifelse(multiple_locations == TRUE & matching_screen == FALSE,screen_log %in% unlist(str_split(screen_schema, ' / ')),matching_screen),
matching_screen = ifelse(is.na(screen_log),FALSE,matching_screen),
pass_ct = ifelse(matching_screen == TRUE,1,0)) %>%
select(all_of(final_names))
return(final)
}
#' logger_screen_fails
#'
#' Pull out all the failed screen names
#' @param df The data-frame of test results
#' @param test Either 'pass' or 'fail'
#' @export
logger_screen_results <- function(df,test) {
require(tidyverse)
match_type = ifelse(test == 'fail',FALSE,TRUE)
df <- df %>%
group_by(event_name) %>%
mutate(pct_passed = sum(pass_ct) / n(),
tests = n()) %>%
ungroup() %>%
filter(matching_screen == match_type) %>%
select(event_name,screen_schema,screen_log,pct_passed,tests) %>%
distinct() %>%
rename(expected_screen = 2,
actual_screen = 3) %>%
arrange(event_name,actual_screen)
return(df)
}
#' logger_screen_summary
#'
#' Get the results for each event
#' @param df The data-frame of test results
#' @param test Pass 'total' if you want the whole set summarized
#' @export
logger_screen_summary <- function(df,test) {
require(tidyverse)
df <- df %>%
group_by(event_name) %>%
summarize(tests = n(),
passed = sum(pass_ct),
failed = tests - passed,
pct_passed = passed / tests,
pct_failed = failed / tests) %>%
ungroup() %>%
arrange(event_name)
if (test == 'total') {
df2 <- df %>%
summarize(tests = sum(tests),
passed = sum(passed),
failed = sum(failed),
pct_passed = passed / tests,
pct_failed = failed / tests)
return(df2)
} else {
return(df)
}
}
#' logger_screen_all
#'
#' Get tall test results in one list
#' @param log_data The output of the logger
#' @param schema The schema
#' @param os The operating system
#' @export
logger_screen_all <- function(log_data,schema,os) {
require(tidyverse)
test <- logger_screen_test(log_data,schema,os)
logger_list <- list()
logger_list$summary_overall <- logger_screen_summary(test,'total')
logger_list$summary_events <- logger_screen_summary(test,'events')
logger_list$tests_failed <- logger_screen_results(test,'fail')
logger_list$tests_passed <- logger_screen_results(test,'pass')
return(logger_list)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.