Add option to merge extracted strings with existing translations (Thanks to @ocombe)

This commit is contained in:
Kim Biesbjerg
2016-12-09 19:29:48 +01:00
parent 59ef277c64
commit 6a76e7b5cb
20 changed files with 301 additions and 242 deletions

View File

@@ -1,54 +0,0 @@
import { expect } from 'chai';
import { StringCollection } from '../../src/utils/string.collection';
describe('StringCollection', () => {
let collection: StringCollection;
beforeEach(() => {
collection = new StringCollection();
});
it('should add item with value', () => {
collection.add('key', 'translation');
expect(collection.get('key')).to.equal('translation');
});
it('should add item with default value', () => {
collection.add('key');
expect(collection.get('key')).to.equal('');
});
it('should add array of items with default values', () => {
collection.add(['key', 'key2']);
expect(collection.count()).to.equal(2);
});
it('should remove item', () => {
collection.add('key1').add('key2').remove('key1');
expect(collection.count()).to.equal(1);
});
it('should return number of items', () => {
collection.add('key1').add('key2');
expect(collection.count()).to.equal(2);
});
it('should initialize with array of keys', () => {
const newCollection = StringCollection.fromArray(['Hello', 'World']);
expect(newCollection.count()).to.equal(2);
});
it('should initialize with key/value pairs', () => {
const newCollection = StringCollection.fromObject({'key': 'translation'});
expect(newCollection.get('key')).to.equal('translation');
});
it('should merge with other collection', () => {
collection.add('Hello');
const newCollection = StringCollection.fromArray(['World']);
expect(collection.merge(newCollection).count()).to.equal(2);
});
});

View File

@@ -0,0 +1,82 @@
import { expect } from 'chai';
import { TranslationCollection } from '../../src/utils/translation.collection';
describe('StringCollection', () => {
let collection: TranslationCollection;
beforeEach(() => {
collection = new TranslationCollection();
});
it('should initialize with key/value pairs', () => {
collection = new TranslationCollection({ key1: 'val1', key2: 'val2' });
expect(collection.values).to.deep.equal({ key1: 'val1', key2: 'val2' });
});
it('should add key with value', () => {
const newCollection = collection.add('theKey', 'theVal');
expect(newCollection.get('theKey')).to.equal('theVal');
});
it('should add key with default value', () => {
collection = collection.add('theKey');
expect(collection.get('theKey')).to.equal('');
});
it('should not mutate collection when adding key', () => {
collection.add('theKey', 'theVal');
expect(collection.has('theKey')).to.equal(false);
});
it('should add array of keys with default value', () => {
collection = collection.addKeys(['key1', 'key2']);
expect(collection.values).to.deep.equal({ key1: '', key2: '' });
});
it('should return true when collection has key', () => {
collection = collection.add('key');
expect(collection.has('key')).to.equal(true);
});
it('should return false when collection does not have key', () => {
expect(collection.has('key')).to.equal(false);
});
it('should remove key', () => {
collection = new TranslationCollection({ removeThisKey: '' });
collection = collection.remove('removeThisKey');
expect(collection.has('removeThisKey')).to.equal(false);
});
it('should not mutate collection when removing key', () => {
collection = new TranslationCollection({ removeThisKey: '' });
collection.remove('removeThisKey');
expect(collection.has('removeThisKey')).to.equal(true);
});
it('should return number of keys', () => {
collection = collection.addKeys(['key1', 'key2', 'key3']);
expect(collection.count()).to.equal(3);
});
it('should merge with other collection', () => {
collection = collection.add('oldKey', 'oldVal');
const newCollection = new TranslationCollection({ newKey: 'newVal' });
expect(collection.union(newCollection).values).to.deep.equal({ oldKey: 'oldVal', newKey: 'newVal' });
});
it('should intersect with passed collection', () => {
collection = collection.addKeys(['red', 'green', 'blue']);
const newCollection = new TranslationCollection( { red: '', blue: '' });
expect(collection.intersect(newCollection).values).to.deep.equal({ red: '', blue: '' });
});
it('should intersect with passed collection and keep original values', () => {
collection = new TranslationCollection({ red: 'rød', blue: 'blå' });
const newCollection = new TranslationCollection({ red: 'no value', blue: 'also no value' });
expect(collection.intersect(newCollection).values).to.deep.equal({ red: 'rød', blue: 'blå' });
});
});