UNPKG

5.89 kBJavaScriptView Raw
1var assert = require('assert');
2var equal = require('assert-dir-equal');
3var Metalsmith = require('metalsmith');
4var sitemap = require('..');
5
6describe('metalsmith-sitemap', function(){
7 it('should only process html by default', function(done){
8 Metalsmith('test/fixtures/html')
9 .use(sitemap('http://www.website.com/'))
10 .build(function(err){
11 if (err) {
12 return done(err);
13 }
14 equal('test/fixtures/html/expected', 'test/fixtures/html/build');
15 done();
16 });
17 });
18
19 it('should accept a string as the hostname', function(done){
20 Metalsmith('test/fixtures/hostname')
21 .use(sitemap('http://www.website.com/'))
22 .build(function(err){
23 if (err) {
24 return done(err);
25 }
26 equal('test/fixtures/hostname/expected', 'test/fixtures/hostname/build');
27 done();
28 });
29 });
30
31 it('should accept defaults for changefreq and priority', function(done){
32 Metalsmith('test/fixtures/defaults')
33 .use(sitemap({
34 hostname: 'http://www.website.com/',
35 changefreq: 'never',
36 priority: 0.1
37 }))
38 .build(function(err){
39 if (err) {
40 return done(err);
41 }
42 equal('test/fixtures/defaults/expected', 'test/fixtures/defaults/build');
43 done();
44 });
45 });
46
47 it('should allow settings to be overridden from the frontmatter', function(done){
48 Metalsmith('test/fixtures/frontmatter')
49 .use(sitemap({
50 hostname: 'http://www.website.com/',
51 changefreq: 'never',
52 priority: 0.1,
53 lastmod: new Date()
54 }))
55 .build(function(err){
56 if (err) {
57 return done(err);
58 }
59 equal('test/fixtures/frontmatter/expected', 'test/fixtures/frontmatter/build');
60 done();
61 });
62 });
63
64 it('should allow the sitemap\'s location to be changed', function(done){
65 Metalsmith('test/fixtures/output')
66 .use(sitemap({
67 hostname: 'http://www.website.com/',
68 output: 'mapsite.xml'
69 }))
70 .build(function(err){
71 if (err) {
72 return done(err);
73 }
74 equal('test/fixtures/output/expected', 'test/fixtures/output/build');
75 done();
76 });
77 });
78
79 it('should accept a pattern', function(done){
80 Metalsmith('test/fixtures/pattern')
81 .use(sitemap({
82 hostname: 'http://www.website.com/',
83 pattern: ['**/*.html', '**/*.hbs']
84 }))
85 .build(function(err){
86 if (err) {
87 return done(err);
88 }
89 equal('test/fixtures/pattern/expected', 'test/fixtures/pattern/build');
90 done();
91 });
92 });
93
94 it('should allow a canonical url to be set', function(done){
95 Metalsmith('test/fixtures/canonical')
96 .use(sitemap('http://www.website.com/'))
97 .build(function(err){
98 if (err) {
99 return done(err);
100 }
101 equal('test/fixtures/canonical/expected', 'test/fixtures/canonical/build');
102 done();
103 });
104 });
105
106 it('should allow lastmod to be set', function(done){
107 Metalsmith('test/fixtures/lastmod')
108 .use(sitemap({
109 hostname: 'http://www.website.com/',
110 lastmod: new Date('1995-12-17T12:24:00')
111 }))
112 .build(function(err){
113 if (err) {
114 return done(err);
115 }
116 equal('test/fixtures/lastmod/expected', 'test/fixtures/lastmod/build');
117 done();
118 });
119 });
120
121 it('should allow a canonical url, lastmod and priority to be set from custom property', function(done){
122 Metalsmith('test/fixtures/custom-frontmatter')
123 .use(sitemap({
124 hostname: 'http://www.website.com',
125 modifiedProperty: 'lastModified',
126 urlProperty: 'seo.canonical',
127 priorityProperty: 'order'
128 }))
129 .build(function(err){
130 if (err) {
131 return done(err);
132 }
133 equal('test/fixtures/custom-frontmatter/expected', 'test/fixtures/custom-frontmatter/build');
134 done();
135 });
136 });
137
138 it('should be able to omit extensions', function(done){
139 Metalsmith('test/fixtures/omitExtension')
140 .use(sitemap({
141 hostname: 'http://www.website.com/',
142 omitExtension: true
143 }))
144 .build(function(err){
145 if (err) {
146 return done(err);
147 }
148 equal('test/fixtures/omitExtension/expected', 'test/fixtures/omitExtension/build');
149 done();
150 });
151 });
152
153 it('should be able to omit index.html', function(done){
154 Metalsmith('test/fixtures/omitIndex')
155 .use(sitemap({
156 hostname: 'http://www.website.com/',
157 omitIndex: true
158 }))
159 .build(function(err){
160 if (err) {
161 return done(err);
162 }
163 equal('test/fixtures/omitIndex/expected', 'test/fixtures/omitIndex/build');
164 done();
165 });
166 });
167
168 it('should ignore files marked as private', function(done){
169 Metalsmith('test/fixtures/private')
170 .use(sitemap('http://www.website.com/'))
171 .build(function(err){
172 if (err) {
173 return done(err);
174 }
175 equal('test/fixtures/private/expected', 'test/fixtures/private/build');
176 done();
177 });
178 });
179
180 it('should handle files with links', function(done){
181 Metalsmith('test/fixtures/links')
182 .use(sitemap({
183 hostname: 'http://www.website.com/',
184 links: 'links'
185 }))
186 .build(function(err){
187 if (err) {
188 return done(err);
189 }
190 equal('test/fixtures/links/expected', 'test/fixtures/links/build');
191 done();
192 });
193 });
194
195 it('should replace win32 backslash by slash', function(done){
196 Metalsmith('test/fixtures/win32-backslash')
197 .use(sitemap('http://www.website.com/'))
198 .build(function(err){
199 if (err) {
200 return done(err);
201 }
202 equal('test/fixtures/win32-backslash/expected', 'test/fixtures/win32-backslash/build');
203 done();
204 });
205 });
206});