From 2b63fb725c3c4c2de70cc48f9de618a15422ed08 Mon Sep 17 00:00:00 2001 From: Joxit Date: Mon, 1 May 2023 23:22:48 +0200 Subject: [PATCH] feat(utils): add taglistOrderVariants function to format taglist order --- package.json | 4 +++- src/scripts/utils.js | 19 +++++++++++++++++++ test/utils.test.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 test/utils.test.js diff --git a/package.json b/package.json index 5370fc86..e002059d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "format-riot": "find src rollup rollup.config.js -name '*.riot' -exec prettier --config .prettierrc -w --parser html {} \\;", "start": "rollup -c -w --environment ROLLUP_SERVE:true", "build": "rollup -c", - "build:electron": "npm run build && cd examples/electron && npm install && npm run dist" + "build:electron": "npm run build && cd examples/electron && npm install && npm run dist", + "test": "mocha" }, "repository": { "type": "git", @@ -31,6 +32,7 @@ "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-terser": "^0.2.1", "core-js": "^3.27.1", + "mocha": "^10.2.0", "node-sass": "^8.0.0", "prettier": "^2.8.1", "riot": "^7.1.0", diff --git a/src/scripts/utils.js b/src/scripts/utils.js index 81e4328c..adf33144 100644 --- a/src/scripts/utils.js +++ b/src/scripts/utils.js @@ -220,3 +220,22 @@ export function truthy(value) { export function stringToArray(value) { return value && typeof value === 'string' ? value.split(',') : []; } + +export const taglistOrderVariants = (taglistOrder) => { + switch (taglistOrder) { + case 'desc': + case 'alpha-desc': + return 'alpha-desc;num-desc'; + case 'asc': + case 'num-asc': + return 'num-asc;alpha-asc'; + default: + if (!taglistOrder) { + return 'num-asc;alpha-asc'; + } else if (taglistOrder.indexOf(';') === -1) { + return taglistOrder.startsWith('num-') ? `${taglistOrder};alpha-asc` : `${taglistOrder};num-asc`; + } else { + return taglistOrder; + } + } +}; diff --git a/test/utils.test.js b/test/utils.test.js new file mode 100644 index 00000000..8ff84d16 --- /dev/null +++ b/test/utils.test.js @@ -0,0 +1,34 @@ +import { taglistOrderVariants } from '../src/scripts/utils.js'; +import assert from 'assert'; + +describe('utils tests', () => { + describe('taglistOrderVariants', () => { + it(`should return the input when it's well formed and num first`, () => { + const expected = ['num-asc;alpha-asc', 'num-asc;alpha-desc', 'num-desc;alpha-asc', 'num-desc;alpha-asc']; + expected.forEach( + (e) => assert.deepEqual(taglistOrderVariants(e), e) + ); + }); + + it(`should return the input when it's well formed and alpha first`, () => { + const expected = ['alpha-asc;num-asc', 'alpha-asc;num-desc', 'alpha-desc;num-asc', 'alpha-desc;num-asc']; + expected.forEach( + (e) => assert.deepEqual(taglistOrderVariants(e), e) + ); + }); + + it('should return correct variant of `num-asc;alpha-asc`', () => { + const expected = 'num-asc;alpha-asc'; + ['asc', 'num-asc'].forEach( + (e) => assert.deepEqual(taglistOrderVariants(e), expected) + ); + }); + + it('should return correct variant of `alpha-desc;num-desc`', () => { + const expected = 'alpha-desc;num-desc'; + ['desc', 'alpha-desc'].forEach( + (e) => assert.deepEqual(taglistOrderVariants(e), expected) + ); + }); + }); +});