Setup schema and tests.
This commit is contained in:
parent
806f42e3f8
commit
de0284e48a
7 changed files with 49 additions and 17 deletions
|
@ -1,8 +1,13 @@
|
|||
image: node:6
|
||||
services:
|
||||
- mongo
|
||||
- postgres
|
||||
- redis
|
||||
|
||||
variables:
|
||||
POSTGRES_DB: hostr_test
|
||||
POSTGRES_USER: hostr_test
|
||||
POSTGRES_PASSWORD: ""
|
||||
|
||||
stages:
|
||||
- test
|
||||
|
||||
|
@ -16,7 +21,7 @@ test:
|
|||
tags:
|
||||
- docker
|
||||
variables:
|
||||
MONGO_URL: "mongodb://mongo:27017/hostr"
|
||||
DATABASE_URL: "postgres://hostr_test@postgres:5432/hostr_test"
|
||||
REDIS_URL: "redis://redis:6379"
|
||||
DEBUG: "hostr*"
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
export default function (sequelize, DataTypes) {
|
||||
const Activation = sequelize.define('activation', {
|
||||
id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true },
|
||||
activated: false,
|
||||
activated: { type: DataTypes.BOOLEAN, defaultValue: false, primaryKey: true },
|
||||
email: DataTypes.STRING,
|
||||
}, {
|
||||
classMethods: {
|
||||
|
|
|
@ -21,6 +21,11 @@ export default function (sequelize, DataTypes) {
|
|||
md5: DataTypes.STRING(32), // eslint-disable-line new-cap
|
||||
malwarePositives: DataTypes.INTEGER,
|
||||
}, {
|
||||
indexes: [
|
||||
{
|
||||
fields: ['userId'],
|
||||
},
|
||||
],
|
||||
classMethods: {
|
||||
accessed: (id) => sequelize.query(`
|
||||
UPDATE files
|
||||
|
|
|
@ -4,6 +4,11 @@ export default function (sequelize, DataTypes) {
|
|||
successful: { type: DataTypes.BOOLEAN },
|
||||
ip: { type: 'inet' },
|
||||
}, {
|
||||
indexes: [
|
||||
{
|
||||
fields: ['ip'],
|
||||
},
|
||||
],
|
||||
classMethods: {
|
||||
associate: (models) => {
|
||||
Login.belongsTo(models.user);
|
||||
|
|
|
@ -6,6 +6,11 @@ export default function (sequelize, DataTypes) {
|
|||
type: DataTypes.ENUM('direct', 'paypal'), // eslint-disable-line new-cap
|
||||
ip: 'inet',
|
||||
}, {
|
||||
indexes: [
|
||||
{
|
||||
fields: ['userId'],
|
||||
},
|
||||
],
|
||||
classMethods: {
|
||||
associate: (models) => {
|
||||
Transaction.belongsTo(models.user);
|
||||
|
|
|
@ -9,6 +9,11 @@ export default function (sequelize, DataTypes) {
|
|||
banned: DataTypes.BOOLEAN,
|
||||
deleted: DataTypes.BOOLEAN,
|
||||
}, {
|
||||
indexes: [
|
||||
{
|
||||
fields: ['email'],
|
||||
},
|
||||
],
|
||||
classMethods: {
|
||||
associate: (models) => {
|
||||
User.hasMany(models.file);
|
||||
|
|
33
test/fixtures/user.js
vendored
33
test/fixtures/user.js
vendored
|
@ -1,27 +1,34 @@
|
|||
import co from 'co';
|
||||
|
||||
import models from '../../models';
|
||||
|
||||
function createUser() {
|
||||
models.user.create({
|
||||
import debugname from 'debug';
|
||||
const debug = debugname('hostr:db');
|
||||
|
||||
function *createUser() {
|
||||
const user = yield models.user.create({
|
||||
'email': 'test@hostr.co',
|
||||
'password': '$pbkdf2-256-1$2$kBhIDRqFwnF/1ms6ZHfME2o2$a48e8c350d26397fcc88bf0a7a2817b1cdcd1ffffe0521a5',
|
||||
'ip': '127.0.0.1',
|
||||
'plan': 'Free',
|
||||
'activated': true,
|
||||
}).then((user) => {
|
||||
user.save().then(() => {
|
||||
models.sequelize.close();
|
||||
});
|
||||
});
|
||||
yield user.save();
|
||||
yield models.sequelize.close();
|
||||
}
|
||||
|
||||
models.user.findOne({
|
||||
co(function *sync() {
|
||||
debug('Syncing schema');
|
||||
yield models.sequelize.sync();
|
||||
debug('Schema synced');
|
||||
const user = yield models.user.findOne({
|
||||
where: {
|
||||
email: 'test@hostr.co',
|
||||
},
|
||||
}).then((user) => {
|
||||
if (user) {
|
||||
user.destroy().then(createUser);
|
||||
} else {
|
||||
createUser();
|
||||
}
|
||||
});
|
||||
if (user) {
|
||||
yield user.destroy();
|
||||
}
|
||||
debug('Creating test user');
|
||||
yield createUser();
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue