feat(aio): copy example code from angular.io
This commit is contained in:

committed by
Igor Minar

parent
3e34ba01bd
commit
1f3198cb50
@ -0,0 +1,103 @@
|
||||
'use strict'; // necessary for es6 output in node
|
||||
|
||||
import { browser, by, element } from 'protractor';
|
||||
|
||||
describe('Hierarchical dependency injection', () => {
|
||||
|
||||
beforeAll(() => {
|
||||
browser.get('');
|
||||
});
|
||||
|
||||
describe('Heroes Scenario', () => {
|
||||
let page = {
|
||||
heroName: '',
|
||||
income: '',
|
||||
|
||||
// queries
|
||||
heroEl: element.all(by.css('heroes-list li')).get(0), // first hero
|
||||
heroCardEl: element(by.css('heroes-list hero-tax-return')), // first hero tax-return
|
||||
taxReturnNameEl: element.all(by.css('heroes-list hero-tax-return #name')).get(0),
|
||||
incomeInputEl: element.all(by.css('heroes-list hero-tax-return input')).get(0),
|
||||
cancelButtonEl: element(by.cssContainingText('heroes-list hero-tax-return button', 'Cancel')),
|
||||
closeButtonEl: element(by.cssContainingText('heroes-list hero-tax-return button', 'Close')),
|
||||
saveButtonEl: element(by.cssContainingText('heroes-list hero-tax-return button', 'Save'))
|
||||
};
|
||||
|
||||
it('should list multiple heroes', () => {
|
||||
expect(element.all(by.css('heroes-list li')).count()).toBeGreaterThan(1);
|
||||
});
|
||||
|
||||
it('should show no hero tax-returns at the start', () => {
|
||||
expect(element.all(by.css('heroes-list li hero-tax-return')).count()).toBe(0);
|
||||
});
|
||||
|
||||
it('should open first hero in hero-tax-return view after click', () => {
|
||||
page.heroEl.getText()
|
||||
.then(val => {
|
||||
page.heroName = val;
|
||||
})
|
||||
.then(() => page.heroEl.click())
|
||||
.then(() => {
|
||||
expect(page.heroCardEl.isDisplayed()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it('hero tax-return should have first hero\'s name', () => {
|
||||
// Not `page.tax-returnNameInputEl.getAttribute('value')` although later that is essential
|
||||
expect(page.taxReturnNameEl.getText()).toEqual(page.heroName);
|
||||
});
|
||||
|
||||
it('should be able to cancel change', () => {
|
||||
page.incomeInputEl.clear()
|
||||
.then(() => page.incomeInputEl.sendKeys('777'))
|
||||
.then(() => {
|
||||
expect(page.incomeInputEl.getAttribute('value')).toBe('777', 'income should be 777');
|
||||
return page.cancelButtonEl.click();
|
||||
})
|
||||
.then(() => {
|
||||
expect(page.incomeInputEl.getAttribute('value')).not.toBe('777', 'income should not be 777');
|
||||
});
|
||||
});
|
||||
|
||||
it('should be able to save change', () => {
|
||||
page.incomeInputEl.clear()
|
||||
.then(() => page.incomeInputEl.sendKeys('999'))
|
||||
.then(() => {
|
||||
expect(page.incomeInputEl.getAttribute('value')).toBe('999', 'income should be 999');
|
||||
return page.saveButtonEl.click();
|
||||
})
|
||||
.then(() => {
|
||||
expect(page.incomeInputEl.getAttribute('value')).toBe('999', 'income should still be 999');
|
||||
});
|
||||
});
|
||||
|
||||
it('should be able to close tax-return', () => {
|
||||
page.saveButtonEl.click()
|
||||
.then(() => {
|
||||
expect(element.all(by.css('heroes-list li hero-tax-return')).count()).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Villains Scenario', () => {
|
||||
it('should list multiple villains', () => {
|
||||
expect(element.all(by.css('villains-list li')).count()).toBeGreaterThan(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Cars Scenario', () => {
|
||||
|
||||
it('A-component should use expected services', () => {
|
||||
expect(element(by.css('a-car')).getText()).toContain('C1-E1-T1');
|
||||
});
|
||||
|
||||
it('B-component should use expected services', () => {
|
||||
expect(element(by.css('b-car')).getText()).toContain('C2-E2-T1');
|
||||
});
|
||||
|
||||
it('C-component should use expected services', () => {
|
||||
expect(element(by.css('c-car')).getText()).toContain('C3-E2-T1');
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user