Resolve issue with disable/enable methods

This commit is contained in:
Josh Johnson 2018-10-27 20:16:46 +01:00
parent 013058dd7f
commit de71fb7ef4
3 changed files with 33 additions and 71 deletions

View file

@ -12,7 +12,7 @@
"cypress:run": "$(npm bin)/cypress run", "cypress:run": "$(npm bin)/cypress run",
"cypress:open": "$(npm bin)/cypress open", "cypress:open": "$(npm bin)/cypress open",
"test:unit": "mocha --require ./config/test.js --compilers js:babel-core/register \"./src/**/**/**/**/*.test.js\" --exit", "test:unit": "mocha --require ./config/test.js --compilers js:babel-core/register \"./src/**/**/**/**/*.test.js\" --exit",
"test:unit:watch": "npm run test -- --watch --inspect=5556", "test:unit:watch": "npm run test:unit -- --watch --inspect=5556",
"test:e2e": "run-p --race start cypress:run", "test:e2e": "run-p --race start cypress:run",
"test": "run-p test:unit test:e2e", "test": "run-p test:unit test:e2e",
"js:watch": "NODE_ENV=development node server.js", "js:watch": "NODE_ENV=development node server.js",

View file

@ -118,7 +118,6 @@ class Choices {
this._prevState = {}; this._prevState = {};
this._currentValue = ''; this._currentValue = '';
this._canSearch = this.config.searchEnabled; this._canSearch = this.config.searchEnabled;
this._isDisabled = this.config.addItems;
this._isScrollingOnIe = false; this._isScrollingOnIe = false;
this._highlightPosition = 0; this._highlightPosition = 0;
this._wasTap = true; this._wasTap = true;
@ -215,38 +214,30 @@ class Choices {
} }
enable() { enable() {
if (!this._isDisabled) { if (this.passedElement.isDisabled) {
return this; this.passedElement.enable();
} }
this.passedElement.enable();
if (this.containerOuter.isDisabled) { if (this.containerOuter.isDisabled) {
this._addEventListeners(); this._addEventListeners();
this.input.enable(); this.input.enable();
this.containerOuter.enable(); this.containerOuter.enable();
} }
this._isDisabled = false;
return this; return this;
} }
disable() { disable() {
if (this._isDisabled) { if (!this.passedElement.isDisabled) {
return this; this.passedElement.disable();
} }
this.passedElement.disable();
if (!this.containerOuter.isDisabled) { if (!this.containerOuter.isDisabled) {
this._removeEventListeners(); this._removeEventListeners();
this.input.disable(); this.input.disable();
this.containerOuter.disable(); this.containerOuter.disable();
} }
this._isDisabled = true;
return this; return this;
} }

View file

@ -202,7 +202,8 @@ describe('choices', () => {
describe('when already enabled', () => { describe('when already enabled', () => {
beforeEach(() => { beforeEach(() => {
instance._isDisabled = false; instance.passedElement.isDisabled = false;
instance.containerOuter.isDisabled = false;
output = instance.enable(); output = instance.enable();
}); });
@ -217,37 +218,22 @@ describe('choices', () => {
}); });
describe('when not already enabled', () => { describe('when not already enabled', () => {
describe('containerOuter enabled', () => { beforeEach(() => {
beforeEach(() => { instance.passedElement.isDisabled = true;
instance._isDisabled = true; instance.containerOuter.isDisabled = true;
output = instance.enable(); instance.enable();
});
returnsInstance(output);
it('enables passedElement', () => {
expect(passedElementEnableSpy.called).to.equal(true);
});
}); });
describe('containerOuter disabled', () => { it('adds event listeners', () => {
beforeEach(() => { expect(addEventListenersSpy.called).to.equal(true);
instance._isDisabled = true; });
instance.containerOuter.isDisabled = true;
instance.enable();
});
it('adds event listeners', () => { it('enables input', () => {
expect(addEventListenersSpy.called).to.equal(true); expect(inputEnableSpy.called).to.equal(true);
}); });
it('enables input', () => { it('enables containerOuter', () => {
expect(inputEnableSpy.called).to.equal(true); expect(containerOuterEnableSpy.called).to.equal(true);
});
it('enables containerOuter', () => {
expect(containerOuterEnableSpy.called).to.equal(true);
});
}); });
}); });
}); });
@ -274,7 +260,8 @@ describe('choices', () => {
describe('when already disabled', () => { describe('when already disabled', () => {
beforeEach(() => { beforeEach(() => {
instance._isDisabled = true; instance.passedElement.isDisabled = true;
instance.containerOuter.isDisabled = true;
output = instance.disable(); output = instance.disable();
}); });
@ -289,38 +276,22 @@ describe('choices', () => {
}); });
describe('when not already disabled', () => { describe('when not already disabled', () => {
describe('containerOuter disabled', () => { beforeEach(() => {
beforeEach(() => { instance.passedElement.isDisabled = false;
instance._isDisabled = false; instance.containerOuter.isDisabled = false;
instance.containerOuter.isDisabled = true; output = instance.disable();
output = instance.disable();
});
returnsInstance(output);
it('disables passedElement', () => {
expect(passedElementDisableSpy.called).to.equal(true);
});
}); });
describe('containerOuter enabled', () => { it('removes event listeners', () => {
beforeEach(() => { expect(removeEventListenersSpy.called).to.equal(true);
instance._isDisabled = false; });
instance.containerOuter.isDisabled = false;
instance.disable();
});
it('removes event listeners', () => { it('disables input', () => {
expect(removeEventListenersSpy.called).to.equal(true); expect(inputDisableSpy.called).to.equal(true);
}); });
it('disables input', () => { it('enables containerOuter', () => {
expect(inputDisableSpy.called).to.equal(true); expect(containerOuterDisableSpy.called).to.equal(true);
});
it('enables containerOuter', () => {
expect(containerOuterDisableSpy.called).to.equal(true);
});
}); });
}); });
}); });