UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

127 lines 6.92 kB
import 'should'; import config from 'config'; import WBEdit from '../../src/lib/index.js'; import { randomString } from '../unit/utils.js'; import { getProperty } from './utils/get_property.js'; import { getSandboxItemId, getSandboxPropertyId, createItem } from './utils/sandbox_entities.js'; import { addClaim, addQualifier } from './utils/sandbox_snaks.js'; import { getLastEditSummary } from './utils/utils.js'; import { waitForInstance } from './utils/wait_for_instance.js'; const { instance, credentials } = config; const params = summary => ({ summary, labels: { en: randomString() } }); describe('summary', function () { this.timeout(20 * 1000); before('wait for instance', waitForInstance); it('should not add a default summary', async () => { const wbEdit = WBEdit({ instance, credentials }); const editSummary = await postAndGetEditSummary(wbEdit); editSummary.should.endWith(' */'); }); it('should accept a custom summary in config', async () => { const summary = 'some custom summary'; const customConfig = Object.assign({ instance, credentials, summary }); const wbEdit = WBEdit(customConfig); const editSummary = await postAndGetEditSummary(wbEdit); editSummary.should.endWith(` */ ${summary}`); }); it('should accept a custom summary in the request config', async () => { const summary = 'another custom summary'; const wbEdit = WBEdit({ instance, credentials, summary: 'global summary' }); const editSummary = await postAndGetEditSummary(wbEdit, { summary }); editSummary.should.endWith(` */ ${summary}`); }); it('should not re-use the previous summary', async () => { const summary = 'another custom summary'; const wbEdit = WBEdit({ instance, credentials }); const editSummary = await postAndGetEditSummary(wbEdit, { summary }); editSummary.should.endWith(` */ ${summary}`); const editSummary2 = await postAndGetEditSummary(wbEdit); editSummary2.should.endWith(' */'); }); it('should accept a custom summary in the edit object', async () => { const summary = 'and yet another one'; const wbEdit = WBEdit({ instance, credentials, summary: 'global summary' }); const editSummary = await postAndGetEditSummary(wbEdit, {}, summary); editSummary.should.endWith(` */ ${summary}`); }); describe('request wrapper commands', () => { it('should accept a custom summary in commands object', async () => { const id = await getSandboxItemId(); const value = `Bac à Sable (${randomString()})`; const summary = randomString(); const wbEdit = WBEdit({ instance, credentials, summary: 'global summary' }); await wbEdit.label.set({ id, language: 'la', value, summary }); const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); }); describe('bundle wrapper commands', () => { const wbEdit = WBEdit({ instance, credentials, summary: 'global summary' }); it('should pass a summary in claim.create', async () => { const [id, property] = await Promise.all([ getSandboxItemId(), getSandboxPropertyId('string'), ]); const value = randomString(); const summary = randomString(); await wbEdit.claim.create({ id, property, value, summary }); const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); it('should pass a summary in claim.update', async () => { const oldValue = randomString(); const newValue = randomString(); const summary = randomString(); const { id, property } = await addClaim({ datatype: 'string', value: oldValue }); await wbEdit.claim.update({ id, property, oldValue, newValue, summary }); const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); it('should pass a summary in claim.move targeting a single entity', async () => { const { id } = await createItem(); const { guid } = await addClaim({ id, datatype: 'string', value: randomString() }); const { id: otherStringPropertyId } = await getProperty({ datatype: 'string', reserved: true }); const summary = randomString(); await wbEdit.claim.move({ guid, id, property: otherStringPropertyId, summary }); const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); it('should pass a summary in claim.move targeting a multiple entities', async () => { const [{ id: idA }, { id: idB }] = await Promise.all([createItem(), createItem()]); const { property, guid } = await addClaim({ id: idA, datatype: 'string', value: randomString() }); const summary = randomString(); await wbEdit.claim.move({ guid, id: idB, property, summary }); const commentA = await getLastEditSummary(idA); commentA.should.endWith(summary); const commentB = await getLastEditSummary(idA); commentB.should.endWith(summary); }); it('should pass a summary in qualifier.update', async () => { const oldValue = randomString(); const newValue = randomString(); const { guid, property } = await addQualifier({ datatype: 'string', value: oldValue }); const summary = randomString(); await wbEdit.qualifier.update({ guid, property, oldValue, newValue, summary }); const id = guid.split('$')[0]; const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); it('should pass a summary in qualifier.move', async () => { const [valueA, valueB] = [randomString(), randomString()]; const { id: oldProperty } = await getProperty({ datatype: 'string', reserved: true }); const { guid, hash } = await addQualifier({ property: oldProperty, value: valueA }); await addQualifier({ guid, property: oldProperty, value: valueB }); const { id: newProperty } = await getProperty({ datatype: 'string', reserved: true }); const summary = randomString(); await wbEdit.qualifier.move({ guid, hash, oldProperty, newProperty, summary }); const id = guid.split('$')[0]; const comment = await getLastEditSummary(id); comment.should.endWith(summary); }); }); }); function postAndGetEditSummary(wbEdit, reqConfig, paramsArg) { return wbEdit.entity.create(params(paramsArg), reqConfig) .then(getLastEditSummary); } //# sourceMappingURL=summary.js.map