@@ -6,14 +6,10 @@ import internal_heading_links from '../Obsidian/__test_data__/internal_heading_l
66import link_in_task_wikilink from '../Obsidian/__test_data__/link_in_task_wikilink.json' ;
77import link_in_task_markdown_link from '../Obsidian/__test_data__/link_in_task_markdown_link.json' ;
88
9- function getLink ( data : any , index : number ) {
10- const rawLink = data . cachedMetadata . links [ index ] ;
11- return new Link ( rawLink , new TasksFile ( data . filePath ) . filenameWithoutExtension ) ;
12- }
13-
149describe ( 'linkClass' , ( ) => {
1510 it ( 'should construct a Link object' , ( ) => {
16- const link = getLink ( links_everywhere , 0 ) ;
11+ const rawLink = links_everywhere . cachedMetadata . links [ 0 ] ;
12+ const link = new Link ( rawLink , new TasksFile ( links_everywhere . filePath ) . filenameWithoutExtension ) ;
1713
1814 expect ( link ) . toBeDefined ( ) ;
1915 expect ( link . originalMarkdown ) . toEqual ( '[[link_in_file_body]]' ) ;
@@ -29,73 +25,83 @@ describe('linkClass', () => {
2925
3026 // Tests checking against __internal_heading_links__
3127 it ( 'should return the filename of the containing note if the link is internal [[#heading]]' , ( ) => {
32- const link = getLink ( internal_heading_links , 0 ) ;
28+ const rawLink = internal_heading_links . cachedMetadata . links [ 0 ] ;
29+ const link = new Link ( rawLink , new TasksFile ( internal_heading_links . filePath ) . filenameWithoutExtension ) ;
3330
3431 expect ( link . originalMarkdown ) . toEqual ( '[[#Basic Internal Links]]' ) ;
3532 expect ( link . destinationFilename ) . toEqual ( 'internal_heading_links' ) ;
3633 } ) ;
3734
3835 it ( 'should return the filename of the containing note if the link is internal and has an alias [[#heading|display text]]' , ( ) => {
39- const link = getLink ( internal_heading_links , 6 ) ;
36+ const rawLink = internal_heading_links . cachedMetadata . links [ 6 ] ;
37+ const link = new Link ( rawLink , new TasksFile ( internal_heading_links . filePath ) . filenameWithoutExtension ) ;
4038
4139 expect ( link . originalMarkdown ) . toEqual ( '[[#Header Links With File Reference]]' ) ;
4240 expect ( link . destinationFilename ) . toEqual ( 'internal_heading_links' ) ;
4341 } ) ;
4442
4543 // Tests checking against __link_in_task_wikilink__
4644 it ( 'should return the filename if simple [[filename]]' , ( ) => {
47- const link = getLink ( link_in_task_wikilink , 0 ) ;
45+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 0 ] ;
46+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
4847
4948 expect ( link . originalMarkdown ) . toEqual ( '[[link_in_task_wikilink]]' ) ;
5049 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
5150 } ) ;
5251
5352 it ( 'should return the filename if link has a path [[path/filename]]' , ( ) => {
54- const link = getLink ( link_in_task_wikilink , 2 ) ;
53+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 2 ] ;
54+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
5555
5656 expect ( link . originalMarkdown ) . toEqual ( '[[path/link_in_task_wikilink]]' ) ;
5757 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
5858 } ) ;
5959
6060 it ( 'should return the filename if link has a path and a heading link [[path/filename#heading]]' , ( ) => {
61- const link = getLink ( link_in_task_wikilink , 3 ) ;
61+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 3 ] ;
62+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
6263
6364 expect ( link . originalMarkdown ) . toEqual ( '[[path/link_in_task_wikilink#heading_link]]' ) ;
6465 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
6566 } ) ;
6667
6768 it ( 'should return the filename if link has an alias [[filename|alias]]' , ( ) => {
68- const link = getLink ( link_in_task_wikilink , 4 ) ;
69+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 4 ] ;
70+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
6971
7072 expect ( link . originalMarkdown ) . toEqual ( '[[link_in_task_wikilink|alias]]' ) ;
7173 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
7274 } ) ;
7375
7476 it ( 'should return the filename if link has a path and an alias [[path/path/filename|alias]]' , ( ) => {
75- const link = getLink ( link_in_task_wikilink , 5 ) ;
77+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 5 ] ;
78+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
7679
7780 expect ( link . originalMarkdown ) . toEqual ( '[[path/path/link_in_task_wikilink|alias]]' ) ;
7881 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
7982 } ) ;
8083
8184 // # is a valid character in a filename or a path but Obsidian does not support it in links
8285 it ( 'should return the filename if path contains a # [[pa#th/path/filename]]' , ( ) => {
83- const link = getLink ( link_in_task_wikilink , 6 ) ;
86+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 6 ] ;
87+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
8488
8589 expect ( link . originalMarkdown ) . toEqual ( '[[pa#th/path/link_in_task_wikilink]]' ) ;
8690 expect ( link . destinationFilename ) . toEqual ( 'pa' ) ;
8791 } ) ;
8892
8993 // When grouping a Wikilink link expect [[file.md]] to be grouped with [[file]].
9094 it ( 'should return a filename with no file extension if suffixed with .md [[link_in_task_wikilink.md]]' , ( ) => {
91- const link = getLink ( link_in_task_wikilink , 7 ) ;
95+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 7 ] ;
96+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
9297
9398 expect ( link . originalMarkdown ) . toEqual ( '[[link_in_task_wikilink.md]]' ) ;
9499 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_wikilink' ) ;
95100 } ) ;
96101
97102 it ( 'should return a filename with corresponding file extension if not markdown [[a_pdf_file.pdf]]' , ( ) => {
98- const link = getLink ( link_in_task_wikilink , 8 ) ;
103+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 8 ] ;
104+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
99105
100106 expect ( link . originalMarkdown ) . toEqual ( '[[a_pdf_file.pdf]]' ) ;
101107 expect ( link . destinationFilename ) . toEqual ( 'a_pdf_file.pdf' ) ;
@@ -105,21 +111,24 @@ describe('linkClass', () => {
105111 // [[]] is not detected by the obsidian parser as a link
106112
107113 it ( 'should provide no special functionality for [[|]]; returns "|")' , ( ) => {
108- const link = getLink ( link_in_task_wikilink , 9 ) ;
114+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 9 ] ;
115+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
109116
110117 expect ( link . originalMarkdown ) . toEqual ( '[[|]]' ) ;
111118 expect ( link . destinationFilename ) . toEqual ( '|' ) ;
112119 } ) ;
113120
114121 it ( 'should provide no special functionality for [[|alias]]; returns "|alias".)' , ( ) => {
115- const link = getLink ( link_in_task_wikilink , 10 ) ;
122+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 10 ] ;
123+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
116124
117125 expect ( link . originalMarkdown ) . toEqual ( '[[|alias]]' ) ;
118126 expect ( link . destinationFilename ) . toEqual ( '|alias' ) ;
119127 } ) ;
120128
121129 it ( 'should provide no special functionality for [[|#alias]]; returns "|".)' , ( ) => {
122- const link = getLink ( link_in_task_wikilink , 11 ) ;
130+ const rawLink = link_in_task_wikilink . cachedMetadata . links [ 11 ] ;
131+ const link = new Link ( rawLink , new TasksFile ( link_in_task_wikilink . filePath ) . filenameWithoutExtension ) ;
123132
124133 expect ( link . originalMarkdown ) . toEqual ( '[[|#alias]]' ) ;
125134 expect ( link . destinationFilename ) . toEqual ( '|' ) ;
@@ -132,50 +141,57 @@ describe('linkClass', () => {
132141 // Tests checking against __link_in_task_markdown_link__
133142
134143 it ( 'should return the filename if the link is internal [display name](#heading)' , ( ) => {
135- const link = getLink ( link_in_task_markdown_link , 8 ) ;
144+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 8 ] ;
145+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
136146
137147 expect ( link . originalMarkdown ) . toEqual ( '[heading](#heading)' ) ;
138148 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
139149 } ) ;
140150
141151 it ( 'should return the filename when a simple markdown link [display name](filename)' , ( ) => {
142- const link = getLink ( link_in_task_markdown_link , 2 ) ;
152+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 2 ] ;
153+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
143154
144155 expect ( link . originalMarkdown ) . toEqual ( '[link_in_task_markdown_link](link_in_task_markdown_link.md)' ) ;
145156 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
146157 } ) ;
147158
148159 it ( 'should return the filename if link has a path [link_in_task_markdown_link](path/filename.md)' , ( ) => {
149- const link = getLink ( link_in_task_markdown_link , 3 ) ;
160+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 3 ] ;
161+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
150162
151163 expect ( link . originalMarkdown ) . toEqual ( '[link_in_task_markdown_link](path/link_in_task_markdown_link.md)' ) ;
152164 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
153165 } ) ;
154166
155167 it ( 'should return the filename if link has a path and a heading link [heading_link](path/filename.md#heading)' , ( ) => {
156- const link = getLink ( link_in_task_markdown_link , 4 ) ;
168+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 4 ] ;
169+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
157170
158171 expect ( link . originalMarkdown ) . toEqual ( '[heading_link](path/link_in_task_markdown_link.md#heading_link)' ) ;
159172 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
160173 } ) ;
161174
162175 it ( 'should return the filename if link has an alias [alias](filename.md)' , ( ) => {
163- const link = getLink ( link_in_task_markdown_link , 5 ) ;
176+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 5 ] ;
177+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
164178
165179 expect ( link . originalMarkdown ) . toEqual ( '[alias](link_in_task_markdown_link.md)' ) ;
166180 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
167181 } ) ;
168182
169183 it ( 'should return the filename if link has a path and an alias [alias](path/path/filename.md)' , ( ) => {
170- const link = getLink ( link_in_task_markdown_link , 6 ) ;
184+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 6 ] ;
185+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
171186
172187 expect ( link . originalMarkdown ) . toEqual ( '[alias](path/path/link_in_task_markdown_link.md)' ) ;
173188 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
174189 } ) ;
175190
176191 // # is a valid character in a filename or a path but Obsidian does not support it in links
177192 it ( 'should return the string before the # [link_in_task_markdown_link](pa#th/path/filename.md)' , ( ) => {
178- const link = getLink ( link_in_task_markdown_link , 7 ) ;
193+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 7 ] ;
194+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
179195
180196 expect ( link . originalMarkdown ) . toEqual (
181197 '[link_in_task_markdown_link](pa#th/path/link_in_task_markdown_link.md)' ,
@@ -185,21 +201,24 @@ describe('linkClass', () => {
185201
186202 // When grouping a Wikilink link expect [[file.md]] to be grouped with [[file]].
187203 it ( 'should return a filename when no .md extension if the .md exists in markdown link [alias](filename)' , ( ) => {
188- const link = getLink ( link_in_task_markdown_link , 9 ) ;
204+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 9 ] ;
205+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
189206
190207 expect ( link . originalMarkdown ) . toEqual ( '[link_in_task_markdown_link](link_in_task_markdown_link)' ) ;
191208 expect ( link . destinationFilename ) . toEqual ( 'link_in_task_markdown_link' ) ;
192209 } ) ;
193210
194211 it ( 'should return a filename with corresponding file extension if not markdown [a_pdf_file](a_pdf_file.pdf)' , ( ) => {
195- const link = getLink ( link_in_task_markdown_link , 10 ) ;
212+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 10 ] ;
213+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
196214
197215 expect ( link . originalMarkdown ) . toEqual ( '[a_pdf_file](a_pdf_file.pdf)' ) ;
198216 expect ( link . destinationFilename ) . toEqual ( 'a_pdf_file.pdf' ) ;
199217 } ) ;
200218
201219 it ( 'should handle spaces in the path, filename, and heading link [heading link](path/filename with spaces.md#heading link)' , ( ) => {
202- const link = getLink ( link_in_task_markdown_link , 11 ) ;
220+ const rawLink = link_in_task_markdown_link . cachedMetadata . links [ 11 ] ;
221+ const link = new Link ( rawLink , new TasksFile ( link_in_task_markdown_link . filePath ) . filenameWithoutExtension ) ;
203222
204223 expect ( link . originalMarkdown ) . toEqual (
205224 '[spaces everywhere](Test%20Data/spaced%20filename%20link.md#spaced%20heading)' ,
0 commit comments