1+ import { TasksFile } from '../../src/Scripting/TasksFile' ;
12import { Link } from '../../src/Task/Link' ;
2-
3- import links_everywhere from '../Obsidian/__test_data__/links_everywhere.json' ;
43import internal_heading_links from '../Obsidian/__test_data__/internal_heading_links.json' ;
5- import link_in_task_wikilink from '../Obsidian/__test_data__/link_in_task_wikilink.json' ;
64import link_in_task_markdown_link from '../Obsidian/__test_data__/link_in_task_markdown_link.json' ;
5+ import link_in_task_wikilink from '../Obsidian/__test_data__/link_in_task_wikilink.json' ;
6+
7+ import links_everywhere from '../Obsidian/__test_data__/links_everywhere.json' ;
78import { allCacheSampleData } from '../Obsidian/AllCacheSampleData' ;
8- import { getTasksFileFromMockData } from '../TestingTools/MockDataHelpers ' ;
9+ import type { SimulatedFile } from '../Obsidian/SimulatedFile ' ;
910import { addBackticks , formatToRepresentType } from '../Scripting/ScriptingTestHelpers' ;
11+ import { getTasksFileFromMockData } from '../TestingTools/MockDataHelpers' ;
1012import { verifyMarkdown } from '../TestingTools/VerifyMarkdown' ;
11- import type { SimulatedFile } from '../Obsidian/SimulatedFile' ;
1213
1314function getLink ( data : any , index : number ) {
1415 const rawLink = data . cachedMetadata . links [ index ] ;
@@ -24,6 +25,8 @@ describe('linkClass', () => {
2425 expect ( link . destination ) . toEqual ( 'link_in_file_body' ) ;
2526 expect ( link . displayText ) . toEqual ( 'link_in_file_body' ) ;
2627 expect ( link . markdown ) . toEqual ( link . originalMarkdown ) ;
28+ expect ( link . isLinkTo ( 'link_in_file_body' ) ) . toEqual ( true ) ;
29+ expect ( link . isLinkTo ( 'link_in_file_body.md' ) ) . toEqual ( true ) ;
2730 } ) ;
2831
2932 describe ( 'return markdown to navigate to a link' , ( ) => {
@@ -238,6 +241,46 @@ describe('linkClass', () => {
238241 // Empty Markdown Link Tests
239242 // []() and [alias]() are not detected by the obsidian parser as a link
240243 } ) ;
244+
245+ describe ( 'isLinkTo() tests' , ( ) => {
246+ it ( 'matches filenames' , ( ) => {
247+ const link = getLink ( links_everywhere , 0 ) ;
248+
249+ expect ( link . isLinkTo ( 'link_in_file_body' ) ) . toEqual ( true ) ;
250+ expect ( link . isLinkTo ( 'link_in_file_body.md' ) ) . toEqual ( true ) ;
251+
252+ expect ( link . isLinkTo ( 'somewhere_else' ) ) . toEqual ( false ) ;
253+
254+ expect ( link . isLinkTo ( 'link_in_file_body_but_different' ) ) . toEqual ( false ) ;
255+ expect ( link . isLinkTo ( 'link_in_file_' ) ) . toEqual ( false ) ;
256+ } ) ;
257+
258+ it ( 'matches without folders' , ( ) => {
259+ const linkToAFile = getLink ( link_in_task_wikilink , 0 ) ;
260+ expect ( linkToAFile . originalMarkdown ) . toMatchInlineSnapshot ( '"[[link_in_task_wikilink]]"' ) ;
261+
262+ expect ( linkToAFile . isLinkTo ( 'link_in_task_wikilink' ) ) . toEqual ( true ) ;
263+ } ) ;
264+
265+ it ( 'matches with folders' , ( ) => {
266+ const linkToAFolder = getLink ( link_in_task_wikilink , 2 ) ;
267+ expect ( linkToAFolder . originalMarkdown ) . toMatchInlineSnapshot ( '"[[Test Data/link_in_task_wikilink]]"' ) ;
268+
269+ expect ( linkToAFolder . isLinkTo ( 'link_in_task_wikilink' ) ) . toEqual ( true ) ;
270+ expect ( linkToAFolder . isLinkTo ( 'Test Data/link_in_task_wikilink' ) ) . toEqual ( true ) ;
271+ expect ( linkToAFolder . isLinkTo ( 'Test Data/link_in_task_wikilink.md' ) ) . toEqual ( true ) ;
272+ } ) ;
273+
274+ it ( 'matches TasksFile' , ( ) => {
275+ const linkToAFolder = getLink ( link_in_task_wikilink , 2 ) ;
276+ expect ( linkToAFolder . originalMarkdown ) . toMatchInlineSnapshot ( '"[[Test Data/link_in_task_wikilink]]"' ) ;
277+
278+ expect ( linkToAFolder . isLinkTo ( new TasksFile ( 'Test Data/link_in_task_wikilink.md' ) ) ) . toEqual ( true ) ;
279+ expect ( linkToAFolder . isLinkTo ( new TasksFile ( 'link_in_task_wikilink.md' ) ) ) . toEqual ( true ) ;
280+ expect ( linkToAFolder . isLinkTo ( new TasksFile ( 'Wrong Test Data/link_in_task_wikilink.md' ) ) ) . toEqual ( false ) ;
281+ expect ( linkToAFolder . isLinkTo ( new TasksFile ( 'something_obviously_different.md' ) ) ) . toEqual ( false ) ;
282+ } ) ;
283+ } ) ;
241284} ) ;
242285
243286describe ( 'visualise links' , ( ) => {
0 commit comments