tests/testthat/test-f7Panel.R

library(shinytest2)

test_that("panel works", {
  skip_on_cran()
  shiny_app_path <-
    system.file("examples/panel/app.R", package = "shinyMobile")
  app <- AppDriver$new(
    shiny_app_path,
    name = "panel-app"
  )

  inputs <- c("mypanel1", "mypanel2", "panelmenu")
  app$expect_values(input = inputs)
  app$click(selector = "#toggle")
  # Wait for any animation to complete
  app$wait_for_idle(1000)
  app$expect_values(input = inputs)
})

test_that("panel tag works", {
  id <- "test"
  panel <- f7Panel(id = id)
  expect_s3_class(panel, "shiny.tag")

  # structure
  expect_identical(panel$attribs$class, "panel panel-left panel-reveal")
  expect_length(panel$children, 2)
  expect_identical(panel$children[[1]]$attribs$`data-for`, id)
  expect_identical(panel$children[[2]]$attribs$class, "page")

  # Config
  config <- jsonlite::fromJSON(panel$children[[1]]$children[[1]])
  expect_length(config, 1)
  expect_identical(config[["effect"]], "reveal")
})

test_that("panel menu works", {
  panel_menu <- f7PanelMenu(id = "menu")
  expect_s3_class(panel_menu, "shiny.tag")

  # structure
  expect_identical(panel_menu$attribs$class, "list chevron-center links-list")
  expect_identical(
    htmltools::tagQuery(panel_menu)$
      find(".panel-menu")$
      selectedTags()[[1]]$attribs$id, "menu")
})

test_that("panel item works", {
  panel_item <- f7PanelItem("Title", "tab1", active = TRUE)
  expect_s3_class(panel_item, "shiny.tag")
  expect_identical(panel_item$name, "li")
  expect_identical(panel_item$children[[1]]$attribs$`data-tab`, "#tab1")
  expect_identical(
    panel_item$children[[1]]$attribs$class,
    "tab-link tab-link-active"
  )
})
RinteRface/shinyMobile documentation built on Jan. 27, 2025, 5:40 p.m.