tests/testthat/test-dt.R

# Apply bundles -----------------------------------------------------------

test_that("Apply bundle configuration", {
    result <- datatable2(
        mtcars,
        bundles = c("AutoFill", "Buttons")
    )

    expect_identical(result %>% class(), c("datatables", "htmlwidget"))

    skip("Minor differences in function envs in nested list layers")

    expected <- structure(list(x = structure(list(filter = "none", vertical = FALSE,
        extensions = list("AutoFill", "Buttons"), data = structure(list(
            " " = c("Mazda RX4", "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive",
                "Hornet Sportabout", "Valiant", "Duster 360", "Merc 240D",
                "Merc 230", "Merc 280", "Merc 280C", "Merc 450SE", "Merc 450SL",
                "Merc 450SLC", "Cadillac Fleetwood", "Lincoln Continental",
                "Chrysler Imperial", "Fiat 128", "Honda Civic", "Toyota Corolla",
                "Toyota Corona", "Dodge Challenger", "AMC Javelin", "Camaro Z28",
                "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2", "Lotus Europa",
                "Ford Pantera L", "Ferrari Dino", "Maserati Bora", "Volvo 142E"
            ), mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4,
                22.8, 19.2, 17.8, 16.4, 17.3, 15.2, 10.4, 10.4, 14.7,
                32.4, 30.4, 33.9, 21.5, 15.5, 15.2, 13.3, 19.2, 27.3,
                26, 30.4, 15.8, 19.7, 15, 21.4), cyl = c(6, 6, 4, 6,
                    8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,
                    8, 8, 8, 4, 4, 4, 8, 6, 8, 4), disp = c(160, 160, 108,
                        258, 360, 225, 360, 146.7, 140.8, 167.6, 167.6, 275.8,
                        275.8, 275.8, 472, 460, 440, 78.7, 75.7, 71.1, 120.1,
                        318, 304, 350, 400, 79, 120.3, 95.1, 351, 145, 301, 121
                    ), hp = c(110, 110, 93, 110, 175, 105, 245, 62, 95, 123,
                        123, 180, 180, 180, 205, 215, 230, 66, 52, 65, 97, 150,
                        150, 245, 175, 66, 91, 113, 264, 175, 335, 109), drat = c(3.9,
                            3.9, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92,
                            3.92, 3.07, 3.07, 3.07, 2.93, 3, 3.23, 4.08, 4.93, 4.22,
                            3.7, 2.76, 3.15, 3.73, 3.08, 4.08, 4.43, 3.77, 4.22,
                            3.62, 3.54, 4.11), wt = c(2.62, 2.875, 2.32, 3.215, 3.44,
                                3.46, 3.57, 3.19, 3.15, 3.44, 3.44, 4.07, 3.73, 3.78,
                                5.25, 5.424, 5.345, 2.2, 1.615, 1.835, 2.465, 3.52, 3.435,
                                3.84, 3.845, 1.935, 2.14, 1.513, 3.17, 2.77, 3.57, 2.78
                            ), qsec = c(16.46, 17.02, 18.61, 19.44, 17.02, 20.22,
                                15.84, 20, 22.9, 18.3, 18.9, 17.4, 17.6, 18, 17.98, 17.82,
                                17.42, 19.47, 18.52, 19.9, 20.01, 16.87, 17.3, 15.41,
                                17.05, 18.9, 16.7, 16.9, 14.5, 15.5, 14.6, 18.6), vs = c(0,
                                    0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
                                    1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1), am = c(1, 1,
                                        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
                                        0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1), gear = c(4, 4, 4,
                                            3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3,
                                            3, 3, 3, 3, 4, 5, 5, 5, 5, 5, 4), carb = c(4, 4, 1, 1,
                                                2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,
                                                2, 4, 2, 1, 2, 2, 4, 6, 8, 2)), class = "data.frame", row.names = c("Mazda RX4",
                                                    "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout",
                                                    "Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280",
                                                    "Merc 280C", "Merc 450SE", "Merc 450SL", "Merc 450SLC", "Cadillac Fleetwood",
                                                    "Lincoln Continental", "Chrysler Imperial", "Fiat 128", "Honda Civic",
                                                    "Toyota Corolla", "Toyota Corona", "Dodge Challenger", "AMC Javelin",
                                                    "Camaro Z28", "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2",
                                                    "Lotus Europa", "Ford Pantera L", "Ferrari Dino", "Maserati Bora",
                                                    "Volvo 142E")), container = "<table class=\"display\">\n  <thead>\n    <tr>\n      <th> </th>\n      <th>mpg</th>\n      <th>cyl</th>\n      <th>disp</th>\n      <th>hp</th>\n      <th>drat</th>\n      <th>wt</th>\n      <th>qsec</th>\n      <th>vs</th>\n      <th>am</th>\n      <th>gear</th>\n      <th>carb</th>\n    </tr>\n  </thead>\n</table>",
        options = structure(list(autoFill = TRUE, dom = "Blftipr",
            buttons = list("colvis", "copy", "csv", "excel", "pdf",
                "print"), columnDefs = list(list(className = "dt-right",
                    targets = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)),
                    list(orderable = FALSE, targets = 0)), order = list(),
            autoWidth = FALSE, orderClasses = FALSE), escapeIdx = "true")), colnames = c(" ",
                "mpg", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am",
                "gear", "carb"), rownames = TRUE), width = NULL, height = NULL,
        sizingPolicy = list(defaultWidth = NULL, defaultHeight = NULL,
            padding = NULL, viewer = list(defaultWidth = NULL, defaultHeight = NULL,
                padding = NULL, fill = TRUE, suppress = FALSE, paneHeight = NULL),
            browser = list(defaultWidth = NULL, defaultHeight = NULL,
                padding = NULL, fill = FALSE, external = FALSE),
            knitr = list(defaultWidth = "100%", defaultHeight = "auto",
                figure = FALSE)), dependencies = list(structure(list(
                    name = "jquery", version = "3.6.0", src = list(file = "lib/3.6.0"),
                    meta = NULL, script = "jquery-3.6.0.min.js", stylesheet = NULL,
                    head = NULL, attachment = NULL, package = "jquerylib",
                    all_files = TRUE), class = "html_dependency"), structure(list(
                        name = "dt-core", version = "1.11.3", src = list(file = "/Users/jankothyson/Library/Caches/org.R-project.R/R/renv/cache/v5/R-4.1/aarch64-apple-darwin20/DT/0.22/fc53164de9ee32692eef6fdd14115381/DT/htmlwidgets/lib/datatables"),
                        meta = NULL, script = "js/jquery.dataTables.min.js",
                        stylesheet = c("css/jquery.dataTables.min.css", "css/jquery.dataTables.extra.css"
                        ), head = NULL, attachment = NULL, package = NULL, all_files = FALSE), class = "html_dependency"),
                    structure(list(name = "dt-ext-autofill", version = "1.11.3",
                        src = list(file = "/Users/jankothyson/Library/Caches/org.R-project.R/R/renv/cache/v5/R-4.1/aarch64-apple-darwin20/DT/0.22/fc53164de9ee32692eef6fdd14115381/DT/htmlwidgets/lib/datatables-extensions/AutoFill"),
                        meta = NULL, script = "js/dataTables.autoFill.min.js",
                        stylesheet = "css/autoFill.dataTables.min.css", head = NULL,
                        attachment = NULL, package = NULL, all_files = FALSE), class = "html_dependency"),
                    structure(list(name = "jszip", version = "1.11.3", src = list(
                        file = "/Users/jankothyson/Library/Caches/org.R-project.R/R/renv/cache/v5/R-4.1/aarch64-apple-darwin20/DT/0.22/fc53164de9ee32692eef6fdd14115381/DT/htmlwidgets/lib/datatables-extensions/Buttons/js"),
                        meta = NULL, script = "jszip.min.js", stylesheet = NULL,
                        head = NULL, attachment = NULL, package = NULL, all_files = FALSE), class = "html_dependency"),
                    structure(list(name = "pdfmake", version = "1.11.3",
                        src = list(file = "/Users/jankothyson/Library/Caches/org.R-project.R/R/renv/cache/v5/R-4.1/aarch64-apple-darwin20/DT/0.22/fc53164de9ee32692eef6fdd14115381/DT/htmlwidgets/lib/datatables-extensions/Buttons/js"),
                        meta = NULL, script = c("pdfmake.js", "vfs_fonts.js"
                        ), stylesheet = NULL, head = NULL, attachment = NULL,
                        package = NULL, all_files = FALSE), class = "html_dependency"),
                    structure(list(name = "dt-ext-buttons", version = "1.11.3",
                        src = list(file = "/Users/jankothyson/Library/Caches/org.R-project.R/R/renv/cache/v5/R-4.1/aarch64-apple-darwin20/DT/0.22/fc53164de9ee32692eef6fdd14115381/DT/htmlwidgets/lib/datatables-extensions/Buttons"),
                        meta = NULL, script = c("js/dataTables.buttons.min.js",
                            "js/buttons.html5.min.js", "js/buttons.colVis.min.js",
                            "js/buttons.print.min.js"), stylesheet = "css/buttons.dataTables.min.css",
                        head = NULL, attachment = NULL, package = NULL, all_files = FALSE), class = "html_dependency"),
                    structure(list(name = "jquery", version = "3.5.1", src = list(
                        file = "lib/jquery"), meta = NULL, script = "jquery.min.js",
                        stylesheet = NULL, head = NULL, attachment = NULL,
                        package = "crosstalk", all_files = TRUE), class = "html_dependency"),
                    structure(list(name = "crosstalk", version = "1.2.0",
                        src = list(file = "www"), meta = NULL, script = "js/crosstalk.min.js",
                        stylesheet = "css/crosstalk.min.css", head = NULL,
                        attachment = NULL, package = "crosstalk", all_files = TRUE), class = "html_dependency")),
        elementId = NULL, preRenderHook = function (instance)
        {
            data = instance[["x"]][["data"]]
            if (object.size(data) > 1500000 && getOption("DT.warn.size",
                TRUE))
                warning("It seems your data is too big for client-side DataTables. You may ",
                    "consider server-side processing: https://rstudio.github.io/DT/server.html")
            data = escapeData(data, escape, colnames)
            data = unname(data)
            instance$x$data = data
            instance
        }, jsHooks = list()), class = c("datatables", "htmlwidget"
        ), package = "DT")

    expect_equal(result, expected, ignore_attr = TRUE)
})

test_that("Apply bundle: additional arguments", {
    skip("Interactive only")
    result <- mtcars %>% datatable2(
        rownames = FALSE,
        height = 300
    )
    result
})

test_that("Apply bundle: logging", {
    skip("Interactive only")

    logger::log_threshold(logger::TRACE)
    expect_message(mtcars %>% datatable2(.verbose = TRUE), regexp = "Processed")
})
rappster/dti documentation built on June 3, 2022, 5:10 p.m.