| import './index'; |
| import { expect } from 'chai'; |
| import { |
| eventPromise, |
| noEventPromise, |
| setUpElementUnderTest, |
| } from '../../../infra-sk/modules/test_util'; |
| import { TriageSk } from './triage-sk'; |
| import { TriageSkPO } from './triage-sk_po'; |
| import { Label } from '../rpc_types'; |
| |
| describe('triage-sk', () => { |
| const newInstance = setUpElementUnderTest<TriageSk>('triage-sk'); |
| |
| let triageSk: TriageSk; |
| let triageSkPO: TriageSkPO; |
| |
| beforeEach(() => { |
| triageSk = newInstance(); |
| triageSkPO = new TriageSkPO(triageSk); |
| }); |
| |
| it('is untriaged by default', async () => { |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| }); |
| |
| describe('"value" property setter/getter', () => { |
| it('sets and gets value via property', async () => { |
| triageSk.value = 'positive'; |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'positive'); |
| |
| triageSk.value = 'negative'; |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'negative'); |
| |
| triageSk.value = 'untriaged'; |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| }); |
| |
| it('does not emit event "change" when setting value via property', async () => { |
| const noTriageEvent = noEventPromise('change'); |
| triageSk.value = 'positive'; |
| await noTriageEvent; |
| }); |
| }); |
| |
| describe('buttons', () => { |
| it('sets value to positive when clicking positive button', async () => { |
| const changeEvent = eventPromise<CustomEvent<Label>>('change', 100); |
| await triageSkPO.clickButton('positive'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'positive'); |
| expect((await changeEvent).detail).to.equal('positive'); |
| }); |
| |
| it('sets value to negative when clicking negative button', async () => { |
| const changeEvent = eventPromise<CustomEvent<Label>>('change', 100); |
| await triageSkPO.clickButton('negative'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'negative'); |
| expect((await changeEvent).detail).to.equal('negative'); |
| }); |
| |
| it('sets value to untriaged when clicking untriaged button', async () => { |
| const changeEvent = eventPromise<CustomEvent<Label>>('change', 100); |
| triageSk.value = 'positive'; // Untriaged by default; change value first. |
| await triageSkPO.clickButton('untriaged'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| expect((await changeEvent).detail).to.equal('untriaged'); |
| }); |
| |
| it('does not emit event "change" when clicking button for current value', async () => { |
| const noChangeEvent = noEventPromise('change'); |
| await triageSkPO.clickButton('untriaged'); |
| await noChangeEvent; |
| }); |
| |
| it('all buttons enabled when not read only', async () => { |
| expect(await triageSkPO.isButtonDisabled('positive')).to.be.false; |
| expect(await triageSkPO.isButtonDisabled('negative')).to.be.false; |
| expect(await triageSkPO.isButtonDisabled('untriaged')).to.be.false; |
| }); |
| |
| it('all buttons disabled when read only', async () => { |
| triageSk.readOnly = true; |
| expect(await triageSkPO.isButtonDisabled('positive')).to.be.true; |
| expect(await triageSkPO.isButtonDisabled('negative')).to.be.true; |
| expect(await triageSkPO.isButtonDisabled('untriaged')).to.be.true; |
| }); |
| |
| it('does not change when read only', async () => { |
| triageSk.readOnly = true; |
| const noTriageEvent = noEventPromise('change'); |
| await triageSkPO.clickButton('positive'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| await triageSkPO.clickButton('negative'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| await triageSkPO.clickButton('untriaged'); |
| await expectValueAndToggledButtonToBe(triageSk, triageSkPO, 'untriaged'); |
| await noTriageEvent; |
| }); |
| }); |
| }); |
| |
| const expectValueAndToggledButtonToBe = async ( |
| triageSk: TriageSk, |
| triageSkPO: TriageSkPO, |
| value: Label |
| ) => { |
| expect(triageSk.value).to.equal(value); |
| expect(await triageSkPO.getLabel()).to.equal(value); |
| }; |