generated from Seekra/repository-template
Compare commits
26 Commits
c42d650302
...
7d15d29409
| Author | SHA1 | Date | |
|---|---|---|---|
|
7d15d29409
|
|||
|
8ce315e1c7
|
|||
|
33dfee951a
|
|||
|
80bc8339ed
|
|||
|
12f9d85841
|
|||
|
a78fa93b51
|
|||
|
06c5e9b2c1
|
|||
|
bf3e6b2e2e
|
|||
|
b58ee95ad2
|
|||
|
093d5840fc
|
|||
|
352bd5baf5
|
|||
|
2117c28606
|
|||
|
7f01a807b9
|
|||
|
a7babaf94b
|
|||
|
a14318c4c5
|
|||
|
c3c7fdb945
|
|||
|
1418e52cbf
|
|||
|
2d3d2457cf
|
|||
|
6c12550ee7
|
|||
|
9ec2d7fd6f
|
|||
|
975e84be46
|
|||
|
a365322a5b
|
|||
|
67fc878575
|
|||
|
008e38e54a
|
|||
|
a0d592d26e
|
|||
|
0b6adfa41d
|
@@ -0,0 +1,122 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2026 Seekra
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { expect, test } from 'vitest';
|
||||||
|
import { ensureUnit } from '../cssDimensions';
|
||||||
|
|
||||||
|
test.for([
|
||||||
|
{ dimension: null, expected: '0px' },
|
||||||
|
{ dimension: undefined, expected: '0px' },
|
||||||
|
|
||||||
|
{ dimension: 0, expected: '0px' },
|
||||||
|
{ dimension: -0, expected: '0px' },
|
||||||
|
{ dimension: -1, expected: '-1px' },
|
||||||
|
{ dimension: -42, expected: '-42px' },
|
||||||
|
{ dimension: 1, expected: '1px' },
|
||||||
|
{ dimension: 42, expected: '42px' },
|
||||||
|
|
||||||
|
{ dimension: 0.0, expected: '0px' },
|
||||||
|
{ dimension: -0.0, expected: '0px' },
|
||||||
|
{ dimension: -1.0, expected: '-1px' },
|
||||||
|
{ dimension: -42.0, expected: '-42px' },
|
||||||
|
{ dimension: 1.0, expected: '1px' },
|
||||||
|
{ dimension: 42.0, expected: '42px' },
|
||||||
|
|
||||||
|
{ dimension: 0.42, expected: '0.42px' },
|
||||||
|
{ dimension: -0.42, expected: '-0.42px' },
|
||||||
|
{ dimension: -1.42, expected: '-1.42px' },
|
||||||
|
{ dimension: -42.42, expected: '-42.42px' },
|
||||||
|
{ dimension: 1.42, expected: '1.42px' },
|
||||||
|
{ dimension: 42.42, expected: '42.42px' },
|
||||||
|
|
||||||
|
{ dimension: '0', expected: '0px' },
|
||||||
|
{ dimension: '-0', expected: '-0px' },
|
||||||
|
{ dimension: '-1', expected: '-1px' },
|
||||||
|
{ dimension: '-42', expected: '-42px' },
|
||||||
|
{ dimension: '1', expected: '1px' },
|
||||||
|
{ dimension: '42', expected: '42px' },
|
||||||
|
|
||||||
|
{ dimension: '0.0', expected: '0.0px' },
|
||||||
|
{ dimension: '-0.0', expected: '-0.0px' },
|
||||||
|
{ dimension: '-1.0', expected: '-1.0px' },
|
||||||
|
{ dimension: '-42.0', expected: '-42.0px' },
|
||||||
|
{ dimension: '1.0', expected: '1.0px' },
|
||||||
|
{ dimension: '42.0', expected: '42.0px' },
|
||||||
|
|
||||||
|
{ dimension: '0.42', expected: '0.42px' },
|
||||||
|
{ dimension: '-0.42', expected: '-0.42px' },
|
||||||
|
{ dimension: '-1.42', expected: '-1.42px' },
|
||||||
|
{ dimension: '-42.42', expected: '-42.42px' },
|
||||||
|
{ dimension: '1.42', expected: '1.42px' },
|
||||||
|
{ dimension: '42.42', expected: '42.42px' },
|
||||||
|
|
||||||
|
{ dimension: '0px', expected: '0px' },
|
||||||
|
{ dimension: '-0px', expected: '-0px' },
|
||||||
|
{ dimension: '-1px', expected: '-1px' },
|
||||||
|
{ dimension: '-42px', expected: '-42px' },
|
||||||
|
{ dimension: '1px', expected: '1px' },
|
||||||
|
{ dimension: '42px', expected: '42px' },
|
||||||
|
|
||||||
|
{ dimension: '0.0px', expected: '0.0px' },
|
||||||
|
{ dimension: '-0.0px', expected: '-0.0px' },
|
||||||
|
{ dimension: '-1.0px', expected: '-1.0px' },
|
||||||
|
{ dimension: '-42.0px', expected: '-42.0px' },
|
||||||
|
{ dimension: '1.0px', expected: '1.0px' },
|
||||||
|
{ dimension: '42.0px', expected: '42.0px' },
|
||||||
|
|
||||||
|
{ dimension: '0.42px', expected: '0.42px' },
|
||||||
|
{ dimension: '-0.42px', expected: '-0.42px' },
|
||||||
|
{ dimension: '-1.42px', expected: '-1.42px' },
|
||||||
|
{ dimension: '-42.42px', expected: '-42.42px' },
|
||||||
|
{ dimension: '1.42px', expected: '1.42px' },
|
||||||
|
{ dimension: '42.42px', expected: '42.42px' },
|
||||||
|
|
||||||
|
{ dimension: '0em', expected: '0em' },
|
||||||
|
{ dimension: '-0em', expected: '-0em' },
|
||||||
|
{ dimension: '-1em', expected: '-1em' },
|
||||||
|
{ dimension: '-42em', expected: '-42em' },
|
||||||
|
{ dimension: '1em', expected: '1em' },
|
||||||
|
{ dimension: '42em', expected: '42em' },
|
||||||
|
|
||||||
|
{ dimension: '0.0em', expected: '0.0em' },
|
||||||
|
{ dimension: '-0.0em', expected: '-0.0em' },
|
||||||
|
{ dimension: '-1.0em', expected: '-1.0em' },
|
||||||
|
{ dimension: '-42.0em', expected: '-42.0em' },
|
||||||
|
{ dimension: '1.0em', expected: '1.0em' },
|
||||||
|
{ dimension: '42.0em', expected: '42.0em' },
|
||||||
|
|
||||||
|
{ dimension: '0.42em', expected: '0.42em' },
|
||||||
|
{ dimension: '-0.42em', expected: '-0.42em' },
|
||||||
|
{ dimension: '-1.42em', expected: '-1.42em' },
|
||||||
|
{ dimension: '-42.42em', expected: '-42.42em' },
|
||||||
|
{ dimension: '1.42em', expected: '1.42em' },
|
||||||
|
{ dimension: '42.42em', expected: '42.42em' },
|
||||||
|
|
||||||
|
{ dimension: 'calc(42px - 1em)', expected: 'calc(42px - 1em)' },
|
||||||
|
{ dimension: 'calc(42px)', expected: 'calc(42px)' },
|
||||||
|
{ dimension: 'calc(42vh)', expected: 'calc(42vh)' },
|
||||||
|
{ dimension: 'min(42px, 1em)', expected: 'min(42px, 1em)' },
|
||||||
|
{ dimension: 'max(42px, 5rem)', expected: 'max(42px, 5rem)' },
|
||||||
|
{ dimension: 'clamp(42vh, 23vw, 13cap)', expected: 'clamp(42vh, 23vw, 13cap)' },
|
||||||
|
|
||||||
|
{ dimension: 'calc(42px-1em)', expected: 'calc(42px-1em)' },
|
||||||
|
{ dimension: 'min(42px,1em)', expected: 'min(42px,1em)' },
|
||||||
|
{ dimension: 'max(42px,5rem)', expected: 'max(42px,5rem)' },
|
||||||
|
{ dimension: 'clamp(42vh,23vw,13cap)', expected: 'clamp(42vh,23vw,13cap)' },
|
||||||
|
{ dimension: 'clamp( 42vh,23vw,13cap )', expected: 'clamp( 42vh,23vw,13cap )' }
|
||||||
|
])('ensureUnit returns $expected with input $dimension', ({ dimension, expected }) => {
|
||||||
|
expect(ensureUnit(dimension)).toBe(expected);
|
||||||
|
});
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2026 Seekra
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { expect, test } from 'vitest';
|
||||||
|
import getCurrentLanguage from '../currentLanguage';
|
||||||
|
|
||||||
|
const locales = [
|
||||||
|
{ navigatorLanguage: 'en', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'de', localStorageLanguage: null, expected: 'de'},
|
||||||
|
{ navigatorLanguage: 'fr', localStorageLanguage: null, expected: 'fr'},
|
||||||
|
|
||||||
|
{ navigatorLanguage: 'en-US', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'en-AU', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'de-DE', localStorageLanguage: null, expected: 'de'},
|
||||||
|
{ navigatorLanguage: 'fr-FR', localStorageLanguage: null, expected: 'fr'},
|
||||||
|
|
||||||
|
{ navigatorLanguage: 'en-us', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'en-au', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'de-de', localStorageLanguage: null, expected: 'de'},
|
||||||
|
{ navigatorLanguage: 'fr-fr', localStorageLanguage: null, expected: 'fr'},
|
||||||
|
|
||||||
|
{ navigatorLanguage: 'zh-Hans-CN', localStorageLanguage: null, expected: 'zh'},
|
||||||
|
{ navigatorLanguage: 'zh-Hant-TW', localStorageLanguage: null, expected: 'zh'},
|
||||||
|
{ navigatorLanguage: 'uz-Latn-UZ', localStorageLanguage: null, expected: 'uz'},
|
||||||
|
|
||||||
|
{ navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: null, expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'de-DE-u-co-phonebk', localStorageLanguage: null, expected: 'de'},
|
||||||
|
{ navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', localStorageLanguage: null, expected: 'zh'},
|
||||||
|
|
||||||
|
{ navigatorLanguage: 'en', localStorageLanguage: 'de', expected: 'de'},
|
||||||
|
{ navigatorLanguage: 'de-DE', localStorageLanguage: 'en', expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'de-de', localStorageLanguage: 'en', expected: 'en'},
|
||||||
|
{ navigatorLanguage: 'zh-Hans-CN', localStorageLanguage: 'fr', expected: 'fr'},
|
||||||
|
{ navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: 'zh', expected: 'zh'}
|
||||||
|
];
|
||||||
|
|
||||||
|
test.for(locales)('returns the language $expected (navigator: $navigatorLanguage; local storage: $localStorageLanguage)', ({ navigatorLanguage, localStorageLanguage, expected }) => {
|
||||||
|
Object.defineProperty(navigator, 'language', {
|
||||||
|
value: navigatorLanguage,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
if (localStorageLanguage) {
|
||||||
|
localStorage.setItem('locale', localStorageLanguage);
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(getCurrentLanguage()).toBe(expected);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user