tests/testthat/test-x-spreadsheet.R

test_that("spreadSheet works with different data options", {
    test <- spreadsheet(data = data.frame(a = 1, b = 1))
    expect_s3_class(test, "xspreadsheet")

    list1Entry <- list("Sheet" = data.frame(
        a = 1, b = 2
    ))
    test <- spreadsheet(data = data.frame(a = 1, b = 1),
    options = list(
        view = list(
            height = "500px",
            width = "500px"
        )
    ))
    expect_s3_class(test, "xspreadsheet")

    list2Entries <- list(
        "Sheet 1" = data.frame(a = 1, b = 1),
        "Sheet 2" = data.frame(c = 3, d = 4)
    )
    test <- spreadsheet(data = list2Entries)
    expect_s3_class(test, "xspreadsheet")

})

test_that("processInputData works", {
    data <- data.frame(a = 1, b = 1)
    expect_no_error(processInputData(data))

    data <- list("Sheet" = data.frame(
        a = 1, b = 2
    ))
    expect_no_error(processInputData(data))

    data <- list(
        "Sheet 1" = data.frame(a = 1, b = 1),
        "Sheet 2" = data.frame(c = 3, d = 4)
    )
    expect_no_error(processInputData(data))

    errorEntry <- "invalid"
    expect_error(processInputData(errorEntry))
})

test_that("dfToSpreadsheet performance is acceptable", {
    df <- data.frame(matrix(rnorm(2500), nrow = 50, ncol = 50))
    result <- system.time({
        dfToSpreadsheet(df)
    })
    expect_true(result[["elapsed"]] < 10)

    df <- data.frame(matrix(rnorm(2500), nrow = 500, ncol = 500))
    result <- system.time({
        dfToSpreadsheet(df
    )})
    expect_true(result[["elapsed"]] < 10)
})

test_that("spreadsheetListToDf works", {
    # multiple sheets
    jsonList <- jsonlite::fromJSON(
        txt = system.file(
            "/testdata/multiple-sheets.json",
            package = "xSpreadsheet"
        ),
        simplifyVector = FALSE
    )

    result <- spreadsheetListToDf(jsonList)

    # expect multiple list entries with different names
    expect_true(length(result) > 1)
    expect_true(length(unique(names(result))) > 1)
    # expect data.frames
    expect_true(all(sapply(result, is.data.frame)))

    # nolint start
    # # single sheet
    # jsonList <- jsonlite::fromJSON(
    #     txt = system.file(
    #         "/testdata/single-sheet.json",
    #         package = "spreadSheet"
    #     ),
    #     simplifyVector = FALSE
    # )
    # result <- spreadsheetListToDf(jsonList)

    # expect single list entry
    # expect_true(length(result) == 1)
    # expect_true(length(unique(names(result))) == 1)
    # # expect a data.frame
    # expect_true(all(sapply(result, is.data.frame)))
    # nolint end

})
MichaelHogers/RXSpreadsheet documentation built on July 18, 2023, 7:41 p.m.