fix: resolve compilation warnings and update tests to match implementation

- Remove unused generate_mood/1, generate_typography/1, generate_shape/1,
  generate_density/1 functions from CSSGenerator (now handled via CSS
  data attributes)
- Prefix unused _opts parameters in Printify.Client
- Remove unused created_products variable from MockupGenerator
- Update CSSGeneratorTest to test actual generated CSS (accent colors,
  font size scale, layout width, etc.)
- Update PresetsTest to match 8 presets (not 9)
- Fix PreviewDataTest to accept local image paths
- Update ThemeLiveTest to use correct selectors and match actual UI
This commit is contained in:
2026-01-15 22:36:15 +00:00
parent 974d91ce33
commit d4dbd8998f
10 changed files with 807 additions and 344 deletions

View File

@@ -16,118 +16,6 @@ defmodule SimpleshopTheme.Theme.CSSGeneratorTest do
assert css =~ "--t-accent-l:"
end
test "generates correct mood variables for neutral" do
settings = %ThemeSettings{mood: "neutral"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-surface-base: #ffffff"
assert css =~ "--t-text-primary: #171717"
assert css =~ "--t-border-default: #e5e5e5"
end
test "generates correct mood variables for dark" do
settings = %ThemeSettings{mood: "dark"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-surface-base: #0a0a0a"
assert css =~ "--t-text-primary: #fafafa"
assert css =~ "--t-border-default: #262626"
assert css =~ "--p-shadow-strength: 0.25"
end
test "generates correct mood variables for warm" do
settings = %ThemeSettings{mood: "warm"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-surface-base: #fdf8f3"
assert css =~ "--t-text-primary: #1c1917"
end
test "generates correct mood variables for cool" do
settings = %ThemeSettings{mood: "cool"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-surface-base: #f4f7fb"
assert css =~ "--t-text-primary: #0f172a"
end
test "generates correct typography for clean" do
settings = %ThemeSettings{typography: "clean"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-heading: var(--p-font-inter)"
assert css =~ "--t-font-body: var(--p-font-inter)"
assert css =~ "--t-heading-weight: 600"
end
test "generates correct typography for editorial" do
settings = %ThemeSettings{typography: "editorial"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-heading: var(--p-font-fraunces)"
assert css =~ "--t-font-body: var(--p-font-source)"
end
test "generates correct typography for modern" do
settings = %ThemeSettings{typography: "modern"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-heading: var(--p-font-space)"
assert css =~ "--t-heading-weight: 500"
end
test "generates correct shape for sharp" do
settings = %ThemeSettings{shape: "sharp"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-radius-button: 0"
assert css =~ "--t-radius-card: 0"
end
test "generates correct shape for soft" do
settings = %ThemeSettings{shape: "soft"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-radius-button: var(--p-radius-md)"
assert css =~ "--t-radius-card: var(--p-radius-lg)"
end
test "generates correct shape for round" do
settings = %ThemeSettings{shape: "round"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-radius-button: var(--p-radius-lg)"
assert css =~ "--t-radius-card: var(--p-radius-xl)"
end
test "generates correct shape for pill" do
settings = %ThemeSettings{shape: "pill"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-radius-button: var(--p-radius-full)"
end
test "generates correct density for spacious" do
settings = %ThemeSettings{density: "spacious"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-density: 1.25"
end
test "generates correct density for balanced" do
settings = %ThemeSettings{density: "balanced"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-density: 1"
end
test "generates correct density for compact" do
settings = %ThemeSettings{density: "compact"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-density: 0.85"
end
test "converts hex colors to HSL" do
settings = %ThemeSettings{accent_color: "#ff0000"}
css = CSSGenerator.generate(settings)
@@ -138,6 +26,26 @@ defmodule SimpleshopTheme.Theme.CSSGeneratorTest do
assert css =~ "--t-accent-l: 50%"
end
test "handles blue accent color" do
settings = %ThemeSettings{accent_color: "#0000ff"}
css = CSSGenerator.generate(settings)
# Blue should be H=240, S=100%, L=50%
assert css =~ "--t-accent-h: 240"
assert css =~ "--t-accent-s: 100%"
assert css =~ "--t-accent-l: 50%"
end
test "handles green accent color" do
settings = %ThemeSettings{accent_color: "#00ff00"}
css = CSSGenerator.generate(settings)
# Green should be H=120, S=100%, L=50%
assert css =~ "--t-accent-h: 120"
assert css =~ "--t-accent-s: 100%"
assert css =~ "--t-accent-l: 50%"
end
test "includes secondary colors" do
settings = %ThemeSettings{
secondary_accent_color: "#ea580c",
@@ -149,5 +57,103 @@ defmodule SimpleshopTheme.Theme.CSSGeneratorTest do
assert css =~ "--t-secondary-accent: #ea580c"
assert css =~ "--t-sale-color: #dc2626"
end
test "generates font size scale for small" do
settings = %ThemeSettings{font_size: "small"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-size-scale: 1.125"
end
test "generates font size scale for medium" do
settings = %ThemeSettings{font_size: "medium"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-size-scale: 1.1875"
end
test "generates font size scale for large" do
settings = %ThemeSettings{font_size: "large"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-font-size-scale: 1.25"
end
test "generates heading weight override for regular" do
settings = %ThemeSettings{heading_weight: "regular"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-heading-weight-override: 400"
end
test "generates heading weight override for bold" do
settings = %ThemeSettings{heading_weight: "bold"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-heading-weight-override: 700"
end
test "generates layout width for contained" do
settings = %ThemeSettings{layout_width: "contained"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-layout-max-width: 1100px"
end
test "generates layout width for wide" do
settings = %ThemeSettings{layout_width: "wide"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-layout-max-width: 1400px"
end
test "generates layout width for full" do
settings = %ThemeSettings{layout_width: "full"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-layout-max-width: 100%"
end
test "generates button style for filled" do
settings = %ThemeSettings{button_style: "filled"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-button-style: filled"
end
test "generates button style for outline" do
settings = %ThemeSettings{button_style: "outline"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-button-style: outline"
end
test "generates product text alignment" do
settings = %ThemeSettings{product_text_align: "center"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-product-text-align: center"
end
test "generates image aspect ratio for square" do
settings = %ThemeSettings{image_aspect_ratio: "square"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-image-aspect-ratio: 1 / 1"
end
test "generates image aspect ratio for portrait" do
settings = %ThemeSettings{image_aspect_ratio: "portrait"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-image-aspect-ratio: 3 / 4"
end
test "generates image aspect ratio for landscape" do
settings = %ThemeSettings{image_aspect_ratio: "landscape"}
css = CSSGenerator.generate(settings)
assert css =~ "--t-image-aspect-ratio: 4 / 3"
end
end
end

View File

@@ -4,11 +4,11 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
alias SimpleshopTheme.Theme.Presets
describe "all/0" do
test "returns all 9 presets" do
test "returns all 8 presets" do
presets = Presets.all()
assert is_map(presets)
assert map_size(presets) == 9
assert map_size(presets) == 8
assert Map.has_key?(presets, :gallery)
assert Map.has_key?(presets, :studio)
assert Map.has_key?(presets, :boutique)
@@ -17,7 +17,6 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
assert Map.has_key?(presets, :minimal)
assert Map.has_key?(presets, :night)
assert Map.has_key?(presets, :classic)
assert Map.has_key?(presets, :impulse)
end
end
@@ -74,8 +73,8 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
test "returns minimal preset" do
preset = Presets.get(:minimal)
assert preset.mood == "cool"
assert preset.typography == "minimal"
assert preset.mood == "neutral"
assert preset.typography == "impulse"
assert preset.shape == "sharp"
assert preset.accent_color == "#171717"
end
@@ -96,18 +95,6 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
assert preset.accent_color == "#166534"
end
test "returns impulse preset with extended settings" do
preset = Presets.get(:impulse)
assert preset.mood == "neutral"
assert preset.typography == "impulse"
assert preset.shape == "sharp"
assert preset.accent_color == "#000000"
assert preset.font_size == "medium"
assert preset.heading_weight == "regular"
assert preset.product_text_align == "center"
end
test "returns nil for nonexistent preset" do
assert Presets.get(:nonexistent) == nil
end
@@ -118,7 +105,7 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
names = Presets.list_names()
assert is_list(names)
assert length(names) == 9
assert length(names) == 8
assert :gallery in names
assert :studio in names
assert :boutique in names
@@ -127,7 +114,6 @@ defmodule SimpleshopTheme.Theme.PresetsTest do
assert :minimal in names
assert :night in names
assert :classic in names
assert :impulse in names
end
end
end

View File

@@ -45,11 +45,14 @@ defmodule SimpleshopTheme.Theme.PreviewDataTest do
for product <- products do
assert is_binary(product.image_url)
assert String.starts_with?(product.image_url, "http")
# Images can be either local paths (starting with /) or full URLs
assert String.starts_with?(product.image_url, "/") or
String.starts_with?(product.image_url, "http")
if product.hover_image_url do
assert is_binary(product.hover_image_url)
assert String.starts_with?(product.hover_image_url, "http")
assert String.starts_with?(product.hover_image_url, "/") or
String.starts_with?(product.hover_image_url, "http")
end
end
end