tests/testthat/test-f7Fabs.R

library(shinytest2)

test_that("fabs works as expected", {
  # Don't run these tests on the CRAN build servers
  skip_on_cran()
  shiny_app_path <-
    system.file("examples/fabs/app.R", package = "shinyMobile")
  app <- AppDriver$new(
    shiny_app_path,
    name = "fabs-app"
  )
  app$expect_values(input = c("fabs", "fabsMorph", "1"), output = "res")
  app$click(selector = "#toggle")
  # Animation/transition takes a bit of time
  app$wait_for_idle(1000)
  app$expect_values(input = c("fabs", "fabsMorph", "1"), output = "res")

  app$click(selector = "#toggle")
  app$wait_for_idle(1000)
  app$expect_values(input = c("fabs", "fabsMorph", "1"), output = "res")

  app$click(selector = "#fabsMorph")
  app$wait_for_idle(1000)
  app$expect_values(input = c("fabs", "fabsMorph", "1"), output = "res")
})

test_that("fabs close works", {
  el <- shiny::div() |> f7FabClose()
  expect_s3_class(el, "shiny.tag")
  expect_identical(
    el$attribs$class,
    "fab-close"
  )
})

test_that("f7FabMorphTarget works", {
  el <- shiny::div() |> f7FabMorphTarget()
  expect_s3_class(el, "shiny.tag")
  expect_identical(
    el$attribs$class,
    "fab-morph-target"
  )
})

test_that("f7Fab works", {
  el <- f7Fab("id", "Label", flag = "plop")
  expect_s3_class(el, "shiny.tag")
  expect_true(grepl("f7-action-button", el$attribs$class))
  expect_identical(el$attribs$id, "id")
})

test_that("f7Fabs tag works", {
  el <- f7Fabs(
    position = "center-center",
    id = "fabs",
    morphTarget = ".toolbar",
    lapply(1:3, function(i) f7Fab(inputId = i, label = i))
  )
  expect_s3_class(el, "shiny.tag")
  expect_identical(
    el$attribs$`data-morph-to`,
    ".toolbar"
  )

  btns <- el$children[[2]]
  expect_identical(
    btns$attribs$class,
    "fab-buttons fab-buttons-left"
  )
  expect_length(btns$children[[1]], 3)
})
RinteRface/shinyMobile documentation built on Jan. 27, 2025, 5:40 p.m.