Skip to content
Snippets Groups Projects
Commit 9dd89430 authored by Jure's avatar Jure
Browse files

feat(model-team): migrate team members

parent 68521c31
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ CREATE TABLE teams ( ...@@ -5,7 +5,7 @@ CREATE TABLE teams (
object JSONB, object JSONB,
name TEXT, name TEXT,
role TEXT NOT NULL, role TEXT NOT NULL,
-- members JSONB, members JSONB,
owners JSONB, owners JSONB,
global BOOLEAN, global BOOLEAN,
type TEXT NOT NULL type TEXT NOT NULL
......
exports.up = async knex => {
const { Team, TeamMember } = require('@pubsweet/models')
const teams = await Team.query()
const saves = []
teams.forEach(team => {
if (team.members) {
team.members.forEach(member => {
saves.push(new TeamMember({ user_id: member, team_id: team.id }).save())
})
}
})
await Promise.all(saves)
return knex.schema.table('teams', table => {
table.dropColumn('members')
})
}
process.env.NODE_CONFIG = `{"pubsweet":{
"components":[
"@pubsweet/model-user",
"@pubsweet/model-team",
"@pubsweet/model-team-member",
"@pubsweet/model-fragment"
]
}}`
const { model: Team } = require('../src')
const { model: User } = require('@pubsweet/model-user')
const { dbCleaner } = require('pubsweet-server/test')
const migrate = require('@pubsweet/db-manager/src/commands/migrate')
describe('Members migration', () => {
it('has successfuly migrated members from array to relationship', async () => {
// Clean database and run up until the migration we're testing
await dbCleaner({ to: '1547596236-initial-team-member-migration.js' })
const member1 = await new User({
email: 'some1@example.com',
username: 'member1',
}).save()
const member2 = await new User({
email: 'some2@example.com',
username: 'member2',
}).save()
// Get a team with the previous members array structure
let team = await new Team({
name: 'Test',
role: 'globalSeniorEditor',
}).save()
await Team.raw('UPDATE teams SET members = ?::jsonb WHERE id = ?', [
JSON.stringify([member1.id, member2.id]),
team.id,
])
// Do the migration
await migrate({ to: '1548205275-move-members.js' })
// Check that members have migrated to the relationship
team = await Team.query()
.findById(team.id)
.eager('members')
expect(team.members).toHaveLength(2)
})
})
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment