mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
|
import {assert} from 'chai';
|
||
|
import {ColumnsToMap, mapColumnNames, mapColumnNamesBack} from 'app/plugin/grist-plugin-api';
|
||
|
|
||
|
describe('PluginApi', function () {
|
||
|
it('should map columns according to configuration', function () {
|
||
|
const columns: ColumnsToMap = ['Foo', {name: 'Bar', allowMultiple: true}, {name: 'Baz', optional: true}];
|
||
|
let mappings: any = {Foo: null, Bar: ['A', 'B'], Baz: null};
|
||
|
const record = {A: 1, B: 2, id: 1};
|
||
|
// When there are not mappings, it should return original data.
|
||
|
assert.deepEqual(
|
||
|
record,
|
||
|
mapColumnNames(record)
|
||
|
);
|
||
|
assert.deepEqual(
|
||
|
record,
|
||
|
mapColumnNamesBack(record)
|
||
|
);
|
||
|
// Foo is not mapped, should be null.
|
||
|
assert.isNull(
|
||
|
mapColumnNames(record, {
|
||
|
mappings,
|
||
|
columns,
|
||
|
})
|
||
|
);
|
||
|
assert.isNull(
|
||
|
mapColumnNames([record], {
|
||
|
mappings,
|
||
|
columns,
|
||
|
})
|
||
|
);
|
||
|
// Map Foo to A
|
||
|
mappings = {...mappings, Foo: 'A'};
|
||
|
// Should map as Foo is mapped
|
||
|
assert.deepEqual(mapColumnNames(record, {mappings, columns}), {id: 1, Foo: 1, Bar: [1, 2]});
|
||
|
assert.deepEqual(mapColumnNames([record], {mappings, columns}), [{id: 1, Foo: 1, Bar: [1, 2]}]);
|
||
|
assert.deepEqual(mapColumnNamesBack([{id: 1, Foo: 1, Bar: [1, 2]}], {mappings, columns}), [record]);
|
||
|
// Map Baz
|
||
|
mappings = {...mappings, Baz: 'B'};
|
||
|
assert.deepEqual(mapColumnNames(record, {mappings, columns}), {id: 1, Foo: 1, Bar: [1, 2], Baz: 2});
|
||
|
assert.deepEqual(mapColumnNames([record], {mappings, columns}), [{id: 1, Foo: 1, Bar: [1, 2], Baz: 2}]);
|
||
|
assert.deepEqual(mapColumnNamesBack([{id: 1, Foo: 1, Bar: [1, 2], Baz: 5}], {mappings, columns}),
|
||
|
[{id: 1, A: 1, B: 5}]);
|
||
|
});
|
||
|
it('should ignore when there are not mappings requested', function () {
|
||
|
const columns: ColumnsToMap|undefined = undefined;
|
||
|
const mappings: any = undefined;
|
||
|
const record = {A: 1, B: 2, id: 1};
|
||
|
assert.deepEqual(
|
||
|
mapColumnNames(record, {
|
||
|
mappings,
|
||
|
columns,
|
||
|
}),
|
||
|
record
|
||
|
);
|
||
|
});
|
||
|
});
|