129 lines
5.0 KiB
JavaScript
129 lines
5.0 KiB
JavaScript
|
describe('Router', function () {
|
||
|
|
||
|
beforeAll(function () {
|
||
|
browser.get('');
|
||
|
});
|
||
|
|
||
|
function getPageStruct() {
|
||
|
hrefEles = element.all(by.css('my-app a'));
|
||
|
|
||
|
return {
|
||
|
hrefs: hrefEles,
|
||
|
routerParent: element(by.css('my-app > undefined')),
|
||
|
routerTitle: element(by.css('my-app > undefined > h2')),
|
||
|
|
||
|
crisisHref: hrefEles.get(0),
|
||
|
crisisList: element.all(by.css('my-app > undefined > undefined li')),
|
||
|
crisisDetail: element(by.css('my-app > undefined > undefined > div')),
|
||
|
crisisDetailTitle: element(by.css('my-app > undefined > undefined > div > h3')),
|
||
|
|
||
|
heroesHref: hrefEles.get(1),
|
||
|
heroesList: element.all(by.css('my-app > undefined li')),
|
||
|
heroDetail: element(by.css('my-app > undefined > div')),
|
||
|
heroDetailTitle: element(by.css('my-app > undefined > div > h3')),
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
it('should be able to see the start screen', function () {
|
||
|
var page = getPageStruct();
|
||
|
expect(page.hrefs.count()).toEqual(2, 'should be two dashboard choices');
|
||
|
expect(page.crisisHref.getText()).toEqual("Crisis Center");
|
||
|
expect(page.heroesHref.getText()).toEqual("Heroes");
|
||
|
});
|
||
|
|
||
|
// assumes that jasmine runs tests in order that they appear.
|
||
|
// (don't move this test later in this file because it will fail first 'expect').
|
||
|
it('should be able to see crises center items', function () {
|
||
|
var page = getPageStruct();
|
||
|
expect(page.crisisList.count()).toBe(0, "should be no crisis center entries on startup");
|
||
|
page.crisisHref.click().then(function() {
|
||
|
expect(page.routerTitle.getText()).toContain('CRISIS CENTER');
|
||
|
expect(page.crisisList.count()).toBe(4, "should be 4 crisis center entries");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should be able to see hero items', function () {
|
||
|
var page = getPageStruct();
|
||
|
page.heroesHref.click().then(function() {
|
||
|
expect(page.routerTitle.getText()).toContain('HEROES');
|
||
|
expect(page.heroesList.count()).toBe(6, "should be 6 heroes");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should be able to toggle the views', function () {
|
||
|
var page = getPageStruct();
|
||
|
page.crisisHref.click().then(function() {
|
||
|
expect(page.crisisList.count()).toBe(4, "should be 4 crisis center entries");
|
||
|
return page.heroesHref.click();
|
||
|
}).then(function() {
|
||
|
expect(page.heroesList.count()).toBe(6, "should be 6 heroes");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should be able to edit and save details from the crisis center view', function () {
|
||
|
crisisCenterEdit(2, true);
|
||
|
});
|
||
|
|
||
|
it('should be able to edit and cancel details from the crisis center view', function () {
|
||
|
crisisCenterEdit(3, false);
|
||
|
});
|
||
|
|
||
|
it('should be able to edit and save details from the heroes view', function () {
|
||
|
var page = getPageStruct();
|
||
|
var heroEle, heroText;
|
||
|
page.heroesHref.click().then(function() {
|
||
|
heroEle = page.heroesList.get(4);
|
||
|
return heroEle.getText();
|
||
|
}).then(function(text) {
|
||
|
expect(text.length).toBeGreaterThan(0, 'should have some text');
|
||
|
// remove leading id from text
|
||
|
heroText = text.substr(text.indexOf(' ')).trim();
|
||
|
return heroEle.click();
|
||
|
}).then(function() {
|
||
|
expect(page.heroesList.count()).toBe(0, "should no longer see crisis center entries");
|
||
|
expect(page.heroDetail.isPresent()).toBe(true, 'should be able to see crisis detail');
|
||
|
expect(page.heroDetailTitle.getText()).toContain(heroText);
|
||
|
var inputEle = page.heroDetail.element(by.css('input'));
|
||
|
return sendKeys(inputEle, '-foo');
|
||
|
}).then(function() {
|
||
|
expect(page.heroDetailTitle.getText()).toContain(heroText + '-foo');
|
||
|
var buttonEle = page.heroDetail.element(by.css('button'));
|
||
|
return buttonEle.click();
|
||
|
}).then(function() {
|
||
|
expect(heroEle.getText()).toContain(heroText + '-foo');
|
||
|
})
|
||
|
});
|
||
|
|
||
|
function crisisCenterEdit(index, shouldSave) {
|
||
|
var page = getPageStruct();
|
||
|
var crisisEle, crisisText;
|
||
|
page.crisisHref.click().then(function () {
|
||
|
crisisEle = page.crisisList.get(index);
|
||
|
return crisisEle.getText();
|
||
|
}).then(function (text) {
|
||
|
expect(text.length).toBeGreaterThan(0, 'should have some text');
|
||
|
// remove leading id from text
|
||
|
crisisText = text.substr(text.indexOf(' ')).trim();
|
||
|
return crisisEle.click();
|
||
|
}).then(function () {
|
||
|
expect(page.crisisList.count()).toBe(0, "should no longer see crisis center entries");
|
||
|
expect(page.crisisDetail.isPresent()).toBe(true, 'should be able to see crisis detail');
|
||
|
expect(page.crisisDetailTitle.getText()).toContain(crisisText);
|
||
|
var inputEle = page.crisisDetail.element(by.css('input'));
|
||
|
return sendKeys(inputEle, '-foo');
|
||
|
}).then(function () {
|
||
|
expect(page.crisisDetailTitle.getText()).toContain(crisisText + '-foo');
|
||
|
var buttonEle = page.crisisDetail.element(by.cssContainingText('button', shouldSave ? 'Save' : 'Cancel'));
|
||
|
return buttonEle.click();
|
||
|
}).then(function () {
|
||
|
if (shouldSave) {
|
||
|
expect(crisisEle.getText()).toContain(crisisText + '-foo');
|
||
|
} else {
|
||
|
expect(crisisEle.getText()).not.toContain(crisisText + '-foo');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
});
|