- web/: Vue 3 + Vite + UnoCSS + Pinia, dark tactical theme (amber/#0d1117) - AppNav, ListingCard, SearchView with filters/sort, composables (useSnipeMode, useKonamiCode, useMotion), Pinia search store - Steal shimmer, auction countdown, Snipe Mode easter egg all native in Vue - docker/web/: nginx + multi-stage Dockerfile (node build → nginx serve) - compose.yml: api (8510) + web (8509) services - Dockerfile CMD updated to uvicorn for upcoming FastAPI layer - Clean build: 0 TS errors, 380 modules
128 lines
No EOL
3.3 KiB
JavaScript
128 lines
No EOL
3.3 KiB
JavaScript
/* global describe,it */
|
|
|
|
var getSlug = require('../lib/speakingurl');
|
|
|
|
describe('getSlug rfc3986', function () {
|
|
'use strict';
|
|
|
|
it('"uric" characters allowed', function (done) {
|
|
|
|
var chars = [';', '?', ':', '@', '&', '=', '+', ',', '/'];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
uric: true
|
|
})
|
|
.should.eql("foo-" + chars[i] + "-bar-baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"uricNoSlash" characters allowed', function (done) {
|
|
|
|
var chars = [';', '?', ':', '@', '&', '=', '+', ','];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
uricNoSlash: true
|
|
})
|
|
.should.eql("foo-" + chars[i] + "-bar-baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"mark" characters allowed', function (done) {
|
|
|
|
var chars = ['.', '!', '~', '*', '\'', '(', ')'];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
mark: true
|
|
})
|
|
.should.eql("foo-" + chars[i] + "-bar-baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"uric" characters allowed, separator ";"', function (done) {
|
|
|
|
var chars = ['?', ':', '@', '&', '=', '+', ',', '/'];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
uric: true,
|
|
separator: ';'
|
|
})
|
|
.should.eql("foo;" + chars[i] + ";bar;baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"uric" characters allowed, separator ";" included in input string', function (done) {
|
|
|
|
getSlug("foo ; bar baz", {
|
|
uric: true,
|
|
separator: ';'
|
|
})
|
|
.should.eql("foo;bar;baz");
|
|
|
|
done();
|
|
});
|
|
|
|
it('"uricNoSlash" characters allowed, separator ";"', function (done) {
|
|
|
|
var chars = ['?', ':', '@', '&', '=', '+', ','];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
uricNoSlash: true,
|
|
separator: ';'
|
|
})
|
|
.should.eql("foo;" + chars[i] + ";bar;baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"uricNoSlash" characters allowed, separator ";" included in input string', function (done) {
|
|
|
|
getSlug("foo ; bar baz", {
|
|
uric: true,
|
|
separator: ';'
|
|
})
|
|
.should.eql("foo;bar;baz");
|
|
|
|
done();
|
|
});
|
|
|
|
it('"mark" characters allowed, separator "."', function (done) {
|
|
|
|
var chars = ['!', '~', '*', '\'', '(', ')'];
|
|
|
|
for (var i = 0; i < chars.length; i++) {
|
|
getSlug("foo " + chars[i] + " bar baz", {
|
|
mark: true,
|
|
separator: '.'
|
|
})
|
|
.should.eql("foo." + chars[i] + ".bar.baz");
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('"mark" characters allowed, separator "." included in input string', function (done) {
|
|
|
|
getSlug("foo . bar baz", {
|
|
uric: true,
|
|
separator: '.'
|
|
})
|
|
.should.eql("foo.bar.baz");
|
|
|
|
done();
|
|
});
|
|
}); |