|
|
@@ -14,7 +14,7 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should fire event when new descriptor is provided to an empty stack', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-id' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptor );
|
|
|
@@ -26,8 +26,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should fire event when new top element has changed', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 11, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 11, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptor );
|
|
|
@@ -38,10 +38,27 @@ describe( 'HighlightStack', () => {
|
|
|
expect( spy.secondCall.args[ 1 ].oldDescriptor ).to.equal( descriptor );
|
|
|
} );
|
|
|
|
|
|
+ it( 'should fire event when top element has updated', () => {
|
|
|
+ const spy = sinon.spy();
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 11, class: 'css-class', id: 'descriptor-1' };
|
|
|
+
|
|
|
+ stack.on( 'change:top', spy );
|
|
|
+ stack.add( descriptor );
|
|
|
+ stack.add( secondDescriptor );
|
|
|
+
|
|
|
+ sinon.assert.calledTwice( spy );
|
|
|
+ expect( spy.firstCall.args[ 1 ].newDescriptor ).to.equal( descriptor );
|
|
|
+ expect( spy.firstCall.args[ 1 ].oldDescriptor ).to.be.undefined;
|
|
|
+
|
|
|
+ expect( spy.secondCall.args[ 1 ].newDescriptor ).to.equal( secondDescriptor );
|
|
|
+ expect( spy.secondCall.args[ 1 ].oldDescriptor ).to.equal( descriptor );
|
|
|
+ } );
|
|
|
+
|
|
|
it( 'should not fire event when element with lower priority was added', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 9, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 9, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptor );
|
|
|
@@ -54,8 +71,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should fire event when top element was removed', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 11, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 11, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.add( descriptor );
|
|
|
stack.add( secondDescriptor );
|
|
|
@@ -71,8 +88,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should not fire event when other than top element is removed', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 11, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 11, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.add( descriptor );
|
|
|
stack.add( secondDescriptor );
|
|
|
@@ -86,8 +103,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should not fire event when same descriptor is added', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 10, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptor );
|
|
|
@@ -110,8 +127,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should not fire when trying to remove descriptor which is not present', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 12, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 12, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.add( descriptor );
|
|
|
stack.on( 'change:top', spy );
|
|
|
@@ -122,7 +139,7 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should fire event when last element from stack was removed', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor' };
|
|
|
|
|
|
stack.add( descriptor );
|
|
|
stack.on( 'change:top', spy );
|
|
|
@@ -135,8 +152,8 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should not fire event when new top descriptor is same as previous', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptor = { priority: 10, class: 'css-class' };
|
|
|
- const secondDescriptor = { priority: 10, class: 'css-class' };
|
|
|
+ const descriptor = { priority: 10, class: 'css-class', id: 'descriptor-1' };
|
|
|
+ const secondDescriptor = { priority: 10, class: 'css-class', id: 'descriptor-2' };
|
|
|
|
|
|
stack.add( descriptor );
|
|
|
stack.add( secondDescriptor );
|
|
|
@@ -148,9 +165,9 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should sort by class when priorities are the same', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptorA = { priority: 10, class: 'css-a' };
|
|
|
- const descriptorB = { priority: 10, class: 'css-b' };
|
|
|
- const descriptorC = { priority: 10, class: 'css-c' };
|
|
|
+ const descriptorA = { priority: 10, class: 'css-a', id: 'descriptor-1' };
|
|
|
+ const descriptorB = { priority: 10, class: 'css-b', id: 'descriptor-2' };
|
|
|
+ const descriptorC = { priority: 10, class: 'css-c', id: 'descriptor-3' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptorB );
|
|
|
@@ -167,9 +184,9 @@ describe( 'HighlightStack', () => {
|
|
|
|
|
|
it( 'should sort by class when priorities are the same - array of CSS classes', () => {
|
|
|
const spy = sinon.spy();
|
|
|
- const descriptorA = { priority: 10, class: [ 'css-a', 'css-z' ] };
|
|
|
- const descriptorB = { priority: 10, class: [ 'css-a', 'css-y' ] };
|
|
|
- const descriptorC = { priority: 10, class: 'css-c' };
|
|
|
+ const descriptorA = { priority: 10, class: [ 'css-a', 'css-z' ], id: 'descriptor-1' };
|
|
|
+ const descriptorB = { priority: 10, class: [ 'css-a', 'css-y' ], id: 'descriptor-2' };
|
|
|
+ const descriptorC = { priority: 10, class: 'css-c', id: 'descriptor-3' };
|
|
|
|
|
|
stack.on( 'change:top', spy );
|
|
|
stack.add( descriptorB );
|