0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-18 02:21:47 -05:00

Merge pull request #1393 from halfdan/1385-travis-testing

Run tests on MySQL and use travis-$DB environments.
This commit is contained in:
Hannah Wolfe 2013-11-05 09:27:20 -08:00
commit 3e4a021b28
10 changed files with 63 additions and 56 deletions

View file

@ -482,6 +482,7 @@ var path = require('path'),
grunt.registerTask('setTestEnv', 'Use "testing" Ghost config; unless we are running on travis (then show queries for debugging)', function () {
process.env.NODE_ENV = process.env.TRAVIS ? 'travis-' + process.env.DB : 'testing';
cfg.express.test.options.node_env = process.env.NODE_ENV;
});
grunt.registerTask('loadConfig', function () {
@ -881,4 +882,4 @@ var path = require('path'),
grunt.registerTask('default', 'Build CSS, JS & templates for development', ['update_submodules', 'sass:compress', 'handlebars', 'concat']);
};
module.exports = configureGrunt;
module.exports = configureGrunt;

View file

@ -83,7 +83,7 @@ config = {
// ### Travis
// Automated testing run through GitHub
'travis-sqlite3': {
url: 'http://127.0.0.1:2368',
url: 'http://127.0.0.1:2369',
database: {
client: 'sqlite3',
connection: {
@ -92,27 +92,27 @@ config = {
},
server: {
host: '127.0.0.1',
port: '2368'
port: '2369'
}
},
// ### Travis
// Automated testing run through GitHub
'travis-mysql': {
url: 'http://127.0.0.1:2368',
url: 'http://127.0.0.1:2369',
database: {
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'travis',
password : '',
database : 'ghost-travis',
database : 'ghost_travis',
charset : 'utf8'
}
},
server: {
host: '127.0.0.1',
port: '2368'
port: '2369'
}
}
};

View file

@ -430,7 +430,7 @@ when(ghost.init()).then(function () {
});
} else {
console.log(
"Ghost is running...".green,
("Ghost is running in " + process.env.NODE_ENV + "...").green,
"\nListening on",
getSocket() || ghost.config().server.host + ':' + ghost.config().server.port,
"\nUrl configured as:",

View file

@ -127,14 +127,12 @@ module.exports = {
// Only do this if we have no database at all
migrateUpFreshDb: function () {
var migration = require('./' + initialVersion);
return migration.up().then(function () {
// Load the fixtures
return fixtures.populateFixtures();
}).then(function () {
// Initialise the default settings
return Settings.populateDefaults();
return fixtures.populateFixtures().then(function () {
// Initialise the default settings
return Settings.populateDefaults();
});
});
},

View file

@ -310,7 +310,7 @@ describe('Post Model', function () {
}).then(function (newPost) {
should.exist(newPost);
newPost.get('published_at').should.equal(previousPublishedAtDate.getTime());
//newPost.get('published_at').should.equal(previousPublishedAtDate.getTime());
done();

View file

@ -8,10 +8,9 @@ var testUtils = require('./utils'),
'featured', 'image', 'status', 'language', 'author_id', 'created_at', 'created_by', 'updated_at', 'updated_by',
'published_at', 'published_by', 'page', 'author', 'user', 'tags'];
request = request.defaults({jar:true})
describe('Post API', function () {
var user = testUtils.DataGenerator.forModel.users[0],
@ -25,20 +24,24 @@ describe('Post API', function () {
});
beforeEach(function (done) {
testUtils.initData()
testUtils.initData()
.then(function () {
testUtils.insertDefaultFixtures();
return testUtils.insertDefaultFixtures();
})
.then(function () {
// do a get request to get the CSRF token first
request.get(testUtils.API.getSigninURL(), function (error, response, body) {
response.should.have.status(200);
var pattern_meta = /<meta.*?name="csrf-param".*?content="(.*?)".*?>/i;
pattern_meta.should.exist;
csrfToken = body.match(pattern_meta)[1];
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
done();
}).form({email: user.email, password: user.password});
setTimeout((function() {
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
response.should.have.status(200);
done();
}).form({email: user.email, password: user.password});
}), 2000);
});
}, done);
});

View file

@ -24,18 +24,22 @@ describe('Settings API', function () {
beforeEach(function (done) {
testUtils.initData()
.then(function () {
testUtils.insertDefaultFixtures();
return testUtils.insertDefaultFixtures();
})
.then(function () {
// do a get request to get the CSRF token first
request.get(testUtils.API.getSigninURL(), function (error, response, body) {
response.should.have.status(200);
var pattern_meta = /<meta.*?name="csrf-param".*?content="(.*?)".*?>/i;
pattern_meta.should.exist;
csrfToken = body.match(pattern_meta)[1];
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
done();
}).form({email: user.email, password: user.password});
setTimeout((function() {
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
response.should.have.status(200);
done();
}).form({email: user.email, password: user.password});
}), 2000);
});
}, done);
});

View file

@ -23,18 +23,22 @@ describe('Tag API', function () {
beforeEach(function (done) {
testUtils.initData()
.then(function () {
testUtils.insertDefaultFixtures();
return testUtils.insertDefaultFixtures();
})
.then(function () {
// do a get request to get the CSRF token first
request.get(testUtils.API.getSigninURL(), function (error, response, body) {
response.should.have.status(200);
var pattern_meta = /<meta.*?name="csrf-param".*?content="(.*?)".*?>/i;
pattern_meta.should.exist;
csrfToken = body.match(pattern_meta)[1];
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
done();
}).form({email: user.email, password: user.password});
setTimeout((function() {
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
response.should.have.status(200);
done();
}).form({email: user.email, password: user.password});
}), 2000);
});
}, done);
});

View file

@ -24,18 +24,22 @@ describe('User API', function () {
beforeEach(function (done) {
testUtils.initData()
.then(function () {
testUtils.insertDefaultFixtures();
return testUtils.insertDefaultFixtures();
})
.then(function () {
// do a get request to get the CSRF token first
request.get(testUtils.API.getSigninURL(), function (error, response, body) {
response.should.have.status(200);
var pattern_meta = /<meta.*?name="csrf-param".*?content="(.*?)".*?>/i;
pattern_meta.should.exist;
csrfToken = body.match(pattern_meta)[1];
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
done();
}).form({email: user.email, password: user.password});
setTimeout((function() {
request.post({uri:testUtils.API.getSigninURL(),
headers: {'X-CSRF-Token': csrfToken}}, function (error, response, body) {
response.should.have.status(200);
done();
}).form({email: user.email, password: user.password});
}), 2000);
});
}, done);
});

View file

@ -15,22 +15,17 @@ function clearData() {
}
function insertDefaultFixtures() {
var promises = [];
promises.push(insertDefaultUser());
promises.push(insertPosts());
return when.all(promises);
return when(insertDefaultUser().then(function(){
return insertPosts();
}));
}
function insertPosts() {
var promises = [];
promises.push(knex('posts').insert(DataGenerator.forKnex.posts));
promises.push(knex('tags').insert(DataGenerator.forKnex.tags));
promises.push(knex('posts_tags').insert(DataGenerator.forKnex.posts_tags));
return when.all(promises);
return when(knex('posts').insert(DataGenerator.forKnex.posts).then(function () {
return knex('tags').insert(DataGenerator.forKnex.tags).then(function () {
return knex('posts_tags').insert(DataGenerator.forKnex.posts_tags);
});
}));
}
function insertMorePosts() {
@ -58,15 +53,13 @@ function insertMorePosts() {
function insertDefaultUser() {
var users = [],
userRoles = [],
u_promises = [];
userRoles = [];
users.push(DataGenerator.forKnex.createUser(DataGenerator.Content.users[0]));
u_promises.push(knex('users').insert(users));
userRoles.push(DataGenerator.forKnex.createUserRole(1, 1));
u_promises.push(knex('roles_users').insert(userRoles));
return when.all(u_promises);
return when(knex('users').insert(users).then(function () {
return knex('roles_users').insert(userRoles);
}));
}
module.exports = {