test_that("Deleting a Table Object", { wb <- wb_workbook() wb$add_worksheet("Sheet 1") wb$add_worksheet("Sheet 2") wb$add_data_table(sheet = "Sheet 1", x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) # Get table ---- expect_equal(nrow(wb_get_tables(wb, sheet = 1)), 2L) expect_equal(nrow(wb_get_tables(wb, sheet = "Sheet 1")), 2L) expect_equal(NROW(wb_get_tables(wb, sheet = 2)), 0) expect_equal(NROW(wb_get_tables(wb, sheet = "Sheet 2")), 0) expect_error(wb_get_tables(wb, sheet = 3), "Invalid sheet position") expect_error(wb_get_tables(wb, sheet = "Sheet 3")) exp <- data.frame( tab_name = c("iris", "mtcars"), tab_ref = c("A1:E151", "J1:T33") ) expect_equal(wb_get_tables(wb, sheet = 1), exp, ignore_attr = TRUE) expect_equal(wb_get_tables(wb, sheet = "Sheet 1"), exp, ignore_attr = TRUE) expect_equal(nrow(wb$tables), 2L) ## Deleting a worksheet ---- wb$remove_worksheet(1) expect_equal(nrow(wb$tables), 2L) expect_equal(NROW(wb_get_tables(wb, sheet = 1)), 0) expect_equal(wb$tables$tab_name, c("iris_openxlsx_deleted", "mtcars_openxlsx_deleted")) expect_equal(wb$tables$tab_sheet, c(0, 0)) ## write same tables again ---- wb$add_data_table(sheet = 1, x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) expect_equal(wb$tables$tab_name, c("iris_openxlsx_deleted", "mtcars_openxlsx_deleted", "iris", "mtcars")) expect_equal(wb$tables$tab_sheet, c(0, 0, 1, 1)) expect_equal(nrow(wb_get_tables(wb, sheet = 1)), 2L) expect_equal(nrow(wb_get_tables(wb, sheet = "Sheet 2")), 2L) expect_error(wb_get_tables(wb, sheet = 2)) expect_error(wb_get_tables(wb, sheet = "Sheet 1")) expect_equal(wb_get_tables(wb, sheet = 1), exp, ignore_attr = TRUE) expect_equal(wb_get_tables(wb, sheet = "Sheet 2"), exp, ignore_attr = TRUE) expect_equal(nrow(wb$tables), 4L) ## wb_remove_tables ---- ## remove iris and re-write it wb$remove_tables(sheet = 1, table = "iris") expect_equal(nrow(wb$tables), 4L) expect_equal(wb$worksheets[[1]]$tableParts, "", ignore_attr = TRUE) expect_equal(attr(wb$worksheets[[1]]$tableParts, "tableName"), "mtcars") expect_equal(wb$tables$tab_name, c( "iris_openxlsx_deleted", "mtcars_openxlsx_deleted", "iris_openxlsx_deleted", "mtcars" )) ## wb_remove_tables clears table object and all data wb$add_data_table(sheet = 1, x = iris, table_name = "iris", start_col = 1) temp <- temp_xlsx() wb_save(wb, temp) expect_equal(wb$worksheets[[1]]$tableParts, c("", ""), ignore_attr = TRUE) expect_equal(attr(wb$worksheets[[1]]$tableParts, "tableName"), c("mtcars", "iris")) wb$remove_tables(sheet = 1, table = "iris") expect_equal(nrow(wb$tables), 5L) expect_equal(wb$worksheets[[1]]$tableParts, "", ignore_attr = TRUE) expect_equal(attr(wb$worksheets[[1]]$tableParts, "tableName"), "mtcars") expect_equal(wb$tables$tab_name, c( "iris_openxlsx_deleted", "mtcars_openxlsx_deleted", "iris_openxlsx_deleted", "mtcars", "iris_openxlsx_deleted" )) expect_equal(wb_get_tables(wb, sheet = 1), exp[2, ], ignore_attr = TRUE) file.remove(temp) }) test_that("Save and load Table Deletion", { temp_file <- temp_xlsx() wb <- wb_workbook() wb$add_worksheet("Sheet 1") wb$add_worksheet("Sheet 2") wb$add_data_table(sheet = "Sheet 1", x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) ################################################################################### ## Deleting a worksheet wb$remove_worksheet(1) expect_equal(nrow(wb$tables), 2L) expect_equal(NROW(wb_get_tables(wb, sheet = 1)), 0) expect_equal(wb$tables$tab_name, c("iris_openxlsx_deleted", "mtcars_openxlsx_deleted")) expect_equal(wb$tables$tab_sheet, c(0, 0)) ## both table were written to sheet 1 and are expected to not exist after load wb_save(wb, temp_file) wb <- wb_load(file = temp_file) expect_null(wb$tables) file.remove(temp_file) ################################################################################### ## Deleting a table wb <- wb_workbook() wb$add_worksheet("Sheet 1") wb$add_worksheet("Sheet 2") wb$add_data_table(sheet = "Sheet 1", x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) ## remove iris and re-write it wb$remove_tables(sheet = 1, table = "iris") expect_equal(wb$tables$tab_name, c("iris_openxlsx_deleted", "mtcars")) temp_file <- temp_xlsx() wb$save(temp_file) wb <- wb_load(file = temp_file) expect_equal(nrow(wb$tables), 1L) expect_equal(wb$tables$tab_name, "mtcars") expect_equal(wb$worksheets[[1]]$tableParts, "", ignore_attr = TRUE) ## rId reset expect_equal(unname(attr(wb$worksheets[[1]]$tableParts, "tableName")), "mtcars") file.remove(temp_file) ## now delete the other table wb <- wb_workbook() wb$add_worksheet("Sheet 1") wb$add_worksheet("Sheet 2") wb$add_data_table(sheet = "Sheet 1", x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) wb$add_data_table(sheet = 2, x = mtcars, table_name = "mtcars2", start_col = 3) wb$remove_tables(sheet = 1, table = "iris") wb$remove_tables(sheet = 1, table = "mtcars") expect_equal(wb$tables$tab_name, c("iris_openxlsx_deleted", "mtcars_openxlsx_deleted", "mtcars2")) temp_file <- temp_xlsx() wb_save(wb, temp_file) wb <- wb_load(file = temp_file) expect_equal(nrow(wb$tables), 1L) expect_equal(wb$tables$tab_name, "mtcars2") expect_length(wb$worksheets[[1]]$tableParts, 0) expect_equal(wb$worksheets[[2]]$tableParts, "", ignore_attr = TRUE) expect_equal(unname(attr(wb$worksheets[[2]]$tableParts, "tableName")), "mtcars2") unlink(temp_file) ## write tables back in wb$add_data_table(sheet = "Sheet 1", x = iris, table_name = "iris") wb$add_data_table(sheet = 1, x = mtcars, table_name = "mtcars", start_col = 10) expect_equal(nrow(wb$tables), 3L) expect_equal(wb$tables$tab_name, c("mtcars2", "iris", "mtcars")) expect_length(wb$worksheets[[1]]$tableParts, 2) expect_equal(wb$worksheets[[1]]$tableParts, c("", ""), ignore_attr = TRUE) expect_equal(unname(attr(wb$worksheets[[1]]$tableParts, "tableName")), c("iris", "mtcars")) expect_length(wb$worksheets[[2]]$tableParts, 1) expect_equal(wb$worksheets[[2]]$tableParts, c(""), ignore_attr = TRUE) expect_equal(unname(attr(wb$worksheets[[2]]$tableParts, "tableName")), "mtcars2") wb_save(wb, temp_file) ## Ids should get reset after load wb <- wb_load(file = temp_file) expect_equal(nrow(wb$tables), 3L) expect_equal(wb$tables$tab_name, c("iris", "mtcars", "mtcars2")) expect_length(wb$worksheets[[1]]$tableParts, 2) expect_equal(wb$worksheets[[1]]$tableParts, c("", ""), ignore_attr = TRUE) expect_equal(unname(attr(wb$worksheets[[1]]$tableParts, "tableName")), c("iris", "mtcars")) expect_length(wb$worksheets[[2]]$tableParts, 1) expect_equal(wb$worksheets[[2]]$tableParts, c(""), ignore_attr = TRUE) expect_equal(unname(attr(wb$worksheets[[2]]$tableParts, "tableName")), "mtcars2") unlink(temp_file) })