ng2-bootstrap-base-modified
Version:
Native Angular Bootstrap Components Typeahead modified
106 lines (104 loc) • 6.88 kB
text/typescript
import { $, browser } from 'protractor';
import { leftPanelTests } from './leftPanelTests.po';
import { DataProvider } from '../data-provider/data-provider.po';
const buttonSingleToggle = $('buttons-demo>.btn');
const panelSingleToggle = $('buttons-demo>.card:nth-child(2)');
const checkboxModelFieldOne = $('buttons-demo > :nth-child(5)');
const checkboxModelFieldTwo = $('buttons-demo > :nth-child(6)');
const radioField = $('buttons-demo > :nth-child(9)');
let using = require('jasmine-data-provider');
const pressCheckboxButton = (buttonPosition:any) => {
return '.btn-group [btncheckbox]:nth-child(' + buttonPosition + ')';
};
const radioButton = (buttonPosition:any) => {
return '.btn-group:nth-child(2n) :nth-child(' + buttonPosition + ')';
};
const unckeckableRadioButton = (buttonPosition:any) => {
return '.btn-group [uncheckable]:nth-child(' + buttonPosition + ')';
};
describe('Buttons page test on bootstrap 3', () => {
beforeAll(() => {
browser.get('#/buttons');
browser.ignoreSynchronization = true;
leftPanelTests.checkLeftPanelMini();
leftPanelTests.checkLeftPanelMaxi();
});
using (DataProvider.buttonsTableContains, (data:any, description:string) => {
it ('Check table texts: ' + description, () => {
expect(data.element().getText()).toBe(data.actualResult);
});
});
it('Check single toggle button', () => {
expect(buttonSingleToggle.getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid active');
buttonSingleToggle.click();
expect(panelSingleToggle.getText()).toBe('0');
expect(buttonSingleToggle.getAttribute('class')).toContain('btn btn-primary ng-untouched ng-pristine ng-valid');
buttonSingleToggle.click();
expect(panelSingleToggle.getText()).toBe('1');
expect(buttonSingleToggle.getAttribute('class')).toContain('btn btn-primary ng-untouched ng-pristine ng-valid active');
});
it('Checkbox. Defaults states for checkbox buttons', () => {
expect(checkboxModelFieldOne.getText()).toContain('"left": false');
expect(checkboxModelFieldOne.getText()).toContain('"middle": true');
expect(checkboxModelFieldOne.getText()).toContain('"right": false');
expect(checkboxModelFieldTwo.getText()).toContain('Left: false');
expect(checkboxModelFieldTwo.getText()).toContain('Middle: true');
expect(checkboxModelFieldTwo.getText()).toContain('Right: false');
expect($(pressCheckboxButton(1)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(pressCheckboxButton(2)).getAttribute('class')).toContain('active');
expect($(pressCheckboxButton(3)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
});
it('Checkbox. Change state for left and Right buttons', () => {
$(pressCheckboxButton(1)).click();
$(pressCheckboxButton(2)).click();
$(pressCheckboxButton(3)).click();
expect(checkboxModelFieldOne.getText()).toContain('"left": true');
expect(checkboxModelFieldOne.getText()).toContain('"middle": false');
expect(checkboxModelFieldOne.getText()).toContain('"right": true');
expect(checkboxModelFieldTwo.getText()).toContain('Left: true');
expect(checkboxModelFieldTwo.getText()).toContain('Middle: false');
expect(checkboxModelFieldTwo.getText()).toContain('Right: true');
expect($(pressCheckboxButton(1)).getAttribute('class')).toContain('active');
expect($(pressCheckboxButton(2)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(pressCheckboxButton(3)).getAttribute('class')).toContain('active');
});
it('Radio. Check defaults states for radio buttons', () => {
expect(radioField.getText()).toContain('Middle');
expect($(radioButton(1)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(radioButton(2)).getAttribute('class')).toContain('active');
expect($(radioButton(3)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(1)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(2)).getAttribute('class')).toContain('active');
expect($(unckeckableRadioButton(3)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
});
it('Radio. Check left position for radio buttons', () => {
$(radioButton(1)).click();
expect(radioField.getText()).toContain('Left');
expect($(radioButton(1)).getAttribute('class')).toContain('active');
expect($(radioButton(2)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(radioButton(3)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(1)).getAttribute('class')).toContain('active');
expect($(unckeckableRadioButton(2)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(3)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
});
it('Radio. Check right position for radio buttons', () => {
$(unckeckableRadioButton(3)).click();
expect(radioField.getText()).toContain('Right');
expect($(radioButton(1)).getAttribute('class')).toBe('btn btn-primary ng-valid ng-touched ng-dirty');
expect($(radioButton(2)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(radioButton(3)).getAttribute('class')).toContain('active');
expect($(unckeckableRadioButton(1)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(2)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(3)).getAttribute('class')).toContain('active');
});
it('Radio. Check null state for radio buttons', () => {
$(unckeckableRadioButton(3)).click();
expect(radioField.getText()).toContain('null');
expect($(radioButton(1)).getAttribute('class')).toBe('btn btn-primary ng-valid ng-touched ng-dirty');
expect($(radioButton(2)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(radioButton(3)).getAttribute('class')).toBe('btn btn-primary ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(1)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(2)).getAttribute('class')).toBe('btn btn-success ng-untouched ng-pristine ng-valid');
expect($(unckeckableRadioButton(3)).getAttribute('class')).toBe('btn btn-success ng-valid ng-touched ng-dirty');
});
});