Added support for include relationship alias (as) and nested includes, fixed wrong joi json validation implementation inside parseInclude() function, fixed some associated routes resulted 404 because of prefix option
This commit is contained in:
18
test/fixtures/models/master.js
vendored
Normal file
18
test/fixtures/models/master.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
export default (sequelize, DataTypes) => {
|
||||
return sequelize.define('Master', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
},
|
||||
name: DataTypes.STRING,
|
||||
}, {
|
||||
classMethods: {
|
||||
associate: (models) => {
|
||||
models.Master.hasMany(models.Player, {
|
||||
foreignKey: 'coachId'
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
4
test/fixtures/models/player.js
vendored
4
test/fixtures/models/player.js
vendored
@ -14,6 +14,10 @@ export default (sequelize, DataTypes) => {
|
||||
models.Player.belongsTo(models.Team, {
|
||||
foreignKey: { name: 'teamId' },
|
||||
});
|
||||
models.Player.belongsTo(models.Master, {
|
||||
foreignKey: 'coachId',
|
||||
as: 'Coach',
|
||||
});
|
||||
},
|
||||
},
|
||||
scopes: {
|
||||
|
@ -14,15 +14,16 @@ const modelNames = [
|
||||
{ Singluar: 'City', singular: 'city', Plural: 'Cities', plural: 'cities' },
|
||||
{ Singluar: 'Team', singular: 'team', Plural: 'Teams', plural: 'teams' },
|
||||
{ Singluar: 'Player', singular: 'player', Plural: 'Players', plural: 'players' },
|
||||
{ Singluar: 'Master', singular: 'master', Plural: 'Masters', plural: 'masters' },
|
||||
];
|
||||
|
||||
|
||||
export default (test) => {
|
||||
test.beforeEach('get an open port', async (t) => {
|
||||
test.beforeEach('get an open port', async(t) => {
|
||||
t.context.port = await getPort();
|
||||
});
|
||||
|
||||
test.beforeEach('setup server', async (t) => {
|
||||
test.beforeEach('setup server', async(t) => {
|
||||
const sequelize = t.context.sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
logging: false,
|
||||
@ -46,25 +47,33 @@ export default (test) => {
|
||||
});
|
||||
|
||||
await server.register({
|
||||
register: require('../src/index.js'),
|
||||
options: {
|
||||
name: dbName,
|
||||
register: require('../src/index.js'),
|
||||
options: {
|
||||
name: dbName,
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test.beforeEach('create data', async (t) => {
|
||||
const { Player, Team, City } = t.context.sequelize.models;
|
||||
test.beforeEach('create data', async(t) => {
|
||||
const { Player, Master, Team, City } = t.context.sequelize.models;
|
||||
const city1 = await City.create({ name: 'Healdsburg' });
|
||||
const team1 = await Team.create({ name: 'Baseballs', cityId: city1.id });
|
||||
const team2 = await Team.create({ name: 'Footballs', cityId: city1.id });
|
||||
const master1 = await Master.create({ name: 'Shifu' });
|
||||
const master2 = await Master.create({ name: 'Oogway' });
|
||||
const player1 = await Player.create({
|
||||
name: 'Cat', teamId: team1.id, active: true,
|
||||
name: 'Cat', teamId: team1.id, active: true, coachId: master1.id
|
||||
});
|
||||
const player2 = await Player.create({ name: 'Pinot', teamId: team1.id });
|
||||
const player3 = await Player.create({ name: 'Syrah', teamId: team2.id });
|
||||
t.context.instances = { city1, team1, team2, player1, player2, player3 };
|
||||
const player2 = await Player.create({
|
||||
name: 'Pinot', teamId: team1.id, coachId: master1.id
|
||||
});
|
||||
const player3 = await Player.create({
|
||||
name: 'Syrah', teamId: team2.id, coachId: master2.id
|
||||
});
|
||||
t.context.instances = {
|
||||
city1, team1, team2, player1, player2, player3, master1, master2
|
||||
};
|
||||
});
|
||||
|
||||
// kill the server so that we can exit and don't leak memory
|
||||
|
Reference in New Issue
Block a user