100 lines
3.9 KiB
JavaScript
100 lines
3.9 KiB
JavaScript
import { module, test } from 'qunit';
|
|
import EmberObject from '@ember/object';
|
|
import contributionGroupingKey from 'kredits-web/utils/contribution-grouping-key';
|
|
|
|
function makeContribution (attrs) {
|
|
return EmberObject.create(attrs);
|
|
}
|
|
|
|
const baseAttrs = {
|
|
url: 'https://github.com/67P/kredits-contracts/pull/196',
|
|
description: 'Chore/dependency updates',
|
|
date: '2020-05-27',
|
|
amount: 1500,
|
|
kind: 'dev'
|
|
};
|
|
|
|
module('Unit | Utils | contribution-grouping-key', function() {
|
|
|
|
test('returns a 6-char hex string when all fields are present', function(assert) {
|
|
const c = makeContribution(baseAttrs);
|
|
const key = contributionGroupingKey(c);
|
|
assert.equal(key.length, 6, '6 chars');
|
|
assert.ok(/^[0-9a-f]{6}$/.test(key), 'is lowercase hex: ' + key);
|
|
});
|
|
|
|
test('returns the same key for identical contributions with url', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution(baseAttrs);
|
|
assert.equal(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns the same key for identical contributions without url', function(assert) {
|
|
const attrs = { ...baseAttrs, url: null };
|
|
const a = makeContribution(attrs);
|
|
const b = makeContribution(attrs);
|
|
assert.equal(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys when url differs', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution({ ...baseAttrs, url: 'https://github.com/67P/kredits-contracts/pull/197' });
|
|
assert.notEqual(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys when amount differs', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution({ ...baseAttrs, amount: 5000 });
|
|
assert.notEqual(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys when kind differs', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution({ ...baseAttrs, kind: 'ops' });
|
|
assert.notEqual(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys when description differs', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution({ ...baseAttrs, description: 'Something else' });
|
|
assert.notEqual(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys when date differs', function(assert) {
|
|
const a = makeContribution(baseAttrs);
|
|
const b = makeContribution({ ...baseAttrs, date: '2020-05-28' });
|
|
assert.notEqual(contributionGroupingKey(a), contributionGroupingKey(b));
|
|
});
|
|
|
|
test('returns different keys for url vs no-url with otherwise identical fields', function(assert) {
|
|
const withUrl = makeContribution(baseAttrs);
|
|
const withoutUrl = makeContribution({ ...baseAttrs, url: null });
|
|
assert.notEqual(contributionGroupingKey(withUrl), contributionGroupingKey(withoutUrl));
|
|
});
|
|
|
|
test('returns null when description is missing', function(assert) {
|
|
const c = makeContribution({ ...baseAttrs, description: null });
|
|
assert.equal(contributionGroupingKey(c), null);
|
|
});
|
|
|
|
test('returns null when date is missing', function(assert) {
|
|
const c = makeContribution({ ...baseAttrs, date: null });
|
|
assert.equal(contributionGroupingKey(c), null);
|
|
});
|
|
|
|
test('returns null when amount is missing', function(assert) {
|
|
const c = makeContribution({ ...baseAttrs, amount: null });
|
|
assert.equal(contributionGroupingKey(c), null);
|
|
});
|
|
|
|
test('returns null when kind is missing', function(assert) {
|
|
const c = makeContribution({ ...baseAttrs, kind: null });
|
|
assert.equal(contributionGroupingKey(c), null);
|
|
});
|
|
|
|
test('returns null when contribution is null/undefined', function(assert) {
|
|
assert.equal(contributionGroupingKey(null), null);
|
|
assert.equal(contributionGroupingKey(undefined), null);
|
|
});
|
|
});
|