tests/testthat/test-f7Searchbar.R

library(shinytest2)

test_that("searchbar tag works", {
  searchbar <- f7Searchbar(
    id = "test",
    options = list(customSearch = TRUE)
  )

  config <- searchbar[[2]]
  search_content <- searchbar[[1]]

  expect_s3_class(searchbar, "shiny.tag.list")
  expect_identical(config$attribs$`data-for`, "test")
  expect_identical(
    jsonlite::fromJSON(config$children[[1]]),
    list(customSearch = TRUE)
  )

  expect_identical(search_content$name, "form")
  expect_identical(search_content$attribs$class, "searchbar")
  expect_identical(search_content$attribs$id, "test")

  # Expandable
  searchbar <- f7Searchbar(
    id = "test",
    expandable = TRUE
  )

  expect_true(grepl("searchbar-expandable", searchbar[[1]]$attribs$class))

  # Inline
  searchbar <- f7Searchbar(
    id = "test",
    inline = TRUE
  )

  expect_true(grepl("searchbar-inline", searchbar[[1]]$attribs$class))
})

test_that("searchbar trigger works", {
  trigger <- f7SearchbarTrigger("test")
  expect_identical(trigger$name, "a")
  expect_identical(trigger$attribs$`data-searchbar`, "#test")
  expect_true(grepl("searchbar-enable", trigger$attribs$class))
})

test_that("hide on search works", {
  res <- f7HideOnSearch(shiny::tags$div())
  expect_true(grepl("searchbar-hide-on-search", res$attribs$class))
})

test_that("hide on enable works", {
  res <- f7HideOnEnable(shiny::tags$div())
  expect_true(grepl("searchbar-hide-on-enable", res$attribs$class))
})

test_that("Not found works", {
  res <- f7NotFound(shiny::tags$div())
  expect_true(grepl("searchbar-not-found", res$attribs$class))
})

test_that("Found works", {
  res <- f7Found(shiny::tags$div())
  expect_true(grepl("searchbar-found", res$attribs$class))
})

test_that("Search ignore works", {
  res <- f7SearchIgnore(shiny::tags$div())
  expect_true(grepl("searchbar-ignore", res$attribs$class))
})

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

  # Open
  app$click(selector = "[data-searchbar=\"#search1\"]")
  app$run_js("app.searchbar.search('.searchbar', 'mobile')")
  app$wait_for_idle(2000)
  app$expect_html(selector = ".searchbar-found")
  app$click(selector = ".input-clear-button")
  app$wait_for_idle(2000)
  app$expect_html(selector = ".searchbar-found")
})
RinteRface/shinyMobile documentation built on Jan. 27, 2025, 5:40 p.m.