genankjs
Version:
generate anki card
78 lines • 3.07 kB
JavaScript
import { describe, it, expect, beforeEach } from 'vitest';
import { generateGuid, generateUniqueGuid, ankiTime, joinFields, formatTags, generateDeckId, generateModelId, } from '../utils.js';
describe('Utils', () => {
describe('generateGuid', () => {
it('should generate a valid bigint GUID', () => {
const guid = generateGuid();
expect(typeof guid).toBe('bigint');
expect(guid).not.toBe(0n);
});
it('should generate unique GUIDs', () => {
const guid1 = generateGuid();
const guid2 = generateGuid();
expect(guid1).not.toBe(guid2);
});
});
describe('generateUniqueGuid', () => {
it('should generate a unique GUID with timestamp', () => {
const guid = generateUniqueGuid();
expect(typeof guid).toBe('bigint');
expect(guid > 0n).toBe(true);
});
it('should generate different GUIDs on subsequent calls', () => {
const guid1 = generateUniqueGuid();
const guid2 = generateUniqueGuid();
expect(guid1).not.toBe(guid2);
});
});
describe('ankiTime', () => {
it('should return current timestamp in seconds', () => {
const now = Date.now();
const ankiTimestamp = ankiTime();
const expectedTimestamp = Math.floor(now / 1000);
expect(ankiTimestamp).toBeCloseTo(expectedTimestamp, -1);
expect(typeof ankiTimestamp).toBe('number');
});
});
describe('joinFields', () => {
it('should join fields with field separator', () => {
const fields = ['Front', 'Back', 'Extra'];
const result = joinFields(fields);
expect(result).toBe('Front\x1fBack\x1fExtra');
});
it('should handle empty array', () => {
const result = joinFields([]);
expect(result).toBe('');
});
it('should handle single field', () => {
const result = joinFields(['Single']);
expect(result).toBe('Single');
});
});
describe('formatTags', () => {
it('should format tags with spaces', () => {
const tags = ['tag1', 'tag2', 'tag3'];
const result = formatTags(tags);
expect(result).toBe(' tag1 tag2 tag3 ');
});
it('should handle empty tags', () => {
const result = formatTags([]);
expect(result).toBe('');
});
});
describe('generateDeckId', () => {
it('should generate a valid deck ID', () => {
const deckId = generateDeckId();
expect(typeof deckId).toBe('number');
expect(deckId).toBeGreaterThan(1000000000);
});
});
describe('generateModelId', () => {
it('should generate a valid model ID', () => {
const modelId = generateModelId();
expect(typeof modelId).toBe('number');
expect(modelId).toBeGreaterThan(0);
});
});
});
//# sourceMappingURL=utils.test.js.map