mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { TILE_SPRITES, pickTileSprite } from "@/components/Placeholder/tileSprites";
|
|
import { DEFAULT_MESSAGES, type PlaceholderVariant } from "@/components/Placeholder/messages";
|
|
|
|
describe("TILE_SPRITES integrity", () => {
|
|
it("registers 32px by 32px sprite strips with animation-specific frame counts", () => {
|
|
expect(TILE_SPRITES.map((sprite) => sprite.name)).toEqual(["OwlBlink", "EagleIdle", "ToucanIdle"]);
|
|
expect(TILE_SPRITES.map((sprite) => [sprite.name, sprite.frames])).toEqual([
|
|
["OwlBlink", 5],
|
|
["EagleIdle", 4],
|
|
["ToucanIdle", 4],
|
|
]);
|
|
|
|
for (const sprite of TILE_SPRITES) {
|
|
expect(sprite.name).toMatch(/^[A-Z][A-Za-z]+(Idle|Hop|Blink|Drift|Flutter|Hover|Peck)$/);
|
|
expect(sprite.frameWidth).toBe(32);
|
|
expect(sprite.frameHeight).toBe(32);
|
|
expect(sprite.frames).toBeGreaterThanOrEqual(2);
|
|
expect(sprite.src).toMatch(/(\.svg|data:image\/svg\+xml)/);
|
|
}
|
|
});
|
|
|
|
it("returns a registered tile sprite from the pool", () => {
|
|
const sprite = pickTileSprite();
|
|
expect(TILE_SPRITES).toContain(sprite);
|
|
});
|
|
});
|
|
|
|
describe("DEFAULT_MESSAGES", () => {
|
|
it("provides a non-empty message for every variant", () => {
|
|
for (const variant of Object.keys(DEFAULT_MESSAGES) as PlaceholderVariant[]) {
|
|
expect(DEFAULT_MESSAGES[variant], `variant=${variant}`).toBeTruthy();
|
|
expect(DEFAULT_MESSAGES[variant].trim().length).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
});
|