Page MenuHomeWickedGov Phorge

ve.ui.MWReferenceEditPanel.test.js
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

ve.ui.MWReferenceEditPanel.test.js

'use strict';
{
QUnit.module( 've.ui.MWReferenceEditPanel (Cite)', ve.test.utils.newMwEnvironment() );
/**
* @param {ve.dm.Document} doc
* @return {ve.dm.MWReferenceNode}
*/
const getSimpleNode = ( doc ) => {
const node = new ve.dm.MWReferenceNode( {
type: 'mwReference',
attributes: {
refGroup: 'mwReference/'
},
originalDomElementsHash: Math.random()
} );
node.setDocument( doc );
return node;
};
/**
* @param {ve.dm.MWReferenceNode|null} [node]
* @param {boolean} [reUse=false]
* @return {ve.dm.MWDocumentReferences}
*/
const getDocumentReferencesMock = ( node, reUse ) => ( {
getAllGroupNames: () => [ 'mwReference/' ],
getGroupRefs: () => ( {
getRefUsages: () => ( reUse ? [ node, node ] : [] ),
getInternalModelNode: () => ( node ),
getTotalUsageCount: () => {
const mainRefsCount = reUse ? 2 : 0;
const subRefsCount = reUse ? 1 : 0;
return mainRefsCount + subRefsCount;
}
} )
} );
QUnit.test( 'setting and getting a reference', ( assert ) => {
ve.init.target.surface = { commandRegistry: { getNames: () => [] } };
const editPanel = new ve.ui.MWReferenceEditPanel();
const ref = new ve.dm.MWReferenceModel( new ve.dm.Document( [] ) );
editPanel.setDocumentReferences( getDocumentReferencesMock() );
const changeHandlerSpy = sinon.spy();
editPanel.connect( null, { change: changeHandlerSpy } );
ref.setGroup( 'group' );
editPanel.setReferenceForEditing( ref );
// values setup correctly
assert.strictEqual( editPanel.originalGroup, 'group' );
assert.strictEqual( editPanel.referenceGroupInput.getValue(), 'group' );
// interface setup correctly
assert.false( editPanel.referenceGroupInput.isDisabled() );
assert.false( editPanel.reuseWarning.isVisible() );
assert.false( editPanel.previewPanel.isVisible() );
// change handler triggered
const expectedChange = {
isModified: false,
hasContent: false
};
assert.true( changeHandlerSpy.calledWith( expectedChange ) );
// reference getter
editPanel.referenceGroupInput.setValue( '' );
assert.strictEqual( editPanel.getReferenceFromEditing().getGroup(), '' );
} );
QUnit.test( 're-used references', ( assert ) => {
ve.init.target.surface = { commandRegistry: { getNames: () => [] } };
const editPanel = new ve.ui.MWReferenceEditPanel();
const ref = new ve.dm.MWReferenceModel( new ve.dm.Document( [] ) );
editPanel.setDocumentReferences( getDocumentReferencesMock( null, true ) );
editPanel.setReferenceForEditing( ref );
// interface setup correctly
assert.true( editPanel.reuseWarning.isVisible() );
assert.false( editPanel.previewPanel.isVisible() );
} );
QUnit.test( 'sub-references', ( assert ) => {
ve.init.target.surface = { commandRegistry: { getNames: () => [] } };
const editPanel = new ve.ui.MWReferenceEditPanel();
const doc = new ve.dm.Document( [] );
const ref = new ve.dm.MWReferenceModel( doc );
// does exist in the example document
ref.mainRefKey = 'literal/bar';
editPanel.setDocumentReferences( getDocumentReferencesMock( getSimpleNode( doc ) ) );
editPanel.setReferenceForEditing( ref );
assert.false( editPanel.reuseWarning.isVisible() );
assert.true( editPanel.previewPanel.isVisible() );
assert.false( editPanel.referenceListPreview.$element.text().includes( 'cite-ve-dialog-reference-missing-parent-ref' ) );
// TODO improve node mock to check content insertion for the parent
// assert.true( editPanel.referenceListPreview.$element.text().indexOf( 'Bar' ) !== -1 );
// test sub ref with missing main ref
ref.mainRefKey = 'literal/notexist';
editPanel.setDocumentReferences( getDocumentReferencesMock() );
editPanel.setReferenceForEditing( ref );
assert.false( editPanel.reuseWarning.isVisible() );
assert.true( editPanel.previewPanel.isVisible() );
assert.true( editPanel.referenceListPreview.$element.text().includes( 'cite-ve-dialog-reference-missing-parent-ref' ) );
} );
}

File Metadata

Mime Type
text/plain
Expires
Aug 19 2026, 19:14 (6 w, 5 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
c8/5b/912918495baf075ec1ffb35e52b5
Default Alt Text
ve.ui.MWReferenceEditPanel.test.js (3 KB)

Event Timeline