65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from models.pallet import Palette
|
|
import os
|
|
|
|
def test_palette():
|
|
"""Test Palette model CRUD operations.
|
|
Palette stores a list of colors per ID; read() returns that list (or unwraps from dict).
|
|
"""
|
|
# Clean up any existing test file (model uses db/palette.json from project root)
|
|
db_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "db")
|
|
palette_file = os.path.join(db_dir, "palette.json")
|
|
if os.path.exists(palette_file):
|
|
os.remove(palette_file)
|
|
|
|
palettes = Palette()
|
|
|
|
print("Testing create palette")
|
|
colors = ["#FF0000", "#00FF00", "#0000FF", "#FFFF00"]
|
|
palette_id = palettes.create("test_palette", colors)
|
|
print(f"Created palette with ID: {palette_id}")
|
|
assert palette_id is not None
|
|
assert palette_id in palettes
|
|
|
|
print("\nTesting read palette")
|
|
palette = palettes.read(palette_id)
|
|
print(f"Read: {palette}")
|
|
# read() returns list of colors (name is not stored)
|
|
assert palette is not None
|
|
assert isinstance(palette, list) or (isinstance(palette, dict) and "colors" in palette)
|
|
colors_read = palette if isinstance(palette, list) else palette.get("colors", [])
|
|
assert len(colors_read) == 4
|
|
assert "#FF0000" in colors_read
|
|
|
|
print("\nTesting update palette")
|
|
update_data = {
|
|
"name": "updated_palette",
|
|
"colors": ["#FF00FF", "#00FFFF", "#FFA500"]
|
|
}
|
|
result = palettes.update(palette_id, update_data)
|
|
assert result is True
|
|
updated = palettes.read(palette_id)
|
|
updated_colors = updated if isinstance(updated, list) else (updated.get("colors") or [])
|
|
assert len(updated_colors) == 3
|
|
assert "#FF00FF" in updated_colors
|
|
|
|
print("\nTesting list palettes")
|
|
palette_list = palettes.list()
|
|
print(f"Palette list: {palette_list}")
|
|
assert palette_id in palette_list
|
|
|
|
print("\nTesting delete palette")
|
|
deleted = palettes.delete(palette_id)
|
|
assert deleted is True
|
|
assert palette_id not in palettes
|
|
|
|
print("\nTesting read after delete")
|
|
palette = palettes.read(palette_id)
|
|
# read() returns [] when id is missing (value or [])
|
|
assert palette == [] or palette is None
|
|
|
|
print("\nAll palette tests passed!")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test_palette()
|