diff --git a/.Rbuildignore b/.Rbuildignore index aee6c7f..5c67aa1 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -7,3 +7,4 @@ ^_pkgdown\.yml$ ^docs$ ^pkgdown$ +^codecov\.yml$ diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a9c5d42..484d788 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: config: - - {os: macOS-latest, r: '4.0.1' } + - {os: macOS-latest, r: '4.0.1', coveralls: "true" } - {os: windows-latest, r: '4.0.1', } - {os: ubuntu-18.04, r: '4.0.1', rspm: "https://packagemanager.rstudio.com/all/__linux__/bionic/latest"} @@ -41,14 +41,30 @@ jobs: - uses: r-lib/actions/setup-r-dependencies@v2 with: cache-version: 2 - extra-packages: any::rcmdcheck - needs: check + extra-packages: any::rcmdcheck, any::covr - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true - # - name: Show testthat output - # if: always() - # run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true - # shell: bash \ No newline at end of file + - name: Show testthat output + if: always() + run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + + - name: Upload check results + if: failure() + uses: actions/upload-artifact@main + with: + name: ${{ runner.os }}-r${{ matrix.config.r }}-results + path: check + + - name: Test coverage + if: matrix.config.coveralls == 'true' + continue-on-error: true + run: | + covr::coveralls( + function_exclusions = "\\.onLoad", + repo_token = "${{ secrets.COVERALLS_TOKEN }}", + service_name='drone') + shell: Rscript {0} \ No newline at end of file diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 1e2b883..eb2777e 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -14,6 +14,7 @@ jobs: runs-on: macOS-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/pr-ci.yaml b/.github/workflows/style-pr.yaml similarity index 66% rename from .github/workflows/pr-ci.yaml rename to .github/workflows/style-pr.yaml index aae2af5..bc60a51 100644 --- a/.github/workflows/pr-ci.yaml +++ b/.github/workflows/style-pr.yaml @@ -27,25 +27,33 @@ jobs: - name: Install dependencies run: Rscript -e 'install.packages("styler")' - - name: save R.cache location - id: save-r-cache-location + - name: Enable styler cache + run: styler::cache_activate() + shell: Rscript {0} + + - name: Determine cache location + id: styler-location run: | - cat("##[set-output name=r-cache-location;]", R.cache::getCacheRootPath(), "\n", sep = "") + cat( + "##[set-output name=location;]", + styler::cache_info(format = "tabular")$location, + "\n", + sep = "" + ) shell: Rscript {0} - - name: R.cache cache + - name: Cache styler uses: actions/cache@v2 - env: - cache-name: r-cache with: - path: ${{ r-cache-location }} - key: ${{ runner.os }}-${{ env.cache-name }}-${{ github.sha }} + path: ${{ steps.styler-location.outputs.location }} + key: ${{ runner.os }}-styler-${{ github.sha }} restore-keys: | - ${{ runner.os }}-${{ env.cache-name }}- + ${{ runner.os }}-styler- ${{ runner.os }}- - name: Style - run: Rscript -e 'styler::style_pkg()' + run: styler::style_pkg(filetype = c(".R")) + shell: Rscript {0} - name: commit run: | diff --git a/DESCRIPTION b/DESCRIPTION index 3d430b7..ba4e55d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -34,8 +34,12 @@ Imports: purrr Remotes: Sage-Bionetworks/sagethemes Suggests: + covr, knitr, - rmarkdown + rmarkdown, + testthat (>= 3.0.0) VignetteBuilder: knitr -URL: https://github.com/Sage-Bionetworks/dcamodules +URL: https://sage-bionetworks.github.io/dcamodules/, + https://github.com/Sage-Bionetworks/dcamodules BugReports: https://github.com/Sage-Bionetworks/dcamodules/issues +Config/testthat/edition: 3 diff --git a/NAMESPACE b/NAMESPACE index 7e89b72..f30231a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -32,7 +32,6 @@ importFrom(sass,sass) importFrom(sass,sass_file) importFrom(sass,sass_layer) importFrom(sass,sass_options) -importFrom(shiny,selectInput) importFrom(shinydashboard,updateTabItems) importFrom(tools,file_ext) importFrom(utils,packageVersion) diff --git a/R/dca_footer.R b/R/dca_footer.R index 55db9c3..2ff3995 100644 --- a/R/dca_footer.R +++ b/R/dca_footer.R @@ -18,6 +18,8 @@ #' @rdname dcaFooter #' @export dcaFooter <- function(message, media = NULL, height = "100px", ...) { + + height <- validateCssUnit(height) tags$div( class = "dca-footer-placeholder", style = sprintf("height: %s;", height), diff --git a/R/utils.R b/R/utils.R index 5607182..9c68176 100644 --- a/R/utils.R +++ b/R/utils.R @@ -35,7 +35,7 @@ get_tab_names <- function(.tab) { #' widgetUI <- function(id) { #' ns <- NS(id) #' items <- c("chicken", "egg") -#' var_to_server(ns("items"), tab_names) +#' var_to_server(ns("items"), items) #' } #' #' widgetServer <- function() { @@ -50,9 +50,8 @@ get_tab_names <- function(.tab) { #' } #' @rdname var_to_server #' @export -#' @importFrom shiny selectInput var_to_server <- function(id, values) { - out <- shiny::selectInput(id, + out <- selectInput(id, "", choices = values, selected = values, @@ -82,9 +81,9 @@ insert_attribute <- function(.tag, pos = 1, ...) { if (pos == 0 || length(childrens) == 0) { .tag <- htmltools::tagAppendAttributes(.tag, ...) } else { - .tag$children[[pos]] <- + .tag$children[[1]][[pos]] <- htmltools::tagAppendAttributes( - .tag$children[[pos]], + .tag$children[[1]][[pos]], ... ) } diff --git a/README.md b/README.md index 22a9f32..9bf3f75 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) [![R-CMD-check](https://github.com/Sage-Bionetworks/dcamodules/actions/workflows/R-CMD-check.yaml/badge.svg?branch=main)](https://github.com/Sage-Bionetworks/dcamodules/actions/workflows/R-CMD-check.yaml) - +[![Coveralls test coverage](https://coveralls.io/repos/github/Sage-Bionetworks/dcamodules/badge.svg)](https://coveralls.io/r/Sage-Bionetworks/dcamodules?branch=feature-add-tests) The goal of dcamodules is to collect essential modules used in the data diff --git a/inst/styling/css/main.min.css b/inst/styling/css/main.min.css index d5a4695..123df6c 100644 --- a/inst/styling/css/main.min.css +++ b/inst/styling/css/main.min.css @@ -1,3 +1,3 @@ .dca-remove{display:none}.content-wrapper{position:relative}.dca-footer{position:absolute;left:0;bottom:0;width:100%;padding:15px 0;text-align:center}.dca-footer>*{margin-bottom:8px}.dca-footer .dca-footer-media{display:inline-flex;align-items:center}.dca-footer .dca-footer-media>*{margin:0 8px}.dca-shiny-btn{min-width:36px;white-space:nowrap;text-decoration:none;text-align:center;line-height:36px;margin:8px 8px 8px 0;padding:0 16px;border-radius:4px;border:none;outline:none !important;cursor:pointer;box-shadow:0 3px 1px -2px #0003, 0 2px 2px #00000024, 0 1px 5px #0000001f;position:relative;background:#27022d !important;color:#fff !important;background-image:linear-gradient(270deg, #8e9ac2, #42579a) !important;background-size:400% 400% !important;overflow:hidden;animation:TransitioningBackground 10s ease infinite;transition:500ms !important;filter:none !important}.dca-shiny-btn:hover,.dca-shiny-btn:focus{color:#fff;background-image:linear-gradient(to left, #2d8fe5, #d155b8) !important;transform:scale(1.05)}.dca-shiny-btn::before{content:'';display:block;position:absolute;background:rgba(255,255,255,0.5);width:60px;height:100%;top:0;filter:blur(30px) !important;transform:translateX(-100px) skewX(-15deg)}.dca-shiny-btn::after{content:'';display:block;position:absolute;background:rgba(255,255,255,0.2);width:30px;height:100%;top:0;filter:blur(5px) !important;transform:translateX(-100px) skewX(-15deg)}.dca-shiny-btn::before,.dca-shiny-btn::after{transform:translateX(300px) skewX(-15deg);transition:0.7s}@keyframes TransitioningBackground{0%{background-position:1% 0%}50%{background-position:99% 100%}100%{background-position:1% 0%}}.dca-left-btn,.dca-right-btn{min-width:36px;white-space:nowrap;text-decoration:none;text-align:center;line-height:36px;margin:8px 8px 8px 0;padding:0 16px;border-radius:4px;border:none;outline:none !important;cursor:pointer;box-shadow:0 3px 1px -2px #0003, 0 2px 2px #00000024, 0 1px 5px #0000001f;background:#fff !important;color:#000 !important;display:inline-flex !important;justify-content:center;align-items:center;height:40px !important;padding:5px;border-radius:10px}.dca-left-btn:hover,.dca-left-btn:focus,.dca-right-btn:hover,.dca-right-btn:focus{background:#fff}.dca-left-btn .fa,.dca-right-btn .fa{margin:1.5px;font-size:20px}.dca-left-btn:hover .fa{animation:dca-move-left 2s infinite}.dca-left-btn:hover .fa:nth-child(2){animation-delay:-0.2s}.dca-left-btn:hover .fa:nth-child(1){animation-delay:-0.4s}.dca-right-btn:hover .fa{animation:dca-move-right 2s infinite}.dca-right-btn:hover .fa:nth-child(2){animation-delay:-0.2s}.dca-right-btn:hover .fa:nth-child(3){animation-delay:-0.4s}@keyframes dca-move-left{0%{opacity:0;transform:translateX(10px)}50%{opacity:1}100%{opacity:0;transform:translateX(-10px)}}@keyframes dca-move-right{0%{opacity:0;transform:translateX(-10px)}50%{opacity:1}100%{opacity:0;transform:translateX(10px)}}.dca-palette-btn{display:inline-flex;justify-content:center;align-items:center;background:transparent !important;border:none !important;box-shadow:none !important;width:14px;height:14px;min-width:0 !important;padding:0 !important;margin:4px !important}.dca-palette-btn .fa-circle:hover{border-bottom:2px solid orange}.waiter-overlay.waiter-local{left:0 !important}.waiter-overlay-content{display:flex;justify-content:center;align-items:center;flex-direction:column;width:auto !important}.dca-logo-spin{display:inline-block;margin:auto;width:3.5em;height:3.5em;-webkit-animation:dca-spin 2s infinite linear;animation:dca-spin 2s infinite linear}@-webkit-keyframes dca-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes dca-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}} -/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAic3RkaW4uY3NzIiwKCSJzb3VyY2VzIjogWwoJCSJzdGRpbiIsCgkJIi4uL3N0eWxpbmcvc2Nzcy9tYWluLnNjc3MiLAoJCSIuLi9zdHlsaW5nL3Njc3MvYmFzZS9fbG9hZC5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2Jhc2UvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2Jhc2UvX2NsYXNzZXMuc2NzcyIsCgkJIi4uL3N0eWxpbmcvc2Nzcy9taXhpbnMvX2J1dHRvbl9taXhpbi5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL21peGlucy9fYm94X21peGluLnNjc3MiLAoJCSIuLi9zdHlsaW5nL3Njc3Mvc2VjdGlvbnMvX2xvYWQuc2NzcyIsCgkJIi4uL3N0eWxpbmcvc2Nzcy9zZWN0aW9ucy9fZm9vdGVyLnNjc3MiLAoJCSIuLi9zdHlsaW5nL3Njc3MvbGlicy9fbG9hZC5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2xpYnMvYm94ZXMvX2xvYWQuc2NzcyIsCgkJIi4uL3N0eWxpbmcvc2Nzcy9saWJzL2J1dHRvbnMvX2xvYWQuc2NzcyIsCgkJIi4uL3N0eWxpbmcvc2Nzcy9saWJzL2J1dHRvbnMvX3NoaW55X2J1dHRvbi5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2xpYnMvYnV0dG9ucy9fYXJyb3dfYnV0dG9uLnNjc3MiLAoJCSIuLi9zdHlsaW5nL3Njc3MvbGlicy9idXR0b25zL19wYWxldHRlX2J1dHRvbi5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2xpYnMvd2FpdGVycy9fbG9hZC5zY3NzIiwKCQkiLi4vc3R5bGluZy9zY3NzL2xpYnMvd2FpdGVycy9fd2FpdGVyLnNjc3MiLAoJCSIuLi9zdHlsaW5nL3Njc3MvbGlicy93YWl0ZXJzL19zcGlubmVyLnNjc3MiCgldLAoJIm5hbWVzIjogW10sCgkibWFwcGluZ3MiOiAiQUlDQSxBQUFBLFdBQVcsQUFBQyxDQUNWLE9BQU8sQ0FBRSxJQUFJLENBQ2QsQUlIRCxBQUFB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 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAic3RkaW4uY3NzIiwKCSJzb3VyY2VzIjogWwoJCSJzdGRpbiIsCgkJImluc3Qvc3R5bGluZy9zY3NzL21haW4uc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL2Jhc2UvX2xvYWQuc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL2Jhc2UvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvYmFzZS9fY2xhc3Nlcy5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbWl4aW5zL19idXR0b25fbWl4aW4uc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL21peGlucy9fYm94X21peGluLnNjc3MiLAoJCSJpbnN0L3N0eWxpbmcvc2Nzcy9zZWN0aW9ucy9fbG9hZC5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3Mvc2VjdGlvbnMvX2Zvb3Rlci5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbGlicy9fbG9hZC5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbGlicy9ib3hlcy9fbG9hZC5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbGlicy9idXR0b25zL19sb2FkLnNjc3MiLAoJCSJpbnN0L3N0eWxpbmcvc2Nzcy9saWJzL2J1dHRvbnMvX3NoaW55X2J1dHRvbi5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbGlicy9idXR0b25zL19hcnJvd19idXR0b24uc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL2xpYnMvYnV0dG9ucy9fcGFsZXR0ZV9idXR0b24uc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL2xpYnMvd2FpdGVycy9fbG9hZC5zY3NzIiwKCQkiaW5zdC9zdHlsaW5nL3Njc3MvbGlicy93YWl0ZXJzL193YWl0ZXIuc2NzcyIsCgkJImluc3Qvc3R5bGluZy9zY3NzL2xpYnMvd2FpdGVycy9fc3Bpbm5lci5zY3NzIgoJXSwKCSJuYW1lcyI6IFtdLAoJIm1hcHBpbmdzIjogIkFJQ0EsQUFBQSxXQUFXLEFBQUMs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 */ \ No newline at end of file diff --git a/man/use_dca_Waiter.Rd b/man/use_dca_waiter.Rd similarity index 100% rename from man/use_dca_Waiter.Rd rename to man/use_dca_waiter.Rd diff --git a/man/var_to_server.Rd b/man/var_to_server.Rd index 19d0f44..2d96fc1 100644 --- a/man/var_to_server.Rd +++ b/man/var_to_server.Rd @@ -22,7 +22,7 @@ Use this trick to send values from ui to server in module. widgetUI <- function(id) { ns <- NS(id) items <- c("chicken", "egg") - var_to_server(ns("items"), tab_names) + var_to_server(ns("items"), items) } widgetServer <- function() { diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 0000000..9180674 --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(dcamodules) + +test_check("dcamodules") diff --git a/tests/testthat/test-dca_buttons.R b/tests/testthat/test-dca_buttons.R new file mode 100644 index 0000000..db7c098 --- /dev/null +++ b/tests/testthat/test-dca_buttons.R @@ -0,0 +1,51 @@ +test_that("shinyButton works", { + btn <- shinyButton( + "test-id", "test-button", + style = "color: red;" + ) + + expect_identical(btn[[1]]$attribs$id, "test-id") + expect_identical(btn[[1]]$attribs$class, "btn btn-default action-button dca-shiny-btn") + expect_identical(btn[[1]]$attribs$style, "color: red;") + expect_identical(btn[[2]]$stylesheet, "main.min.css") +}) + +test_that("arrowButton works", { + btn <- arrowButton( + "test-id", + style = "color: red;" + ) + expect_identical(btn[[1]]$attribs$id, "test-id") + expect_identical( + purrr::map_chr(btn[[1]]$children[[1]][[1]], ~ .x$attribs$class), + rep("fa fa-angle-left", 3) + ) + expect_identical(btn[[1]]$attribs$class, "btn btn-default action-button dca-left-btn") + expect_identical(btn[[1]]$attribs$style, "color: red;") + expect_identical(btn[[2]]$stylesheet, "main.min.css") +}) + +test_that("mediaButton works", { + btn <- mediaButton( + "google", + style = "color: red;" + ) + + expect_true(grepl("fa-google", btn[[1]]$children[[1]]$attribs$class)) + expect_true(is.null(btn[[1]]$attribs$link)) + expect_identical(btn[[1]]$attribs$class, "dca-icon-btn") + expect_identical(btn[[1]]$attribs$style, "color: red;") + expect_identical(btn[[2]]$stylesheet, "main.min.css") +}) + +test_that("paletteButton works", { + btn <- paletteButton( + "test-id", "red", + style = "color: red;" + ) + expect_identical(btn[[1]]$attribs$id, "test-id") + expect_identical(btn[[1]]$attribs$class, "action-button dca-palette-btn") + expect_identical(btn[[1]]$children[[1]]$attribs$style, "color: red;") + expect_identical(btn[[1]]$attribs$style, "color: red;") + expect_identical(btn[[2]]$stylesheet, "main.min.css") +}) diff --git a/tests/testthat/test-dca_footer.R b/tests/testthat/test-dca_footer.R new file mode 100644 index 0000000..0cbd0c0 --- /dev/null +++ b/tests/testthat/test-dca_footer.R @@ -0,0 +1,7 @@ +test_that("dcaFooter works", { + footer <- dcaFooter("default footer", height = "200px") + expect_identical(footer$attribs$class, "dca-footer-placeholder") + expect_identical(footer$attribs$style, "height: 200px;") + expect_identical(footer$children[[1]]$attribs$class, "dca-footer") + expect_identical(footer$children[[1]]$attribs$style, "max-height: 200px;") +}) diff --git a/tests/testthat/test-dca_waiters.R b/tests/testthat/test-dca_waiters.R new file mode 100644 index 0000000..76614a6 --- /dev/null +++ b/tests/testthat/test-dca_waiters.R @@ -0,0 +1,58 @@ +test_that("use_dca_waiter works", { + deps <- use_dca_waiter() + expect_length(deps, 2) + expect_identical(deps[[2]]$stylesheet, "main.min.css") +}) + +test_that("waiter works", { + library(shiny) + library(shinydashboard) + library(dcamodules) + + ui <- dashboardPage( + dashboardHeader(), + dashboardSidebar(), + dashboardBody( + use_dca_waiter(), + # landing + dca_waiter("show", is.landing = TRUE) + ) + ) + + server <- function(input, output, session) { + observeEvent(input$waiter, { + t <- 0 + # not certified + dca_waiter("update", is.landing = TRUE, is.certified = FALSE, sleep = t) + # not enought permission + dca_waiter("update", is.landing = TRUE, is.permission = FALSE, sleep = t) + # success login + dca_waiter("update", is.landing = TRUE, sleep = t) + # simple waiter screens + dca_waiter("show", sleep = t) + dca_waiter("update", sleep = t, is.stop = TRUE) + dca_waiter("hide", sleep = t) + }) + } + + testServer(server, { + # iniate all waiters in server + session$setInputs(waiter = 1) + }) +}) + +test_that("waiter warning works", { + expect_warning( + dca_waiter("show", is.landing = TRUE, is.stop = TRUE), + "'is.stop' is not used when 'is.landing' is TRUE" + ) +}) + +test_that("spin_logo works", { + svg_spinner <- spin_logo("synapse") + png_spinner <- spin_logo("htan") + expect_identical(class(svg_spinner[[1]]), "shiny.tag") + expect_identical(class(png_spinner[[1]]), "shiny.tag") + expect_identical(svg_spinner[[1]]$attribs$class, "dca-logo-spin") + expect_identical(png_spinner[[1]]$attribs$class, "dca-logo-spin") +}) diff --git a/tests/testthat/test-mod_palette_panel.R b/tests/testthat/test-mod_palette_panel.R new file mode 100644 index 0000000..8849056 --- /dev/null +++ b/tests/testthat/test-mod_palette_panel.R @@ -0,0 +1,3 @@ +test_that("multiplication works", { + expect_equal(2 * 2, 4) +}) diff --git a/tests/testthat/test-mod_switch_button.R b/tests/testthat/test-mod_switch_button.R new file mode 100644 index 0000000..8849056 --- /dev/null +++ b/tests/testthat/test-mod_switch_button.R @@ -0,0 +1,3 @@ +test_that("multiplication works", { + expect_equal(2 * 2, 4) +}) diff --git a/tests/testthat/test-set_theme.R b/tests/testthat/test-set_theme.R new file mode 100644 index 0000000..8849056 --- /dev/null +++ b/tests/testthat/test-set_theme.R @@ -0,0 +1,3 @@ +test_that("multiplication works", { + expect_equal(2 * 2, 4) +}) diff --git a/tests/testthat/test-utils.R b/tests/testthat/test-utils.R new file mode 100644 index 0000000..3ae756a --- /dev/null +++ b/tests/testthat/test-utils.R @@ -0,0 +1,42 @@ +test_that("get_tab_names works", { + tab_object <- tabItems( + tabItem(tabName = "tab1"), + tabItem(tabName = "tab2"), + tabItem(tabName = "tab3") + ) + res <- get_tab_names(tab_object) + expect_identical(res, c("tab1", "tab2", "tab3")) +}) + +test_that("var_to_server works", { + ui <- var_to_server("values", 1:3) + expect_true(grepl("dca-remove", ui$attribs$class)) + # TODO: add test on values in server +}) + +test_that("insert_attribute with single tag works", { + tag <- insert_attribute( + div(), + id = "test-id" + ) + tag2 <- insert_attribute( + tags$div(list(tags$i(), tags$i())), + id = "test-id", + pos = 2 + ) + expect_identical(tag$attribs$id, "test-id") + expect_identical(tag2$children[[1]][[2]]$attribs$id, "test-id") + expect_identical(tag2$children[[1]][[1]]$attribs$id, NULL) +}) + +test_that("drop_empty with drop = 'all' works", { + test_data <- c("real", "null", NULL, NA, " ") + res_all <- drop_empty(test_data) + res_na <- drop_empty(test_data, drop = "na") + res_null <- drop_empty(test_data, drop = "null") + res_blank <- drop_empty(test_data, drop = "blank") + expect_identical(res_all, "real") + expect_identical(res_na, c("real", "null", " ")) + expect_identical(res_null, c("real", NA, " ")) + expect_identical(res_blank, c("real", "null", NA)) +})