mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-08 23:58:13 +08:00
128 lines
3.1 KiB
TypeScript
128 lines
3.1 KiB
TypeScript
describe('Form', () => {
|
|
beforeEach(() => {
|
|
cy.visit('/form');
|
|
})
|
|
|
|
describe('status updates', () => {
|
|
it('should update Ionic form classes when calling form methods programmatically', async () => {
|
|
cy.get('#input-touched').click();
|
|
cy.get('#touched-input-test').should('have.class', 'ion-touched');
|
|
});
|
|
|
|
describe('markAllAsTouched', () => {
|
|
it('should apply .ion-touched to nearest ion-item', () => {
|
|
cy.get('#mark-all-touched-button').click();
|
|
cy.get('form ion-item').each(item => {
|
|
cy.wrap(item).should('have.class', 'ion-touched');
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('change', () => {
|
|
it('should have default values', () => {
|
|
testStatus('INVALID');
|
|
cy.get('#submit').should('have.text', 'false');
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: null,
|
|
toggle: false,
|
|
input: '',
|
|
input2: 'Default Value',
|
|
checkbox: false
|
|
});
|
|
});
|
|
|
|
it('should become valid', () => {
|
|
cy.get('ion-input.required').type('Some value');
|
|
cy.get('ion-input.required input').blur();
|
|
|
|
testStatus('INVALID');
|
|
|
|
cy.get('ion-select').click();
|
|
cy.get('ion-alert').should('exist').should('be.visible');
|
|
// NES option
|
|
cy.get('ion-alert .alert-radio-button:nth-of-type(2)').click();
|
|
// Click confirm button
|
|
cy.get('ion-alert .alert-button:not(.alert-button-role-cancel)').click();
|
|
|
|
testStatus('VALID');
|
|
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: 'nes',
|
|
toggle: false,
|
|
input: 'Some value',
|
|
input2: 'Default Value',
|
|
checkbox: false
|
|
});
|
|
});
|
|
|
|
it('ion-toggle should change', () => {
|
|
cy.get('form ion-toggle').click();
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: null,
|
|
toggle: true,
|
|
input: '',
|
|
input2: 'Default Value',
|
|
checkbox: false
|
|
});
|
|
});
|
|
|
|
it('ion-checkbox should change', () => {
|
|
cy.get('ion-checkbox').click();
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: null,
|
|
toggle: false,
|
|
input: '',
|
|
input2: 'Default Value',
|
|
checkbox: true
|
|
});
|
|
});
|
|
|
|
it('should submit', () => {
|
|
cy.get('#set-values').click();
|
|
cy.get('#submit-button').click();
|
|
cy.get('#submit').should('have.text', 'true');
|
|
});
|
|
});
|
|
|
|
describe('blur', () => {
|
|
it('ion-toggle should change only after blur', () => {
|
|
cy.get('form ion-toggle').click();
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: null,
|
|
toggle: true,
|
|
input: '',
|
|
input2: 'Default Value',
|
|
checkbox: false
|
|
});
|
|
cy.get('ion-checkbox').click();
|
|
testData({
|
|
datetime: '2010-08-20',
|
|
select: null,
|
|
toggle: true,
|
|
input: '',
|
|
input2: 'Default Value',
|
|
checkbox: true
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
function testStatus(status) {
|
|
cy.get('#status').should('have.text', status);
|
|
}
|
|
|
|
function testData(data) {
|
|
cy.get('#data').invoke('text').then(text => {
|
|
const value = JSON.parse(text);
|
|
console.log(value, data);
|
|
expect(value).to.deep.equal(data);
|
|
})
|
|
}
|