netstix/test/e2e/features/achievementsFeature.js
2022-11-27 20:58:22 +08:00

67 lines
2.5 KiB
JavaScript

var mongoose = require('mongoose');
beforeEach(function() {
mongoose.connect('mongodb://localhost/makers-achievements-test', function() {
mongoose.connection.db.dropDatabase();
});
});
afterEach(function() {
mongoose.connect('mongodb://localhost/makers-achievements-test', function() {
mongoose.connection.db.dropDatabase();
});
});
describe('Achievements Features', function() {
it('a user can create an achievement, view a list of achievements then view a specific achievement', function() {
browser.get('http://localhost:8080/#/achievements');
var signUpLink = element(by.css('a[href*="#/register"]'));
signUpLink.click();
var usernameInput = element(by.css('input[name="username"]'));
var passwordInput = element(by.css('input[name="password"]'));
var signUpForm = element(by.css('form'));
usernameInput.sendKeys('test user');
passwordInput.sendKeys('epicpassword');
signUpForm.submit();
var achievementsList = element.all(by.repeater('achievement in ctrl.achievements'));
var firstAchievementTitle = achievementsList.get(0).element(by.css('a'));
expect(achievementsList.count()).toEqual(0);
var header = element(by.css('header'));
var createAchievementLink = header.element(by.css('a[href*="#/achievements/new"]'));
createAchievementLink.click();
expect(browser.getCurrentUrl()).toContain('#/achievements/new');
var achievementTitleInput = element(by.css('input[name="title"]'));
var achievementCriteriaInput = element(by.css('textarea[name="criteria"]'));
var newAchievementForm = element(by.css('form'));
achievementTitleInput.sendKeys('Create an achievement for the app');
achievementCriteriaInput.sendKeys('This is where a user should write criteria');
newAchievementForm.submit();
expect(achievementsList.count()).toEqual(1);
expect(browser.getCurrentUrl()).toContain('#/achievements');
expect(firstAchievementTitle.getText()).toEqual('Create an achievement for the app');
var viewAchievementLink = achievementsList.get(0).element(by.css('a[href*="#/achievements/"]'));
viewAchievementLink.click();
var achievementTitle = element(by.binding('achievement.title'));
var achievementCriteria = element(by.binding('achievement.criteria'));
expect(browser.getCurrentUrl()).toContain('#/achievements/');
expect(achievementTitle.getText()).toEqual('Create an achievement for the app');
expect(achievementCriteria.getText()).toEqual('This is where a user should write criteria');
});
});