Skip to content

Commit

Permalink
Broaden tests for default extending, only with different prefix options
Browse files Browse the repository at this point in the history
  • Loading branch information
catuhana committed Jul 18, 2024
1 parent 889bfd8 commit a930f62
Showing 1 changed file with 70 additions and 20 deletions.
90 changes: 70 additions & 20 deletions src/extend.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from 'vitest';
import { test, expect, describe } from 'vitest';

import { extendTheme } from './extend.ts';
import {
Expand All @@ -8,30 +8,80 @@ import {
flavors as flavours,
} from '@catppuccin/palette';

test('extended theme results is an object', () => {
const theme = {} as Record<
'colors',
{
ctp: {
describe('extending theme with defaults results an object in required format', () => {
const expectedFlavours = flavourEntries.map(([flavourName]) => flavourName);
const expectedColours = flavours[expectedFlavours[0]].colorEntries.map(
([colourName]) => colourName
);

test('with default prefix', () => {
const theme = {} as Record<
'colors',
{
ctp: {
[flavour in keyof CatppuccinFlavors]: {
[colour in keyof CatppuccinColors]: string;
};
};
}
>;
extendTheme()(theme);

expect(theme).toBeTypeOf('object');

expect(Object.keys(theme)).toEqual(['colors']);
expect(Object.keys(theme.colors)).toEqual(['ctp']);
expect(Object.keys(theme.colors.ctp)).toEqual(expectedFlavours);
for (const flavour of expectedFlavours) {
expect(Object.keys(theme.colors.ctp[flavour])).toEqual(expectedColours);
}
});

test('without a prefix', () => {
const theme = {} as Record<
'colors',
{
[flavour in keyof CatppuccinFlavors]: {
[colour in keyof CatppuccinColors]: string;
};
};
}
>;

extendTheme({ prefix: false })(theme);

expect(theme).toBeTypeOf('object');

expect(Object.keys(theme)).toEqual(['colors']);
expect(Object.keys(theme.colors)).toEqual(expectedFlavours);
for (const flavour of expectedFlavours) {
expect(Object.keys(theme.colors[flavour])).toEqual(expectedColours);
}
>;
extendTheme()(theme);
});

const expectedFlavours = flavourEntries.map(([flavourName]) => flavourName);
const expectedColours = flavours[expectedFlavours[0]].colorEntries.map(
([colourName]) => colourName
);
test('with custom prefix', () => {
const prefix = 'meow';
const theme = {} as Record<
'colors',
{
[prefix]: {
[flavour in keyof CatppuccinFlavors]: {
[colour in keyof CatppuccinColors]: string;
};
};
}
>;

expect(theme).toBeTypeOf('object');
extendTheme({ prefix })(theme);

expect(Object.keys(theme)).toEqual(['colors']);
expect(Object.keys(theme.colors)).toEqual(['ctp']);
expect(Object.keys(theme.colors.ctp)).toEqual(expectedFlavours);
for (const flavour of expectedFlavours) {
expect(Object.keys(theme.colors.ctp[flavour])).toEqual(expectedColours);
}
expect(theme).toBeTypeOf('object');

expect(Object.keys(theme)).toEqual(['colors']);
expect(Object.keys(theme.colors)).toEqual([prefix]);
expect(Object.keys(theme.colors[prefix])).toEqual(expectedFlavours);
for (const flavour of expectedFlavours) {
expect(Object.keys(theme.colors[prefix][flavour])).toEqual(
expectedColours
);
}
});
});

0 comments on commit a930f62

Please sign in to comment.