1 | var assert = require('assert');
|
2 | var equal = require('assert-dir-equal');
|
3 | var Metalsmith = require('metalsmith');
|
4 | var sitemap = require('..');
|
5 |
|
6 | describe('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 | });
|