Add job page acceptance test
This commit is contained in:
parent
725d3b00da
commit
0dc7e0e045
|
@ -1,9 +1,10 @@
|
|||
import Ember from 'ember';
|
||||
import Mirage from 'ember-cli-mirage';
|
||||
|
||||
export default function() {
|
||||
let _turnIntoV3Singular = function(type, record) {
|
||||
record['@type'] = type;
|
||||
record['@href'] = `/${type}/${record.id}`
|
||||
record['@href'] = `/${type}/${record.id}`;
|
||||
|
||||
return record;
|
||||
};
|
||||
|
@ -11,23 +12,47 @@ export default function() {
|
|||
let turnIntoV3 = function(type, payload) {
|
||||
let response;
|
||||
if(Ember.isArray(payload)) {
|
||||
let records = payload.map( (record) => { return _turnIntoV3Singular(type, record) } );
|
||||
let records = payload.map( (record) => { return _turnIntoV3Singular(type, record); } );
|
||||
|
||||
let pluralized = Ember.String.pluralize(type);
|
||||
response = {};
|
||||
response['@type'] = pluralized;
|
||||
response['@href'] = `/${pluralized}`
|
||||
response['@href'] = `/${pluralized}`;
|
||||
response[pluralized] = records;
|
||||
} else {
|
||||
response = _turnIntoV3Singular(type, payload);
|
||||
}
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
this.get('/v3/repos', function(db, request) {
|
||||
this.get('/repos', function(db, request) {
|
||||
return turnIntoV3('repository', db.repositories);
|
||||
});
|
||||
this.get('/repo/:slug', function(db, request) {
|
||||
|
||||
let repos = db.repositories.filter((repo) => {
|
||||
return decodeURIComponent(request.params.slug) === repo.slug;
|
||||
});
|
||||
return turnIntoV3('repository', repos[0]);
|
||||
});
|
||||
this.get('/jobs/:id', function(db, request) {
|
||||
return {job: db.jobs.find(request.params.id), commit: db.commits[0]};
|
||||
});
|
||||
this.get('/jobs', function(db, request) {
|
||||
return {jobs: db.jobs};
|
||||
});
|
||||
this.get('/builds/:id', function(db, request) {
|
||||
return {build: db.builds.find(request.params.id), commit: db.commits[0]};
|
||||
});
|
||||
this.get('/jobs/:id/log', function(db, request) {
|
||||
let log = db.logs.find(request.params.id);
|
||||
|
||||
if(log) {
|
||||
return { log: { parts: [{ id: log.id, number: 1, content: log.content}] }};
|
||||
} else {
|
||||
new Mirage.Response(404, {}, {});
|
||||
}
|
||||
});
|
||||
|
||||
this.get('/v3/repos', function(db, request) {
|
||||
return turnIntoV3('repository', db.repositories);
|
||||
|
|
4
app/mirage/factories/branch.js
Normal file
4
app/mirage/factories/branch.js
Normal file
|
@ -0,0 +1,4 @@
|
|||
import Mirage/*, {faker} */ from 'ember-cli-mirage';
|
||||
|
||||
export default Mirage.Factory.extend({
|
||||
});
|
4
app/mirage/factories/build.js
Normal file
4
app/mirage/factories/build.js
Normal file
|
@ -0,0 +1,4 @@
|
|||
import Mirage/*, {faker} */ from 'ember-cli-mirage';
|
||||
|
||||
export default Mirage.Factory.extend({
|
||||
});
|
4
app/mirage/factories/commit.js
Normal file
4
app/mirage/factories/commit.js
Normal file
|
@ -0,0 +1,4 @@
|
|||
import Mirage/*, {faker} */ from 'ember-cli-mirage';
|
||||
|
||||
export default Mirage.Factory.extend({
|
||||
});
|
5
app/mirage/factories/job.js
Normal file
5
app/mirage/factories/job.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
import Mirage/*, {faker} */ from 'ember-cli-mirage';
|
||||
|
||||
export default Mirage.Factory.extend({
|
||||
|
||||
});
|
5
app/mirage/factories/log.js
Normal file
5
app/mirage/factories/log.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
import Mirage/*, {faker} */ from 'ember-cli-mirage';
|
||||
|
||||
export default Mirage.Factory.extend({
|
||||
content: 'Hello log'
|
||||
});
|
|
@ -44,6 +44,7 @@ var Request = Ember.Object.extend({
|
|||
},
|
||||
|
||||
isJson(xhr, body) {
|
||||
|
||||
// Firefox can't see the Content-Type header on the xhr response due to the wrong
|
||||
// status code 204. Should be some redirect code but that doesn't work with CORS.
|
||||
var type = xhr.getResponseHeader('Content-Type') || '';
|
||||
|
|
|
@ -16,6 +16,14 @@ var Serializer = V2FallbackSerializer.extend({
|
|||
return result;
|
||||
},
|
||||
|
||||
normalizeSingleResponse: function(store, primaryModelClass, payload, id, requestType) {
|
||||
if (payload.commit) {
|
||||
payload.build.commit = payload.commit;
|
||||
delete payload.build.commit_id;
|
||||
}
|
||||
return this._super(...arguments);
|
||||
},
|
||||
|
||||
normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) {
|
||||
var result;
|
||||
if (payload.commits) {
|
||||
|
|
|
@ -25,6 +25,14 @@ export default V2FallbackSerializer.extend({
|
|||
return this._super(modelClass, resourceHash);
|
||||
},
|
||||
|
||||
normalizeSingleResponse: function(store, primaryModelClass, payload, id, requestType) {
|
||||
if (payload.commit) {
|
||||
payload.job.commit = payload.commit;
|
||||
delete payload.job.commit_id;
|
||||
}
|
||||
return this._super(...arguments);
|
||||
},
|
||||
|
||||
normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) {
|
||||
var result;
|
||||
if (payload.commits) {
|
||||
|
|
|
@ -18,7 +18,8 @@
|
|||
"ember-resolver": "~0.1.20",
|
||||
"pretender": "~0.10.1",
|
||||
"lodash": "~3.7.0",
|
||||
"Faker": "~3.0.0"
|
||||
"Faker": "~3.0.0",
|
||||
"ceibo": "1.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"ember": "2.2.1",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
module.exports = function(environment) {
|
||||
var ENV = {
|
||||
useV3API: false,
|
||||
useV3API: true,
|
||||
modulePrefix: 'travis',
|
||||
environment: environment,
|
||||
baseURL: '/',
|
||||
|
@ -77,6 +77,9 @@ module.exports = function(environment) {
|
|||
// ENV.APP.LOG_TRANSITIONS = true;
|
||||
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
|
||||
// ENV.APP.LOG_VIEW_LOOKUPS = true;
|
||||
ENV['ember-cli-mirage'] = {
|
||||
enabled: false
|
||||
}
|
||||
}
|
||||
|
||||
if (environment === 'test') {
|
||||
|
@ -91,10 +94,13 @@ module.exports = function(environment) {
|
|||
ENV.APP.rootElement = '#ember-testing';
|
||||
|
||||
ENV.apiEndpoint = '';
|
||||
ENV.statusPageStatusUrl = null;
|
||||
}
|
||||
|
||||
if (environment === 'production') {
|
||||
|
||||
ENV['ember-cli-mirage'] = {
|
||||
enabled: false
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: I insert values from ENV here, but in production
|
||||
|
|
27
tests/acceptance/job-view-test.js
Normal file
27
tests/acceptance/job-view-test.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
import { test } from 'qunit';
|
||||
import moduleForAcceptance from 'travis/tests/helpers/module-for-acceptance';
|
||||
import jobPage from 'travis/tests/pages/job';
|
||||
|
||||
moduleForAcceptance('Acceptance | job view');
|
||||
|
||||
test('visiting job-view', function(assert) {
|
||||
|
||||
let repo = server.create('repository', {slug: 'travis-ci/travis-web'});
|
||||
let branch = server.create('branch', {});
|
||||
let commit = server.create('commit', {author_email: 'mrt@travis-ci.org', author_name: 'Mr T', committer_email: 'mrt@travis-ci.org', committer_name: 'Mr T', branch: 'acceptance-tests', message: 'This is a message', branch_is_default: true});
|
||||
let build = server.create('build', {repository_id: repo.id, state: 'passed', commit_id: commit.id});
|
||||
let job = server.create('job', {number: '1234.1', reposiptoy_id: repo.id, state: 'passed', build_id: build.id, commit_id: commit.id});
|
||||
let log = server.create('log', { id: job.id });
|
||||
|
||||
visit('/travis-ci/travis-web/jobs/'+ job.id);
|
||||
|
||||
|
||||
andThen(function() {
|
||||
assert.equal(jobPage.branch, 'acceptance-tests');
|
||||
assert.equal(jobPage.message, 'acceptance-tests This is a message');
|
||||
assert.equal(jobPage.state, '#1234.1 passed');
|
||||
assert.equal(jobPage.author, 'Mr T authored and committed');
|
||||
|
||||
assert.equal(jobPage.log, 'Hello log');
|
||||
});
|
||||
});
|
13
tests/pages/job.js
Normal file
13
tests/pages/job.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import PageObject from 'travis/tests/page-object';
|
||||
|
||||
let {
|
||||
text
|
||||
} = PageObject;
|
||||
|
||||
export default PageObject.create({
|
||||
branch: text('.commit-branch'),
|
||||
message: text('.build-title'),
|
||||
state: text('.build-status'),
|
||||
author: text('.commit-author'),
|
||||
log: text('#log')
|
||||
});
|
Loading…
Reference in New Issue
Block a user