summaryrefslogtreecommitdiff
path: root/spec/frontend/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-19 22:11:55 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-19 22:11:55 +0000
commit5a8431feceba47fd8e1804d9aa1b1730606b71d5 (patch)
treee5df8e0ceee60f4af8093f5c4c2f934b8abced05 /spec/frontend/lib
parent4d477238500c347c6553d335d920bedfc5a46869 (diff)
downloadgitlab-ce-5a8431feceba47fd8e1804d9aa1b1730606b71d5.tar.gz
Add latest changes from gitlab-org/gitlab@12-5-stable-ee
Diffstat (limited to 'spec/frontend/lib')
-rw-r--r--spec/frontend/lib/utils/chart_utils_spec.js11
-rw-r--r--spec/frontend/lib/utils/datetime_utility_spec.js47
-rw-r--r--spec/frontend/lib/utils/number_utility_spec.js40
-rw-r--r--spec/frontend/lib/utils/text_utility_spec.js13
4 files changed, 108 insertions, 3 deletions
diff --git a/spec/frontend/lib/utils/chart_utils_spec.js b/spec/frontend/lib/utils/chart_utils_spec.js
new file mode 100644
index 00000000000..e811b8405fb
--- /dev/null
+++ b/spec/frontend/lib/utils/chart_utils_spec.js
@@ -0,0 +1,11 @@
+import { firstAndLastY } from '~/lib/utils/chart_utils';
+
+describe('Chart utils', () => {
+ describe('firstAndLastY', () => {
+ it('returns the first and last y-values of a given data set as an array', () => {
+ const data = [['', 1], ['', 2], ['', 3]];
+
+ expect(firstAndLastY(data)).toEqual([1, 3]);
+ });
+ });
+});
diff --git a/spec/frontend/lib/utils/datetime_utility_spec.js b/spec/frontend/lib/utils/datetime_utility_spec.js
index e2e71229320..ee27789b6b9 100644
--- a/spec/frontend/lib/utils/datetime_utility_spec.js
+++ b/spec/frontend/lib/utils/datetime_utility_spec.js
@@ -428,16 +428,57 @@ describe('newDate', () => {
});
describe('getDateInPast', () => {
- const date = new Date(1563235200000); // 2019-07-16T00:00:00.000Z;
+ const date = new Date('2019-07-16T00:00:00.000Z');
const daysInPast = 90;
it('returns the correct date in the past', () => {
const dateInPast = datetimeUtility.getDateInPast(date, daysInPast);
- expect(dateInPast).toBe('2019-04-17T00:00:00.000Z');
+ const expectedDateInPast = new Date('2019-04-17T00:00:00.000Z');
+
+ expect(dateInPast).toStrictEqual(expectedDateInPast);
});
it('does not modifiy the original date', () => {
datetimeUtility.getDateInPast(date, daysInPast);
- expect(date).toStrictEqual(new Date(1563235200000));
+ expect(date).toStrictEqual(new Date('2019-07-16T00:00:00.000Z'));
+ });
+});
+
+describe('getDatesInRange', () => {
+ it('returns an empty array if 1st or 2nd argument is not a Date object', () => {
+ const d1 = new Date('2019-01-01');
+ const d2 = 90;
+ const range = datetimeUtility.getDatesInRange(d1, d2);
+
+ expect(range).toEqual([]);
+ });
+
+ it('returns a range of dates between two given dates', () => {
+ const d1 = new Date('2019-01-01');
+ const d2 = new Date('2019-01-31');
+
+ const range = datetimeUtility.getDatesInRange(d1, d2);
+
+ expect(range.length).toEqual(31);
+ });
+
+ it('applies mapper function if provided fro each item in range', () => {
+ const d1 = new Date('2019-01-01');
+ const d2 = new Date('2019-01-31');
+ const formatter = date => date.getDate();
+
+ const range = datetimeUtility.getDatesInRange(d1, d2, formatter);
+
+ range.forEach((formattedItem, index) => {
+ expect(formattedItem).toEqual(index + 1);
+ });
+ });
+});
+
+describe('secondsToMilliseconds', () => {
+ it('converts seconds to milliseconds correctly', () => {
+ expect(datetimeUtility.secondsToMilliseconds(0)).toBe(0);
+ expect(datetimeUtility.secondsToMilliseconds(60)).toBe(60000);
+ expect(datetimeUtility.secondsToMilliseconds(123)).toBe(123000);
});
});
diff --git a/spec/frontend/lib/utils/number_utility_spec.js b/spec/frontend/lib/utils/number_utility_spec.js
index 381d7c6f8d9..2f8f1092612 100644
--- a/spec/frontend/lib/utils/number_utility_spec.js
+++ b/spec/frontend/lib/utils/number_utility_spec.js
@@ -7,6 +7,8 @@ import {
sum,
isOdd,
median,
+ changeInPercent,
+ formattedChangeInPercent,
} from '~/lib/utils/number_utils';
describe('Number Utils', () => {
@@ -122,4 +124,42 @@ describe('Number Utils', () => {
expect(median(items)).toBe(14.5);
});
});
+
+ describe('changeInPercent', () => {
+ it.each`
+ firstValue | secondValue | expectedOutput
+ ${99} | ${100} | ${1}
+ ${100} | ${99} | ${-1}
+ ${0} | ${99} | ${Infinity}
+ ${2} | ${2} | ${0}
+ ${-100} | ${-99} | ${1}
+ `(
+ 'computes the change between $firstValue and $secondValue in percent',
+ ({ firstValue, secondValue, expectedOutput }) => {
+ expect(changeInPercent(firstValue, secondValue)).toBe(expectedOutput);
+ },
+ );
+ });
+
+ describe('formattedChangeInPercent', () => {
+ it('prepends "%" to the output', () => {
+ expect(formattedChangeInPercent(1, 2)).toMatch(/%$/);
+ });
+
+ it('indicates if the change was a decrease', () => {
+ expect(formattedChangeInPercent(100, 99)).toContain('-1');
+ });
+
+ it('indicates if the change was an increase', () => {
+ expect(formattedChangeInPercent(99, 100)).toContain('+1');
+ });
+
+ it('shows "-" per default if the change can not be expressed in an integer', () => {
+ expect(formattedChangeInPercent(0, 1)).toBe('-');
+ });
+
+ it('shows the given fallback if the change can not be expressed in an integer', () => {
+ expect(formattedChangeInPercent(0, 1, { nonFiniteResult: '*' })).toBe('*');
+ });
+ });
});
diff --git a/spec/frontend/lib/utils/text_utility_spec.js b/spec/frontend/lib/utils/text_utility_spec.js
index b6f1aef9ce4..deb6dab772e 100644
--- a/spec/frontend/lib/utils/text_utility_spec.js
+++ b/spec/frontend/lib/utils/text_utility_spec.js
@@ -90,6 +90,19 @@ describe('text_utility', () => {
});
});
+ describe('convertToSnakeCase', () => {
+ it.each`
+ txt | result
+ ${'snakeCase'} | ${'snake_case'}
+ ${'snake Case'} | ${'snake_case'}
+ ${'snake case'} | ${'snake_case'}
+ ${'snake_case'} | ${'snake_case'}
+ ${'snakeCasesnake Case'} | ${'snake_casesnake_case'}
+ `('converts string $txt to $result string', ({ txt, result }) => {
+ expect(textUtils.convertToSnakeCase(txt)).toEqual(result);
+ });
+ });
+
describe('convertToSentenceCase', () => {
it('converts Sentence Case to Sentence case', () => {
expect(textUtils.convertToSentenceCase('Hello World')).toBe('Hello world');