# ================================================================= # Tests for value_box_render.R # ================================================================= test_that("render_value_box produces HTML output", { # Capture cat() output output <- capture.output({ result <- render_value_box("Users", "1,234") }) html <- paste(output, collapse = "\n") # Should contain raw HTML markers expect_true(grepl("```\\{=html\\}", html)) expect_true(grepl("```$", html)) # Should contain the value box content expect_true(grepl("Users", html)) expect_true(grepl("1,234", html)) }) test_that("render_value_box uses default background color", { output <- capture.output({ render_value_box("Test", "Value") }) html <- paste(output, collapse = "\n") # Default color is #2c3e50 expect_true(grepl("#2c3e50", html)) }) test_that("render_value_box accepts custom background color", { output <- capture.output({ render_value_box("Test", "Value", bg_color = "#ff0000") }) html <- paste(output, collapse = "\n") expect_true(grepl("#ff0000", html)) }) test_that("render_value_box includes logo_url when provided", { output <- capture.output({ render_value_box("Test", "Value", logo_url = "https://example.com/logo.png") }) html <- paste(output, collapse = "\n") expect_true(grepl(" 0) }) test_that("render_value_box has correct CSS styling", { output <- capture.output({ render_value_box("Test", "Value") }) html <- paste(output, collapse = "\n") # Key CSS properties expect_true(grepl("border-radius: 12px", html)) expect_true(grepl("padding: 2rem", html)) expect_true(grepl("color: white", html)) expect_true(grepl("display: flex", html)) expect_true(grepl("box-shadow", html)) }) # --- render_value_box_row() --- test_that("render_value_box_row produces HTML output", { boxes <- list( list(title = "Users", value = "100", bg_color = "#3498db"), list(title = "Sales", value = "$500", bg_color = "#2ecc71") ) output <- capture.output({ render_value_box_row(boxes) }) html <- paste(output, collapse = "\n") # Should contain raw HTML markers expect_true(grepl("```\\{=html\\}", html)) # Should contain both boxes expect_true(grepl("Users", html)) expect_true(grepl("100", html)) expect_true(grepl("Sales", html)) expect_true(grepl("\\$500", html)) # Should have both colors expect_true(grepl("#3498db", html)) expect_true(grepl("#2ecc71", html)) }) test_that("render_value_box_row creates flex container", { boxes <- list( list(title = "A", value = "1", bg_color = "#333") ) output <- capture.output({ render_value_box_row(boxes) }) html <- paste(output, collapse = "\n") # Container styles expect_true(grepl("display: flex", html)) expect_true(grepl("gap: 1.5rem", html)) expect_true(grepl("flex-wrap: wrap", html)) }) test_that("render_value_box_row handles logo_url in boxes", { boxes <- list( list(title = "Test", value = "100", bg_color = "#333", logo_url = "https://example.com/icon.png") ) output <- capture.output({ render_value_box_row(boxes) }) html <- paste(output, collapse = "\n") expect_true(grepl("