-import { getGlyphHash } from './glyph_hash';
-
-
-describe('Glyph Hash utility', () => {
-
- test('it throws an exception if the string is too short', () => {
-
- expect(() => {
-
- getGlyphHash('short');
- }).toThrow();
-
- expect(() => {
-
- getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
- }).toThrow();
-
- expect(() => {
-
- getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEF');
- }).not.toThrow();
- });
-
- test('it treats UUIDs with hyphens the same as those without', () => {
-
- const uuidWithHyphens = 'f7722355-2285-46c0-a55f-3483a826f3a6';
- const uuidWithoutHyphens = 'f7722355228546c0a55f3483a826f3a6';
-
- expect(getGlyphHash(uuidWithHyphens)).toEqual(getGlyphHash(uuidWithoutHyphens));
- });
-
- describe('it generates four sets of glyphs and colors', () => {
-
- const state = {};
-
- beforeEach(() => {
-
- state.glyphHash = getGlyphHash('f7722355-2285-46c0-a55f-3483a826f3a6');
- });
-
- test('there should be four glyph fragments', () => {
-
- expect(state.glyphHash.length).toBe(4);
- });
-
- test('each fragment should have a single character glyph', () => {
-
- for (const glyphHashFragment of state.glyphHash) {
- expect(typeof glyphHashFragment.glyph).toBe('string');
- expect(glyphHashFragment.glyph.length).toBe(1);
- }
- });
-
- test('each fragment should have a hexadecimal color', () => {
-
- for (const glyphHashFragment of state.glyphHash) {
- expect(typeof glyphHashFragment.color).toBe('string');
- expect(glyphHashFragment.color.length).toBe(7);
- expect(glyphHashFragment.color).toEqual(expect.stringMatching(/#[0-9a-f]{6}/));
- }
- });
- });
-});