Setup schema and tests.

This commit is contained in:
Jonathan Cremin 2016-06-19 11:17:31 -07:00
parent 806f42e3f8
commit de0284e48a
7 changed files with 49 additions and 17 deletions

View file

@ -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*"

View file

@ -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: {

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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);

29
test/fixtures/user.js vendored
View file

@ -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();
yield user.destroy();
}
debug('Creating test user');
yield createUser();
});