Nothing
### Docker is required to run these tests.
### Read more about docker at https://hub.docker.com/_/mysql
docker_working <-
tryCatch({
container_sha <-
system(
"docker run -e MYSQL_ROOT_PASSWORD=password -e MYSQL_USER=admin -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=example -p 3306:3306 -d mysql",
intern = TRUE
)
Sys.sleep(20)
con <-
DBI::dbConnect(
RMySQL::MySQL(),
host = "127.0.0.1",
username = "root",
password = "password",
dbname = "example",
port = 3306
)
TRUE
}, error = \(x){
FALSE
})
if(docker_working){
#-------------------------------------------------------------------------------
test_that(
"get_schemas retrieves schemas correctly",
{
expect_equal(
get_schemas_mysql(con),
c("example", "information_schema", "mysql", "performance_schema", "sys")
)
}
)
test_that(
"get_tables retrieve tables correctly",
{
DBI::dbSendQuery(
con,
"SET @@GLOBAL.local_infile = 1;"
)
result <- write_table_mysql(
con,
schema = "example",
table_name = "mtcars",
data = mtcars
)
expect_true(
"mtcars" %in% get_tables_mysql(
con,
schema = "example"
)
)
}
)
test_that(
"get_n_rows retrieves the correct number of rows of a table",
{
expect_equal(
get_n_rows_mysql(
con,
schema = "example",
table = "mtcars"
) |> as.numeric(),
nrow(mtcars) |> as.numeric()
)
}
)
test_that(
"get_n_rows retrieves the correct number of rows of a query",
{
expect_equal(
get_n_rows_mysql(
con,
schema = "example",
table = "mtcars",
query = "SELECT * FROM mtcars LIMIT 10"
) |> as.numeric(),
10
)
}
)
test_that(
"get_preview returns a view of the dataframe",
{
mtcars_wo_rownames <-
mtcars
rownames(mtcars_wo_rownames) <-
NULL
expect_equal(
get_preview_mysql(
con,
schema = "example",
table = "mtcars"
),
mtcars_wo_rownames
)
}
)
test_that(
"a create table query works correcty",
{
n_rows = get_n_rows_mysql(
con = con,
schema = "",
table = "",
"CREATE TABLE mtcars_2 AS SELECT * FROM mtcars"
)
submit_query(
"CREATE TABLE mtcars_2 AS SELECT * FROM mtcars",
con = con,
n_rows = n_rows
)
expect_true(
"mtcars_2" %in% DBI::dbListTables(con)
)
}
)
test_that(
"delete_table correctly drops the table",
{
expect_equal(
"Success",
delete_table_mysql(
con,
schema = "example",
table = "mtcars"
)
)
expect_false(
"mtcars" %in% get_tables_mysql(con, schema = "example")
)
}
)
test_that(
"write_table correctly upload table",
{
res <- DBI::dbSendQuery(con, "CREATE SCHEMA example_2")
DBI::dbClearResult(res)
write_table_mysql(
con,
schema = "example_2",
table_name = "mtcars",
data = mtcars
)
expect_true(
"mtcars" %in% get_tables_mysql(con, schema = "example_2")
)
}
)
test_that(
"a join query returns the correct number of rows",
{
table_1 <-
data.frame(
x = c(1, 2, 3),
y = c("A", "B", "C")
)
table_2 <-
data.frame(
z = c(4, 5, 6),
y = c("A", "B", "C")
)
write_table_mysql(
con,
schema = "example",
table_name = "table_1",
data = table_1
)
write_table_mysql(
con,
schema = "example",
table_name = "table_2",
data = table_2
)
expect_equal(
get_n_rows_mysql(
con = con,
schema = "",
table = "",
query = "SELECT * FROM table_1 INNER JOIN table_2 USING (y)"
),
3
)
}
)
#-------------------------------------------------------------------------------
DBI::dbDisconnect(con)
system(
glue::glue(
"docker stop {container_sha}"
),
intern = TRUE
)
Sys.sleep(3)
system(
glue::glue(
"docker rm {container_sha}"
),
intern = TRUE
)
}
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.