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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user