Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980import { describe, it, expect } from 'vitest'import { parseFrontMatterEntry } from '../obsidian-stubs'
describe('parseFrontMatterEntry', () => { describe('with string key', () => { it('returns value for exact key match', () => { const fm = { title: 'Hello', tags: ['a', 'b'] } expect(parseFrontMatterEntry(fm, 'title')).toBe('Hello') expect(parseFrontMatterEntry(fm, 'tags')).toEqual(['a', 'b']) })
it('returns null when key not found', () => { const fm = { title: 'Hello' } expect(parseFrontMatterEntry(fm, 'author')).toBeNull() })
it('is case-sensitive for string keys', () => { const fm = { Title: 'Hello', tags: ['a'] } expect(parseFrontMatterEntry(fm, 'Title')).toBe('Hello') expect(parseFrontMatterEntry(fm, 'title')).toBeNull() })
it('returns null for undefined values', () => { const fm = { title: undefined } expect(parseFrontMatterEntry(fm, 'title')).toBeNull() })
it('returns null values as-is', () => { const fm = { title: null } expect(parseFrontMatterEntry(fm, 'title')).toBeNull() }) })
describe('with RegExp key', () => { it('returns first matching value', () => { const fm = { author_name: 'Alice', author_email: 'alice@example.com' } expect(parseFrontMatterEntry(fm, /^author/)).toBe('Alice') })
it('returns null when no match', () => { const fm = { title: 'Hello' } expect(parseFrontMatterEntry(fm, /^author/)).toBeNull() })
it('matches case-sensitively by default', () => { const fm = { Title: 'Hello' } expect(parseFrontMatterEntry(fm, /^title$/)).toBeNull() expect(parseFrontMatterEntry(fm, /^Title$/)).toBe('Hello') })
it('can match case-insensitively with i flag', () => { const fm = { Title: 'Hello' } expect(parseFrontMatterEntry(fm, /^title$/i)).toBe('Hello') }) })
describe('invalid frontmatter input', () => { it('returns null for null frontmatter', () => { expect(parseFrontMatterEntry(null, 'key')).toBeNull() })
it('returns null for undefined frontmatter', () => { expect(parseFrontMatterEntry(undefined, 'key')).toBeNull() })
it('returns null for non-object frontmatter', () => { expect(parseFrontMatterEntry('string', 'key')).toBeNull() expect(parseFrontMatterEntry(42, 'key')).toBeNull() })
it('returns null for array frontmatter', () => { expect(parseFrontMatterEntry(['a', 'b'], 'key')).toBeNull() })
it('returns null for empty object', () => { expect(parseFrontMatterEntry({}, 'key')).toBeNull() }) })})