@@ -26,134 +26,43 @@ describe("generateMetadata", () => {
2626} ) ;
2727
2828describe ( "createMetadataGenerator" , ( ) => {
29- describe ( "without options" , ( ) => {
30- test ( "passes through title unchanged" , ( ) => {
31- const generateMetadata = createMetadataGenerator ( ) ;
32- const result = generateMetadata ( { title : "My Page" } ) ;
33-
34- expect ( result . meta ) . toContainEqual ( { title : "My Page" } ) ;
35- } ) ;
36-
37- test ( "handles null title" , ( ) => {
38- const generateMetadata = createMetadataGenerator ( ) ;
39- const result = generateMetadata ( { title : null } ) ;
40-
41- expect ( result . meta ) . not . toContainEqual (
42- expect . objectContaining ( { title : expect . any ( String ) } ) ,
43- ) ;
44- } ) ;
45-
46- test ( "handles undefined title" , ( ) => {
47- const generateMetadata = createMetadataGenerator ( ) ;
48- const result = generateMetadata ( { } ) ;
49-
50- expect ( result . meta ) . not . toContainEqual (
51- expect . objectContaining ( { title : expect . any ( String ) } ) ,
52- ) ;
53- } ) ;
54- } ) ;
55-
56- describe ( "with titleTemplate" , ( ) => {
29+ test ( "preserves other metadata when applying title template" , ( ) => {
5730 const generateMetadata = createMetadataGenerator ( {
58- titleTemplate : { default : "My Site" , template : "%s | My Site" } ,
31+ titleTemplate : { default : "Site" , template : "%s - Site" } ,
5932 } ) ;
6033
61- test ( "applies template to string title" , ( ) => {
62- const result = generateMetadata ( { title : "About" } ) ;
63-
64- expect ( result . meta ) . toContainEqual ( { title : "About | My Site" } ) ;
65- } ) ;
66-
67- test ( "uses default when title is null" , ( ) => {
68- const result = generateMetadata ( { title : null } ) ;
69-
70- expect ( result . meta ) . toContainEqual ( { title : "My Site" } ) ;
71- } ) ;
72-
73- test ( "uses default when title is undefined" , ( ) => {
74- const result = generateMetadata ( { } ) ;
75-
76- expect ( result . meta ) . toContainEqual ( { title : "My Site" } ) ;
77- } ) ;
78-
79- test ( "ignores template when title is absolute" , ( ) => {
80- const result = generateMetadata ( { title : { absolute : "Home" } } ) ;
81-
82- expect ( result . meta ) . toContainEqual ( { title : "Home" } ) ;
34+ const result = generateMetadata ( {
35+ title : "Blog" ,
36+ description : "My blog description" ,
37+ keywords : [ "blog" , "posts" ] ,
8338 } ) ;
8439
85- test ( "handles absolute title with special characters" , ( ) => {
86- const result = generateMetadata ( {
87- title : { absolute : "Welcome | Special Page" } ,
88- } ) ;
89-
90- expect ( result . meta ) . toContainEqual ( { title : "Welcome | Special Page" } ) ;
40+ expect ( result . meta ) . toContainEqual ( { title : "Blog - Site" } ) ;
41+ expect ( result . meta ) . toContainEqual ( {
42+ name : "description" ,
43+ content : "My blog description" ,
9144 } ) ;
92- } ) ;
93-
94- describe ( "with other metadata fields" , ( ) => {
95- test ( "preserves other metadata when applying title template" , ( ) => {
96- const generateMetadata = createMetadataGenerator ( {
97- titleTemplate : { default : "Site" , template : "%s - Site" } ,
98- } ) ;
99-
100- const result = generateMetadata ( {
101- title : "Blog" ,
102- description : "My blog description" ,
103- keywords : [ "blog" , "posts" ] ,
104- } ) ;
105-
106- expect ( result . meta ) . toContainEqual ( { title : "Blog - Site" } ) ;
107- expect ( result . meta ) . toContainEqual ( {
108- name : "description" ,
109- content : "My blog description" ,
110- } ) ;
111- expect ( result . meta ) . toContainEqual ( {
112- name : "keywords" ,
113- content : "blog,posts" ,
114- } ) ;
45+ expect ( result . meta ) . toContainEqual ( {
46+ name : "keywords" ,
47+ content : "blog,posts" ,
11548 } ) ;
11649 } ) ;
11750
118- describe ( "template variations" , ( ) => {
119- test ( "supports prefix template" , ( ) => {
120- const generateMetadata = createMetadataGenerator ( {
121- titleTemplate : { default : "Home" , template : "Acme | %s" } ,
122- } ) ;
123-
124- const result = generateMetadata ( { title : "Products" } ) ;
125-
126- expect ( result . meta ) . toContainEqual ( { title : "Acme | Products" } ) ;
127- } ) ;
128-
129- test ( "supports template without separator" , ( ) => {
130- const generateMetadata = createMetadataGenerator ( {
131- titleTemplate : { default : "Welcome" , template : "%s" } ,
132- } ) ;
133-
134- const result = generateMetadata ( { title : "Hello" } ) ;
135-
136- expect ( result . meta ) . toContainEqual ( { title : "Hello" } ) ;
51+ test ( "combines titleTemplate and baseUrl options" , ( ) => {
52+ const generateMetadata = createMetadataGenerator ( {
53+ titleTemplate : { default : "Site" , template : "%s | Site" } ,
54+ baseUrl : "https://example.com" ,
13755 } ) ;
13856
139- test ( "handles empty string title with template" , ( ) => {
140- const generateMetadata = createMetadataGenerator ( {
141- titleTemplate : { default : "Default" , template : "%s | Site" } ,
142- } ) ;
143-
144- const result = generateMetadata ( { title : "" } ) ;
145-
146- expect ( result . meta ) . toContainEqual ( { title : " | Site" } ) ;
57+ const result = generateMetadata ( {
58+ title : "About" ,
59+ openGraph : { images : "/og.png" } ,
14760 } ) ;
14861
149- test ( "replaces all %s placeholders" , ( ) => {
150- const generateMetadata = createMetadataGenerator ( {
151- titleTemplate : { default : "Site" , template : "%s | %s | Site" } ,
152- } ) ;
153-
154- const result = generateMetadata ( { title : "Docs" } ) ;
155-
156- expect ( result . meta ) . toContainEqual ( { title : "Docs | Docs | Site" } ) ;
62+ expect ( result . meta ) . toContainEqual ( { title : "About | Site" } ) ;
63+ expect ( result . meta ) . toContainEqual ( {
64+ property : "og:image" ,
65+ content : "https://example.com/og.png" ,
15766 } ) ;
15867 } ) ;
15968} ) ;
0 commit comments