74 lines
2 KiB
TypeScript
74 lines
2 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import type { VaultEntry } from '../types'
|
|
import {
|
|
firstSheetWikilinkTarget,
|
|
sheetCellContainsPlainWikilink,
|
|
sheetWikilinkColor,
|
|
sheetWikilinkDisplayValue,
|
|
} from './sheetWikilinks'
|
|
|
|
function makeEntry(overrides: Partial<VaultEntry>): VaultEntry {
|
|
return {
|
|
path: '/vault/project-alpha.md',
|
|
filename: 'project-alpha.md',
|
|
title: 'Project Alpha',
|
|
isA: 'Project',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
archived: false,
|
|
modifiedAt: null,
|
|
createdAt: null,
|
|
fileSize: 0,
|
|
snippet: '',
|
|
wordCount: 0,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null,
|
|
sort: null,
|
|
view: null,
|
|
visible: true,
|
|
organized: false,
|
|
favorite: false,
|
|
favoriteIndex: null,
|
|
listPropertiesDisplay: [],
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
hasH1: false,
|
|
fileKind: 'markdown',
|
|
...overrides,
|
|
}
|
|
}
|
|
|
|
describe('sheetWikilinks', () => {
|
|
it('detects plain-cell wikilinks but not formulas', () => {
|
|
expect(sheetCellContainsPlainWikilink('See [[project-alpha]]')).toBe(true)
|
|
expect(sheetCellContainsPlainWikilink('=[[project-alpha]].B2')).toBe(false)
|
|
})
|
|
|
|
it('renders resolved wikilinks as note titles while preserving surrounding text', () => {
|
|
const entry = makeEntry({ icon: '📈' })
|
|
|
|
expect(sheetWikilinkDisplayValue('Owner: [[project-alpha]]', [entry])).toBe('Owner: 📈 Project Alpha')
|
|
})
|
|
|
|
it('keeps explicit wikilink aliases as display text', () => {
|
|
const entry = makeEntry({})
|
|
|
|
expect(sheetWikilinkDisplayValue('[[project-alpha|Alpha]]', [entry])).toBe('Alpha')
|
|
})
|
|
|
|
it('extracts the raw navigation target', () => {
|
|
expect(firstSheetWikilinkTarget('[[project-alpha|Alpha]]')).toBe('project-alpha|Alpha')
|
|
})
|
|
|
|
it('uses the resolved entry type color when available', () => {
|
|
const entry = makeEntry({})
|
|
|
|
expect(sheetWikilinkColor('[[project-alpha]]', [entry], null, '#155dff')).toBe('var(--accent-red)')
|
|
})
|
|
})
|