context('test-create_table.R')
# Flush db
KEYS$RED$FLUSHDB()
test_that("Create a table from match data", {
# Order the match data first
matchData <- footballstats::matchData %>%
footballstats::rename_columns(mapping = "api") %>%
footballstats::order_matchdata()
KEYS %>% footballstats::create_table(
matchData = matchData
)
# Function to make sure remains the same
check_table <- function(KEYS) {
# Follow a teamID
teamID <- 9427
allKeys <- paste0("*:", teamID) %>%
KEYS$RED$KEYS() %>%
purrr::flatten_chr()
# Check basic key lengths
expect_equal( "*" %>% KEYS$RED$KEYS() %>% length, 138 )
expect_equal( "leagueMatchSet:2017" %>% KEYS$RED$SMEMBERS() %>% length, 140 )
# Create function for mapping and flattening
mf <- function(x, y) x %>% purrr::map(y) %>% purrr::flatten_chr()
# Order the keys
allKeys %<>% `[`(
allKeys %>%
strsplit(split = ':') %>%
mf(4) %>%
as.integer %>%
order
)
results <- KEYS$RED$pipeline(
.commands = lapply(
X = allKeys,
FUN = function(x) x %>% KEYS$PIPE$HGETALL()
)
) %>%
lapply(footballstats::create_hash)
mf <- function(x, y) x %>% purrr::map(y) %>% purrr::flatten_chr()
expect_equal( results %>% mf(1) %>% unique %>% tolower, "west ham united") # Team name
expect_equal( results %>% mf(2) %>% as.integer %>% sum, 35 ) # Points
expect_equal( results %>% mf(3) %>% as.integer %>% sum, 27 ) # GF
expect_equal( results %>% mf(4) %>% as.integer %>% sum, 5 ) # GD
}
# Check results
KEYS %>% check_table()
# Run again
KEYS %>% footballstats::create_table(
matchData = matchData
)
# Check results haven't changed
KEYS %>% check_table()
KEYS$RED$FLUSHDB()
# Make sure I can overlap the match data and it still works the same
loI <- c(1, 3, 34, 39)
upI <- c(2, 40, 40, 70)
for (i in 1:(loI %>% length)) {
KEYS %>% footballstats::create_table(
matchData = matchData[loI[i]:upI[i], ]
)
}
KEYS %>% check_table()
KEYS$RED$FLUSHDB()
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.