Circle CI (#113)

Circle CI
This commit is contained in:
Jori Lallo
2017-07-08 21:13:47 -07:00
committed by GitHub
parent 8de135db91
commit b64e47f42a
8 changed files with 107 additions and 74 deletions

24
circle.yml Normal file
View File

@@ -0,0 +1,24 @@
machine:
node:
version: 7.6
services:
- redis
environment:
ENVIRONMENT: test
PATH: "${PATH}:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin"
SEQUELIZE_SECRET: F0E5AD933D7F6FD8F4DBB3E038C501C052DC0593C686D21ACB30AE205D2F634B
DATABASE_URL_TEST: postgres://ubuntu@localhost:5432/circle_test
DATABASE_URL: postgres://ubuntu@localhost:5432/circle_test
dependencies:
override:
- yarn
cache_directories:
- ~/.cache/yarn
test:
pre:
- sequelize db:migrate --url postgres://ubuntu@localhost:5432/circle_test
override:
- yarn test
- yarn lint

View File

@@ -5,8 +5,7 @@ describe('Document model', () => {
test('should initialize with data', () => {
const document = new Document({
id: 123,
title: 'Onboarding',
text: 'Some body text'
text: '# Onboarding\nSome body text',
});
expect(document.title).toBe('Onboarding');
});

View File

@@ -5,8 +5,7 @@
"<rootDir>/server"
],
"setupFiles": [
"<rootDir>/__mocks__/console.js",
"./server/test/helper.js"
"<rootDir>/__mocks__/console.js"
],
"testEnvironment": "node"
}
}

View File

@@ -11,4 +11,4 @@
"use_env_variable": "DATABASE_URL",
"dialect": "postgres"
}
}
}

View File

@@ -1,14 +1,16 @@
module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.renameTable('atlases', 'collections');
queryInterface.addColumn('collections', 'documentStructure', {
type: Sequelize.JSONB,
allowNull: true,
queryInterface.renameTable('atlases', 'collections').then(() => {
queryInterface.addColumn('collections', 'documentStructure', {
type: Sequelize.JSONB,
allowNull: true,
});
});
},
down: (queryInterface, _Sequelize) => {
queryInterface.renameTable('collections', 'atlases');
queryInterface.removeColumn('atlases', 'documentStructure');
queryInterface.renameTable('collections', 'atlases').then(() => {
queryInterface.removeColumn('atlases', 'documentStructure');
});
},
};

View File

@@ -1,40 +1,44 @@
module.exports = {
up: function(queryInterface, Sequelize) {
queryInterface.createTable('views', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
documentId: {
type: Sequelize.UUID,
allowNull: false,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
},
count: {
type: Sequelize.INTEGER,
allowNull: false,
defaultValue: 1,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
queryInterface.addIndex('views', ['documentId', 'userId'], {
indicesType: 'UNIQUE',
});
queryInterface
.createTable('views', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
documentId: {
type: Sequelize.UUID,
allowNull: false,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
},
count: {
type: Sequelize.INTEGER,
allowNull: false,
defaultValue: 1,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
})
.then(() => {
queryInterface.addIndex('views', ['documentId', 'userId'], {
indicesType: 'UNIQUE',
});
});
},
down: function(queryInterface, Sequelize) {
queryInterface.removeIndex('views', ['documentId', 'userId']);
queryInterface.dropTable('views');
queryInterface.removeIndex('views', ['documentId', 'userId']).then(() => {
queryInterface.dropTable('views');
});
},
};

View File

@@ -1,35 +1,39 @@
module.exports = {
up: function(queryInterface, Sequelize) {
queryInterface.createTable('stars', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
documentId: {
type: Sequelize.UUID,
allowNull: false,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
queryInterface.addIndex('stars', ['documentId', 'userId'], {
indicesType: 'UNIQUE',
});
queryInterface
.createTable('stars', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
documentId: {
type: Sequelize.UUID,
allowNull: false,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
})
.then(() => {
queryInterface.addIndex('stars', ['documentId', 'userId'], {
indicesType: 'UNIQUE',
});
});
},
down: function(queryInterface, Sequelize) {
queryInterface.removeIndex('stars', ['documentId', 'userId']);
queryInterface.dropTable('stars');
queryInterface.removeIndex('stars', ['documentId', 'userId']).then(() => {
queryInterface.dropTable('stars');
});
},
};

View File

@@ -1,4 +1,5 @@
require('dotenv').config({ silent: true });
// @flow
require('../../init');
// test environment variables
process.env.DATABASE_URL = process.env.DATABASE_URL_TEST;