UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

93 lines 4.13 kB
import 'should'; import config from 'config'; import { setQualifier as _setQualifier } from '../../../src/lib/qualifier/set.js'; import { guid, hash, properties } from '../utils.js'; const { instance } = config; const setQualifier = params => _setQualifier(params, properties, instance); describe('qualifier set', () => { it('should rejected if not passed a claim guid', () => { setQualifier.bind(null, {}).should.throw('missing guid'); }); it('should rejected if passed an invalid claim guid', () => { const params = { guid: 'some-invalid-guid' }; setQualifier.bind(null, params).should.throw('invalid guid'); }); it('should rejected if not passed a property id', () => { const params = { guid }; setQualifier.bind(null, params).should.throw('missing property id'); }); it('should rejected if not passed a value', () => { const params = { guid, property: 'P2' }; setQualifier.bind(null, params).should.throw('missing snak value'); }); it('should rejected if passed an invalid value', () => { const params = { guid, property: 'P2', value: 'not-a-valid-value' }; setQualifier.bind(null, params).should.throw('invalid entity value'); }); it('should rejected if passed an hash', () => { const params = { guid, hash: 'foo', property: 'P2', value: 'Q123' }; setQualifier.bind(null, params).should.throw('invalid hash'); }); it('should set the hash', () => { const params = { guid, hash, property: 'P2', value: 'Q123' }; setQualifier(params).data.snakhash.should.equal(hash); }); it('should set the action to wbsetreference', () => { const params = { guid, property: 'P2', value: 'Q123' }; setQualifier(params).action.should.equal('wbsetqualifier'); }); it('should format the data for a string', () => { const params = { guid, property: 'P1', value: '123' }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P1', snaktype: 'value', value: '"123"', }); }); it('should set a time qualifier', () => { const params = { guid, property: 'P4', value: '1802-02' }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P4', snaktype: 'value', value: '{"time":"+1802-02-00T00:00:00Z","timezone":0,"before":0,"after":0,"precision":10,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"}', }); }); it('should set a time qualifier with precision', () => { const params = { guid, property: 'P4', value: { time: '1802-02', precision: 10 } }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P4', snaktype: 'value', value: '{"time":"+1802-02-00T00:00:00Z","timezone":0,"before":0,"after":0,"precision":10,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"}', }); }); it('should set a quantity qualifier', () => { const params = { guid, property: 'P8', value: { amount: 123, unit: 'Q4916' } }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P8', snaktype: 'value', value: `{"amount":"+123","unit":"${instance.replace('https:', 'http:')}/entity/Q4916"}`, }); }); it('should set a monolingualtext qualifier', () => { const params = { guid, property: 'P9', value: { text: 'foo', language: 'fr' } }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P9', snaktype: 'value', value: '{"text":"foo","language":"fr"}', }); }); it('should set a qualifier with a special snaktype', () => { const params = { guid, property: 'P4', value: { snaktype: 'novalue' } }; setQualifier(params).data.should.deepEqual({ claim: guid, property: 'P4', snaktype: 'novalue', }); }); }); //# sourceMappingURL=set.js.map