Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
public
/
sequelize
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
不要怂,就是干,撸起袖子干!
Commit a1ec8a18
authored
Apr 20, 2020
by
Andy Edwards
Committed by
GitHub
Apr 20, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test: replace Promise.join calls with Promise.all (#12134)
1 parent
39a1f11f
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
381 additions
and
656 deletions
test/integration/associations/belongs-to-many.test.js
test/integration/associations/belongs-to.test.js
test/integration/associations/has-many.test.js
test/integration/associations/has-one.test.js
test/integration/associations/scope.test.js
test/integration/include.test.js
test/integration/include/findAll.test.js
test/integration/include/findAndCountAll.test.js
test/integration/include/findOne.test.js
test/integration/include/limit.test.js
test/integration/include/schema.test.js
test/integration/include/separate.test.js
test/integration/model/attributes.test.js
test/integration/model/attributes/field.test.js
test/integration/model/create.test.js
test/integration/model/findAll/groupedLimit.test.js
test/integration/model/json.test.js
test/integration/transaction.test.js
test/unit/model/validation.test.js
test/integration/associations/belongs-to-many.test.js
View file @
a1ec8a1
...
...
@@ -257,10 +257,7 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
as
:
'users'
,
through
:
User_has_Group
,
foreignKey
:
'id_group'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
Group
.
create
()
).
then
(([
user
,
group
])
=>
{
return
Promise
.
all
([
User
.
create
(),
Group
.
create
()]).
then
(([
user
,
group
])
=>
{
return
user
.
addGroup
(
group
);
}).
then
(()
=>
{
return
User
.
findOne
({
...
...
@@ -307,21 +304,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
User_has_Group
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
Group
.
create
()
).
then
(([
user
,
group
])
=>
{
return
Promise
.
all
([
User
.
create
(),
Group
.
create
()]).
then
(([
user
,
group
])
=>
{
return
user
.
addGroup
(
group
);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findOne
({
return
Promise
.
all
([
User
.
findOne
({
where
:
{},
include
:
[
Group
]
}),
User
.
findAll
({
}),
User
.
findAll
({
include
:
[
Group
]
})
);
})]);
}).
then
(([
user
,
users
])
=>
{
expect
(
user
.
Groups
.
length
).
to
.
be
.
equal
(
1
);
expect
(
user
.
Groups
[
0
].
User_has_Group
.
UserUserSecondId
).
to
.
be
.
ok
;
...
...
@@ -387,23 +378,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
'usergroups'
,
sourceKey
:
'groupSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -479,23 +462,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
'usergroups'
,
targetKey
:
'userSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -577,23 +552,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
'usergroups'
,
sourceKey
:
'groupSecondId'
,
targetKey
:
'userSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -686,23 +653,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
User_has_Group
,
sourceKey
:
'groupSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -782,19 +741,11 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
'usergroups'
,
sourceKey
:
'groupSecondId'
,
targetKey
:
'userSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
))
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)])
.
then
(()
=>
{
return
Promise
.
join
(
user1
.
getGroups
(),
user2
.
getGroups
(),
group1
.
getUsers
(),
group2
.
getUsers
()
return
Promise
.
all
(
[
user1
.
getGroups
(),
user2
.
getGroups
(),
group1
.
getUsers
(),
group2
.
getUsers
()]
);
}).
then
(([
groups1
,
groups2
,
users1
,
users2
])
=>
{
expect
(
groups1
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -863,23 +814,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
'usergroups'
,
foreignKey
:
'groupId2'
,
sourceKey
:
'groupSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -982,23 +925,15 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
User
,
{
through
:
User_has_Group
,
foreignKey
:
'groupId2'
,
sourceKey
:
'groupSecondId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()
).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
join
(
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
));
return
Promise
.
all
([
User
.
create
(),
User
.
create
(),
Group
.
create
(),
Group
.
create
()]).
then
(([
user1
,
user2
,
group1
,
group2
])
=>
{
return
Promise
.
all
([
user1
.
addGroup
(
group1
),
user2
.
addGroup
(
group2
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findAll
({
return
Promise
.
all
([
User
.
findAll
({
where
:
{},
include
:
[
Group
]
}),
Group
.
findAll
({
}),
Group
.
findAll
({
include
:
[
User
]
})
);
})]);
}).
then
(([
users
,
groups
])
=>
{
expect
(
users
.
length
).
to
.
be
.
equal
(
2
);
expect
(
users
[
0
].
Groups
.
length
).
to
.
be
.
equal
(
1
);
...
...
@@ -1076,40 +1011,28 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
Group
.
belongsToMany
(
Company
,
{
through
:
Company_has_Group
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
(),
Group
.
create
(),
Company
.
create
()
).
then
(([
user
,
group
,
company
])
=>
{
return
Promise
.
join
(
user
.
setCompany
(
company
),
company
.
addGroup
(
group
)
);
return
Promise
.
all
([
User
.
create
(),
Group
.
create
(),
Company
.
create
()]).
then
(([
user
,
group
,
company
])
=>
{
return
Promise
.
all
([
user
.
setCompany
(
company
),
company
.
addGroup
(
group
)]);
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findOne
({
return
Promise
.
all
([
User
.
findOne
({
where
:
{},
include
:
[
{
model
:
Company
,
include
:
[
Group
]
}
]
}),
User
.
findAll
({
}),
User
.
findAll
({
include
:
[
{
model
:
Company
,
include
:
[
Group
]
}
]
}),
User
.
findOne
({
}),
User
.
findOne
({
where
:
{},
include
:
[
{
model
:
Company
,
required
:
true
,
include
:
[
Group
]
}
]
}),
User
.
findAll
({
}),
User
.
findAll
({
include
:
[
{
model
:
Company
,
required
:
true
,
include
:
[
Group
]
}
]
})
);
})]);
});
});
});
...
...
@@ -1808,13 +1731,12 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Group
.
create
({});
}).
then
(
group
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
group
.
createUser
({
id
:
1
},
{
through
:
{
isAdmin
:
true
}
}),
group
.
createUser
({
id
:
2
},
{
through
:
{
isAdmin
:
false
}
})
,
()
=>
{
group
.
createUser
({
id
:
2
},
{
through
:
{
isAdmin
:
false
}
})
]).
then
(
()
=>
{
return
UserGroups
.
findAll
();
}
);
});
}).
then
(
userGroups
=>
{
userGroups
.
sort
((
a
,
b
)
=>
{
return
a
.
userId
<
b
.
userId
?
-
1
:
1
;
...
...
@@ -2413,11 +2335,11 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
const
spy
=
sinon
.
spy
();
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
User
.
create
({
name
:
'Matt'
}),
this
.
Project
.
create
({
name
:
'Good Will Hunting'
}),
this
.
Project
.
create
({
name
:
'The Departed'
})
);
]
);
}).
then
(([
user
,
project1
,
project2
])
=>
{
return
user
.
addProjects
([
project1
,
project2
],
{
logging
:
spy
...
...
@@ -2425,12 +2347,9 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
}).
then
(
user
=>
{
expect
(
spy
).
to
.
have
.
been
.
calledTwice
;
spy
.
resetHistory
();
return
Promise
.
join
(
user
,
user
.
getProjects
({
return
Promise
.
all
([
user
,
user
.
getProjects
({
logging
:
spy
})
);
})]);
}).
then
(([
user
,
projects
])
=>
{
expect
(
spy
.
calledOnce
).
to
.
be
.
ok
;
const
project
=
projects
[
0
];
...
...
@@ -2509,11 +2428,11 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Group
.
create
({
groupName
:
'The Illuminati'
}),
this
.
User
.
create
({
name
:
'Matt'
}),
this
.
Project
.
create
({
name
:
'Good Will Hunting'
})
);
]
);
}).
then
(([
group
,
user
,
project
])
=>
{
return
user
.
addProject
(
project
).
then
(()
=>
{
return
group
.
addUser
(
user
).
then
(()
=>
group
);
...
...
@@ -3479,9 +3398,10 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
it
(
'should load with an alias'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
addPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
@@ -3507,9 +3427,10 @@ describe(Support.getTestDialectTeaser('BelongsToMany'), () => {
it
(
'should load all'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
addPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
test/integration/associations/belongs-to.test.js
View file @
a1ec8a1
...
...
@@ -35,23 +35,19 @@ describe(Support.getTestDialectTeaser('BelongsTo'), () => {
Task
.
User
=
Task
.
belongsTo
(
User
,
{
as
:
'user'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Task
.
create
({
return
Promise
.
all
([
Task
.
create
({
id
:
1
,
user
:
{
id
:
1
}
},
{
include
:
[
Task
.
User
]
}),
Task
.
create
({
}),
Task
.
create
({
id
:
2
,
user
:
{
id
:
2
}
},
{
include
:
[
Task
.
User
]
}),
Task
.
create
({
}),
Task
.
create
({
id
:
3
})
);
})]);
}).
then
(
tasks
=>
{
return
Task
.
User
.
get
(
tasks
).
then
(
result
=>
{
expect
(
result
[
tasks
[
0
].
id
].
id
).
to
.
equal
(
tasks
[
0
].
user
.
id
);
...
...
@@ -366,10 +362,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), () => {
Comment
.
belongsTo
(
Post
,
{
foreignKey
:
'post_id'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Post
.
create
(),
Comment
.
create
()
).
then
(
async
([
post
,
comment
])
=>
{
return
Promise
.
all
([
Post
.
create
(),
Comment
.
create
()]).
then
(
async
([
post
,
comment
])
=>
{
expect
(
comment
.
get
(
'post_id'
)).
not
.
to
.
be
.
ok
;
const
setter
=
await
comment
.
setPost
(
post
,
{
save
:
false
});
...
...
@@ -1029,9 +1022,10 @@ describe(Support.getTestDialectTeaser('BelongsTo'), () => {
it
(
'should load with an alias'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
setPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
@@ -1058,9 +1052,10 @@ describe(Support.getTestDialectTeaser('BelongsTo'), () => {
it
(
'should load all'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
setPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
test/integration/associations/has-many.test.js
View file @
a1ec8a1
...
...
@@ -45,10 +45,10 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
include
:
[
Task
]
});
}).
then
(
user
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
user
.
get
(
'Tasks'
)[
0
].
createSubtask
({
title
:
'Make a startup'
,
active
:
false
}),
user
.
get
(
'Tasks'
)[
0
].
createSubtask
({
title
:
'Engage rock stars'
,
active
:
true
})
).
then
(()
=>
user
);
]
).
then
(()
=>
user
);
}).
then
(
user
=>
{
return
expect
(
user
.
countTasks
({
attributes
:
[
Task
.
primaryKeyField
,
'title'
],
...
...
@@ -75,8 +75,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
User
.
Tasks
=
User
.
hasMany
(
Task
,
{
as
:
'tasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{},
...
...
@@ -85,19 +84,16 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{}
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
id
:
3
})
);
})]);
}).
then
(
users
=>
{
return
User
.
Tasks
.
get
(
users
).
then
(
result
=>
{
expect
(
result
[
users
[
0
].
id
].
length
).
to
.
equal
(
3
);
...
...
@@ -116,8 +112,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
User
.
Tasks
=
User
.
hasMany
(
Task
,
{
as
:
'tasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
tasks
:
[
{
title
:
'b'
},
{
title
:
'd'
},
...
...
@@ -126,8 +121,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
tasks
:
[
{
title
:
'a'
},
{
title
:
'c'
},
...
...
@@ -135,8 +129,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[
User
.
Tasks
]
})
);
})]);
}).
then
(
users
=>
{
return
User
.
Tasks
.
get
(
users
,
{
limit
:
2
,
...
...
@@ -168,8 +161,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
Task
.
SubTasks
=
Task
.
hasMany
(
SubTask
,
{
as
:
'subtasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{
title
:
'b'
,
subtasks
:
[
...
...
@@ -190,8 +182,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
SubTasks
]
}]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{
title
:
'a'
,
subtasks
:
[
...
...
@@ -209,8 +200,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
SubTasks
]
}]
})
);
})]);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[{
...
...
@@ -275,8 +265,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
Task
.
Category
=
Task
.
belongsTo
(
Category
,
{
as
:
'category'
,
foreignKey
:
'categoryId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
tasks
:
[
{
title
:
'b'
,
category
:
{}
},
{
title
:
'd'
,
category
:
{}
},
...
...
@@ -285,8 +274,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
Category
]
}]
}),
User
.
create
({
}),
User
.
create
({
tasks
:
[
{
title
:
'a'
,
category
:
{}
},
{
title
:
'c'
,
category
:
{}
},
...
...
@@ -294,8 +282,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
Category
]
}]
})
);
})]);
}).
then
(
users
=>
{
return
User
.
Tasks
.
get
(
users
,
{
limit
:
2
,
...
...
@@ -340,8 +327,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
}).
then
(()
=>
{
return
SubTask
.
sync
({
force
:
true
});
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{
title
:
'b'
,
subtasks
:
[
...
...
@@ -362,8 +348,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
SubTasks
]
}]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{
title
:
'a'
,
subtasks
:
[
...
...
@@ -381,8 +366,7 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
]
},
{
include
:
[{
association
:
User
.
Tasks
,
include
:
[
Task
.
SubTasks
]
}]
})
);
})]);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[{
...
...
@@ -1719,9 +1703,10 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
it
(
'should load with an alias'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
addPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
@@ -1738,9 +1723,10 @@ describe(Support.getTestDialectTeaser('HasMany'), () => {
it
(
'should load all'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
addPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
test/integration/associations/has-one.test.js
View file @
a1ec8a1
...
...
@@ -33,23 +33,19 @@ describe(Support.getTestDialectTeaser('HasOne'), () => {
Player
.
User
=
Player
.
hasOne
(
User
,
{
as
:
'user'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Player
.
create
({
return
Promise
.
all
([
Player
.
create
({
id
:
1
,
user
:
{}
},
{
include
:
[
Player
.
User
]
}),
Player
.
create
({
}),
Player
.
create
({
id
:
2
,
user
:
{}
},
{
include
:
[
Player
.
User
]
}),
Player
.
create
({
}),
Player
.
create
({
id
:
3
})
);
})]);
}).
then
(
players
=>
{
return
Player
.
User
.
get
(
players
).
then
(
result
=>
{
expect
(
result
[
players
[
0
].
id
].
id
).
to
.
equal
(
players
[
0
].
user
.
id
);
...
...
@@ -900,9 +896,10 @@ describe(Support.getTestDialectTeaser('HasOne'), () => {
it
(
'should load with an alias'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
setPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
@@ -929,9 +926,10 @@ describe(Support.getTestDialectTeaser('HasOne'), () => {
it
(
'should load all'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Individual
.
create
({
name
:
'Foo Bar'
}),
this
.
Hat
.
create
({
name
:
'Baz'
}));
this
.
Hat
.
create
({
name
:
'Baz'
})
]);
}).
then
(([
individual
,
hat
])
=>
{
return
individual
.
setPersonwearinghat
(
hat
);
}).
then
(()
=>
{
...
...
test/integration/associations/scope.test.js
View file @
a1ec8a1
...
...
@@ -99,16 +99,12 @@ describe(Support.getTestDialectTeaser('associations'), () => {
describe
(
'1:1'
,
()
=>
{
it
(
'should create, find and include associations with scope values'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Post
.
create
(),
this
.
Comment
.
create
({
return
Promise
.
all
([
this
.
Post
.
create
(),
this
.
Comment
.
create
({
title
:
'I am a comment'
}),
this
.
Comment
.
create
({
}),
this
.
Comment
.
create
({
title
:
'I am a main comment'
,
isMain
:
true
})
);
})]);
}).
then
(([
post
])
=>
{
this
.
post
=
post
;
return
post
.
createComment
({
...
...
@@ -170,7 +166,7 @@ describe(Support.getTestDialectTeaser('associations'), () => {
describe
(
'1:M'
,
()
=>
{
it
(
'should create, find and include associations with scope values'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Post
.
create
(),
this
.
Image
.
create
(),
this
.
Question
.
create
(),
...
...
@@ -180,18 +176,14 @@ describe(Support.getTestDialectTeaser('associations'), () => {
this
.
Comment
.
create
({
title
:
'I am a question comment'
})
);
]
);
}).
then
(([
post
,
image
,
question
,
commentA
,
commentB
])
=>
{
this
.
post
=
post
;
this
.
image
=
image
;
this
.
question
=
question
;
return
Promise
.
join
(
post
.
createComment
({
return
Promise
.
all
([
post
.
createComment
({
title
:
'I am a post comment'
}),
image
.
addComment
(
commentA
),
question
.
setComments
([
commentB
])
);
}),
image
.
addComment
(
commentA
),
question
.
setComments
([
commentB
])]);
}).
then
(()
=>
{
return
this
.
Comment
.
findAll
();
}).
then
(
comments
=>
{
...
...
@@ -202,11 +194,11 @@ describe(Support.getTestDialectTeaser('associations'), () => {
return
comment
.
get
(
'commentable'
);
}).
sort
()).
to
.
deep
.
equal
([
'image'
,
'post'
,
'question'
]);
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
post
.
getComments
(),
this
.
image
.
getComments
(),
this
.
question
.
getComments
()
);
]
);
}).
then
(([
postComments
,
imageComments
,
questionComments
])
=>
{
expect
(
postComments
.
length
).
to
.
equal
(
1
);
expect
(
postComments
[
0
].
get
(
'title'
)).
to
.
equal
(
'I am a post comment'
);
...
...
@@ -217,27 +209,19 @@ describe(Support.getTestDialectTeaser('associations'), () => {
return
[
postComments
[
0
],
imageComments
[
0
],
questionComments
[
0
]];
}).
then
(([
postComment
,
imageComment
,
questionComment
])
=>
{
return
Promise
.
join
(
postComment
.
getItem
(),
imageComment
.
getItem
(),
questionComment
.
getItem
()
);
return
Promise
.
all
([
postComment
.
getItem
(),
imageComment
.
getItem
(),
questionComment
.
getItem
()]);
}).
then
(([
post
,
image
,
question
])
=>
{
expect
(
post
).
to
.
be
.
instanceof
(
this
.
Post
);
expect
(
image
).
to
.
be
.
instanceof
(
this
.
Image
);
expect
(
question
).
to
.
be
.
instanceof
(
this
.
Question
);
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Post
.
findOne
({
return
Promise
.
all
([
this
.
Post
.
findOne
({
include
:
[
this
.
Comment
]
}),
this
.
Image
.
findOne
({
}),
this
.
Image
.
findOne
({
include
:
[
this
.
Comment
]
}),
this
.
Question
.
findOne
({
}),
this
.
Question
.
findOne
({
include
:
[
this
.
Comment
]
})
);
})]);
}).
then
(([
post
,
image
,
question
])
=>
{
expect
(
post
.
comments
.
length
).
to
.
equal
(
1
);
expect
(
post
.
comments
[
0
].
get
(
'title'
)).
to
.
equal
(
'I am a post comment'
);
...
...
@@ -294,21 +278,16 @@ describe(Support.getTestDialectTeaser('associations'), () => {
});
it
(
'should include associations with operator scope values'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Post
.
create
(),
this
.
Comment
.
create
({
return
Promise
.
all
([
this
.
Post
.
create
(),
this
.
Comment
.
create
({
title
:
'I am a blue comment'
,
type
:
'blue'
}),
this
.
Comment
.
create
({
}),
this
.
Comment
.
create
({
title
:
'I am a red comment'
,
type
:
'red'
}),
this
.
Comment
.
create
({
}),
this
.
Comment
.
create
({
title
:
'I am a green comment'
,
type
:
'green'
})
);
})]);
}).
then
(([
post
,
commentA
,
commentB
,
commentC
])
=>
{
this
.
post
=
post
;
return
post
.
addComments
([
commentA
,
commentB
,
commentC
]);
...
...
@@ -344,13 +323,10 @@ describe(Support.getTestDialectTeaser('associations'), () => {
});
it
(
'should create, find and include associations with scope values'
,
function
()
{
return
Promise
.
join
(
this
.
Post
.
sync
({
force
:
true
}),
this
.
Tag
.
sync
({
force
:
true
})
).
then
(()
=>
{
return
Promise
.
all
([
this
.
Post
.
sync
({
force
:
true
}),
this
.
Tag
.
sync
({
force
:
true
})]).
then
(()
=>
{
return
this
.
PostTag
.
sync
({
force
:
true
});
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Post
.
create
(),
this
.
Post
.
create
(),
this
.
Post
.
create
(),
...
...
@@ -358,29 +334,29 @@ describe(Support.getTestDialectTeaser('associations'), () => {
this
.
Tag
.
create
({
type
:
'category'
}),
this
.
Tag
.
create
({
type
:
'tag'
}),
this
.
Tag
.
create
({
type
:
'tag'
})
);
]
);
}).
then
(([
postA
,
postB
,
postC
,
categoryA
,
categoryB
,
tagA
,
tagB
])
=>
{
this
.
postA
=
postA
;
this
.
postB
=
postB
;
this
.
postC
=
postC
;
return
Promise
.
join
(
return
Promise
.
all
([
postA
.
addCategory
(
categoryA
),
postB
.
setCategories
([
categoryB
]),
postC
.
createCategory
(),
postA
.
createTag
(),
postB
.
addTag
(
tagA
),
postC
.
setTags
([
tagB
])
);
]
);
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
postA
.
getCategories
(),
this
.
postA
.
getTags
(),
this
.
postB
.
getCategories
(),
this
.
postB
.
getTags
(),
this
.
postC
.
getCategories
(),
this
.
postC
.
getTags
()
);
]
);
}).
then
(([
postACategories
,
postATags
,
postBCategories
,
postBTags
,
postCCategories
,
postCTags
])
=>
{
expect
(
postACategories
.
length
).
to
.
equal
(
1
);
expect
(
postATags
.
length
).
to
.
equal
(
1
);
...
...
@@ -396,8 +372,7 @@ describe(Support.getTestDialectTeaser('associations'), () => {
expect
(
postCCategories
[
0
].
get
(
'type'
)).
to
.
equal
(
'category'
);
expect
(
postCTags
[
0
].
get
(
'type'
)).
to
.
equal
(
'tag'
);
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Post
.
findOne
({
return
Promise
.
all
([
this
.
Post
.
findOne
({
where
:
{
id
:
this
.
postA
.
get
(
'id'
)
},
...
...
@@ -405,8 +380,7 @@ describe(Support.getTestDialectTeaser('associations'), () => {
{
model
:
this
.
Tag
,
as
:
'tags'
},
{
model
:
this
.
Tag
,
as
:
'categories'
}
]
}),
this
.
Post
.
findOne
({
}),
this
.
Post
.
findOne
({
where
:
{
id
:
this
.
postB
.
get
(
'id'
)
},
...
...
@@ -414,8 +388,7 @@ describe(Support.getTestDialectTeaser('associations'), () => {
{
model
:
this
.
Tag
,
as
:
'tags'
},
{
model
:
this
.
Tag
,
as
:
'categories'
}
]
}),
this
.
Post
.
findOne
({
}),
this
.
Post
.
findOne
({
where
:
{
id
:
this
.
postC
.
get
(
'id'
)
},
...
...
@@ -423,8 +396,7 @@ describe(Support.getTestDialectTeaser('associations'), () => {
{
model
:
this
.
Tag
,
as
:
'tags'
},
{
model
:
this
.
Tag
,
as
:
'categories'
}
]
})
);
})]);
}).
then
(([
postA
,
postB
,
postC
])
=>
{
expect
(
postA
.
get
(
'categories'
).
length
).
to
.
equal
(
1
);
expect
(
postA
.
get
(
'tags'
).
length
).
to
.
equal
(
1
);
...
...
@@ -532,52 +504,35 @@ describe(Support.getTestDialectTeaser('associations'), () => {
});
it
(
'should create, find and include associations with scope values'
,
function
()
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Post
.
sync
({
force
:
true
}),
this
.
Image
.
sync
({
force
:
true
}),
this
.
Question
.
sync
({
force
:
true
}),
this
.
Tag
.
sync
({
force
:
true
})
).
then
(()
=>
{
]
).
then
(()
=>
{
return
this
.
ItemTag
.
sync
({
force
:
true
});
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Post
.
create
(),
this
.
Image
.
create
(),
this
.
Question
.
create
(),
this
.
Tag
.
create
({
name
:
'tagA'
}),
this
.
Tag
.
create
({
name
:
'tagB'
}),
this
.
Tag
.
create
({
name
:
'tagC'
})
);
]
);
}).
then
(([
post
,
image
,
question
,
tagA
,
tagB
,
tagC
])
=>
{
this
.
post
=
post
;
this
.
image
=
image
;
this
.
question
=
question
;
return
Promise
.
join
(
post
.
setTags
([
tagA
]).
then
(()
=>
{
return
Promise
.
join
(
post
.
createTag
({
name
:
'postTag'
}),
post
.
addTag
(
tagB
)
);
}),
image
.
setTags
([
tagB
]).
then
(()
=>
{
return
Promise
.
join
(
image
.
createTag
({
name
:
'imageTag'
}),
image
.
addTag
(
tagC
)
);
}),
question
.
setTags
([
tagC
]).
then
(()
=>
{
return
Promise
.
join
(
question
.
createTag
({
name
:
'questionTag'
}),
question
.
addTag
(
tagA
)
);
})
);
return
Promise
.
all
([
post
.
setTags
([
tagA
]).
then
(()
=>
{
return
Promise
.
all
([
post
.
createTag
({
name
:
'postTag'
}),
post
.
addTag
(
tagB
)]);
}),
image
.
setTags
([
tagB
]).
then
(()
=>
{
return
Promise
.
all
([
image
.
createTag
({
name
:
'imageTag'
}),
image
.
addTag
(
tagC
)]);
}),
question
.
setTags
([
tagC
]).
then
(()
=>
{
return
Promise
.
all
([
question
.
createTag
({
name
:
'questionTag'
}),
question
.
addTag
(
tagA
)]);
})]);
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
post
.
getTags
(),
this
.
image
.
getTags
(),
this
.
question
.
getTags
()
).
then
(([
postTags
,
imageTags
,
questionTags
])
=>
{
return
Promise
.
all
([
this
.
post
.
getTags
(),
this
.
image
.
getTags
(),
this
.
question
.
getTags
()]).
then
(([
postTags
,
imageTags
,
questionTags
])
=>
{
expect
(
postTags
.
length
).
to
.
equal
(
3
);
expect
(
imageTags
.
length
).
to
.
equal
(
3
);
expect
(
questionTags
.
length
).
to
.
equal
(
3
);
...
...
@@ -594,20 +549,16 @@ describe(Support.getTestDialectTeaser('associations'), () => {
return
tag
.
name
;
}).
sort
()).
to
.
deep
.
equal
([
'questionTag'
,
'tagA'
,
'tagC'
]);
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Post
.
findOne
({
return
Promise
.
all
([
this
.
Post
.
findOne
({
where
:
{},
include
:
[
this
.
Tag
]
}),
this
.
Image
.
findOne
({
}),
this
.
Image
.
findOne
({
where
:
{},
include
:
[
this
.
Tag
]
}),
this
.
Question
.
findOne
({
}),
this
.
Question
.
findOne
({
where
:
{},
include
:
[
this
.
Tag
]
})
).
then
(([
post
,
image
,
question
])
=>
{
})]).
then
(([
post
,
image
,
question
])
=>
{
expect
(
post
.
tags
.
length
).
to
.
equal
(
3
);
expect
(
image
.
tags
.
length
).
to
.
equal
(
3
);
expect
(
question
.
tags
.
length
).
to
.
equal
(
3
);
...
...
test/integration/include.test.js
View file @
a1ec8a1
...
...
@@ -168,10 +168,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
};
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Person
.
create
(),
Company
.
create
()
).
then
(([
person
,
company
])
=>
{
return
Promise
.
all
([
Person
.
create
(),
Company
.
create
()]).
then
(([
person
,
company
])
=>
{
return
person
.
setEmployer
(
company
);
});
}).
then
(()
=>
{
...
...
@@ -214,14 +211,11 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
User
.
create
().
then
(
user
=>
{
return
Promise
.
join
(
user
.
createTask
({
return
Promise
.
all
([
user
.
createTask
({
title
:
'trivial'
}),
user
.
createTask
({
}),
user
.
createTask
({
title
:
'pursuit'
})
);
})]);
}).
then
(()
=>
{
return
User
.
findOne
({
include
:
[
...
...
@@ -271,10 +265,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
user
:
User
.
create
(),
group
:
Group
.
create
()
}).
then
(
props
=>
{
return
Promise
.
join
(
props
.
task
.
setUser
(
props
.
user
),
props
.
user
.
setGroup
(
props
.
group
)
).
then
(()
=>
props
);
return
Promise
.
all
([
props
.
task
.
setUser
(
props
.
user
),
props
.
user
.
setGroup
(
props
.
group
)]).
then
(()
=>
props
);
}).
then
(
props
=>
{
return
Task
.
findOne
({
where
:
{
...
...
test/integration/include/findAll.test.js
View file @
a1ec8a1
...
...
@@ -250,28 +250,20 @@ describe(Support.getTestDialectTeaser('Include'), () => {
Tag
.
belongsToMany
(
Product
,
{
through
:
ProductTag
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Set
.
bulkCreate
([
return
Promise
.
all
([
Set
.
bulkCreate
([
{
title
:
'office'
}
]),
Product
.
bulkCreate
([
]),
Product
.
bulkCreate
([
{
title
:
'Chair'
},
{
title
:
'Desk'
},
{
title
:
'Dress'
}
]),
Tag
.
bulkCreate
([
]),
Tag
.
bulkCreate
([
{
name
:
'A'
},
{
name
:
'B'
},
{
name
:
'C'
}
])
).
then
(()
=>
{
return
Promise
.
join
(
Set
.
findAll
(),
Product
.
findAll
(),
Tag
.
findAll
()
);
])]).
then
(()
=>
{
return
Promise
.
all
([
Set
.
findAll
(),
Product
.
findAll
(),
Tag
.
findAll
()]);
}).
then
(([
sets
,
products
,
tags
])
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
sets
[
0
].
addProducts
([
products
[
0
],
products
[
1
]]),
products
[
0
].
addTag
(
tags
[
0
],
{
priority
:
1
}).
then
(()
=>
{
return
products
[
0
].
addTag
(
tags
[
1
],
{
priority
:
2
});
...
...
@@ -283,7 +275,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
}).
then
(()
=>
{
return
products
[
2
].
addTag
(
tags
[
2
],
{
priority
:
0
});
})
);
]
);
}).
then
(()
=>
{
return
Set
.
findAll
({
include
:
[{
...
...
@@ -453,8 +445,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
G
.
belongsTo
(
H
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
A
.
bulkCreate
([
return
Promise
.
all
([
A
.
bulkCreate
([
{},
{},
{},
...
...
@@ -465,8 +456,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
{}
]).
then
(()
=>
{
return
A
.
findAll
();
}),
(
function
(
singles
)
{
}),
(
function
(
singles
)
{
let
promise
=
Promise
.
resolve
(),
previousInstance
,
b
;
...
...
@@ -489,8 +479,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
});
return
promise
;
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])
).
then
(([
as
,
b
])
=>
{
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])]).
then
(([
as
,
b
])
=>
{
return
Promise
.
all
(
as
.
map
(
a
=>
{
return
a
.
setB
(
b
);
}));
...
...
@@ -545,8 +534,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
G
.
belongsTo
(
H
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
A
.
bulkCreate
([
return
Promise
.
all
([
A
.
bulkCreate
([
{},
{},
{},
...
...
@@ -557,8 +545,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
{}
]).
then
(()
=>
{
return
A
.
findAll
();
}),
(
function
(
singles
)
{
}),
(
function
(
singles
)
{
let
promise
=
Promise
.
resolve
(),
previousInstance
,
b
;
...
...
@@ -587,8 +574,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
});
return
promise
;
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])
).
then
(([
as
,
b
])
=>
{
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])]).
then
(([
as
,
b
])
=>
{
return
Promise
.
all
(
as
.
map
(
a
=>
{
return
a
.
setB
(
b
);
}));
...
...
@@ -665,7 +651,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
const
order2
=
results
.
orders
[
1
];
const
order3
=
results
.
orders
[
2
];
return
Promise
.
join
(
return
Promise
.
all
([
user1
.
setItemA
(
item1
),
user1
.
setItemB
(
item2
),
user1
.
setOrder
(
order3
),
...
...
@@ -675,7 +661,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
user3
.
setItemA
(
item1
),
user3
.
setItemB
(
item4
),
user3
.
setOrder
(
order1
)
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
'include'
:
[
...
...
@@ -729,14 +715,14 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
Tag
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
products
[
0
].
addTag
(
results
.
tags
[
0
],
{
through
:
{
priority
:
1
}
}),
results
.
products
[
0
].
addTag
(
results
.
tags
[
1
],
{
through
:
{
priority
:
2
}
}),
results
.
products
[
1
].
addTag
(
results
.
tags
[
1
],
{
through
:
{
priority
:
1
}
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
0
],
{
through
:
{
priority
:
3
}
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
1
],
{
through
:
{
priority
:
1
}
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
2
],
{
through
:
{
priority
:
2
}
})
);
]
);
}).
then
(()
=>
{
return
Product
.
findAll
({
include
:
[
...
...
@@ -809,10 +795,10 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
User
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setGroup
(
results
.
groups
[
1
]),
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
])
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -847,10 +833,10 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
User
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setGroup
(
results
.
groups
[
1
]),
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
])
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -931,13 +917,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
Category
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setGroup
(
results
.
groups
[
1
]),
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
]),
Promise
.
all
(
results
.
groups
.
map
(
group
=>
{
return
group
.
setCategories
(
results
.
categories
);
}))
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -984,13 +970,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
Category
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setTeam
(
results
.
groups
[
1
]),
results
.
users
[
1
].
setTeam
(
results
.
groups
[
0
]),
Promise
.
all
(
results
.
groups
.
map
(
group
=>
{
return
group
.
setTags
(
results
.
categories
);
}))
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -1037,13 +1023,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
Category
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setGroup
(
results
.
groups
[
1
]),
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
]),
Promise
.
all
(
results
.
groups
.
map
(
group
=>
{
return
group
.
setCategories
(
results
.
categories
);
}))
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -1083,10 +1069,10 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
User
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
1
].
setLeaderOf
(
results
.
projects
[
1
]),
results
.
users
[
0
].
setLeaderOf
(
results
.
projects
[
0
])
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -1132,14 +1118,14 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
Tag
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
products
[
0
].
addTag
(
results
.
tags
[
0
],
{
priority
:
1
}),
results
.
products
[
0
].
addTag
(
results
.
tags
[
1
],
{
priority
:
2
}),
results
.
products
[
1
].
addTag
(
results
.
tags
[
1
],
{
priority
:
1
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
0
],
{
priority
:
3
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
1
],
{
priority
:
1
}),
results
.
products
[
2
].
addTag
(
results
.
tags
[
2
],
{
priority
:
2
})
);
]
);
}).
then
(()
=>
{
return
Product
.
findAll
({
include
:
[
...
...
@@ -1297,12 +1283,12 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
User
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
0
].
setGroup
(
results
.
groups
[
0
]),
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
]),
results
.
users
[
2
].
setGroup
(
results
.
groups
[
0
]),
results
.
users
[
3
].
setGroup
(
results
.
groups
[
1
])
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
@@ -1639,12 +1625,12 @@ describe(Support.getTestDialectTeaser('Include'), () => {
Category
.
belongsTo
(
Post
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
Post
.
create
({
'public'
:
true
}),
Post
.
create
({
'public'
:
true
}),
Post
.
create
({
'public'
:
true
}),
Post
.
create
({
'public'
:
true
})
).
then
(
posts
=>
{
]
).
then
(
posts
=>
{
return
Promise
.
all
(
posts
.
slice
(
1
,
3
).
map
(
post
=>
{
return
post
.
createCategory
({
slug
:
'food'
});
}));
...
...
@@ -1779,18 +1765,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
Company
.
hasMany
(
User
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
User
.
create
({
lastName
:
'Albertsen'
}),
User
.
create
({
lastName
:
'Zenith'
}),
User
.
create
({
lastName
:
'Hansen'
}),
Company
.
create
({
rank
:
1
}),
Company
.
create
({
rank
:
2
})
).
then
(([
albertsen
,
zenith
,
hansen
,
company1
,
company2
])
=>
{
return
Promise
.
join
(
]
).
then
(([
albertsen
,
zenith
,
hansen
,
company1
,
company2
])
=>
{
return
Promise
.
all
([
albertsen
.
setCompany
(
company1
),
zenith
.
setCompany
(
company2
),
hansen
.
setCompany
(
company2
)
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
test/integration/include/findAndCountAll.test.js
View file @
a1ec8a1
...
...
@@ -32,28 +32,24 @@ describe(Support.getTestDialectTeaser('Include'), () => {
// Sync them
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
// Create an enviroment
return
Promise
.
join
(
Project
.
bulkCreate
([
return
Promise
.
all
([
Project
.
bulkCreate
([
{
id
:
1
,
name
:
'No tasks'
},
{
id
:
2
,
name
:
'No tasks no employees'
},
{
id
:
3
,
name
:
'No employees'
},
{
id
:
4
,
name
:
'In progress A'
},
{
id
:
5
,
name
:
'In progress B'
},
{
id
:
6
,
name
:
'In progress C'
}
]),
Task
.
bulkCreate
([
]),
Task
.
bulkCreate
([
{
name
:
'Important task'
,
fk
:
3
},
{
name
:
'Important task'
,
fk
:
4
},
{
name
:
'Important task'
,
fk
:
5
},
{
name
:
'Important task'
,
fk
:
6
}
]),
Employee
.
bulkCreate
([
]),
Employee
.
bulkCreate
([
{
name
:
'Jane Doe'
,
fk
:
1
},
{
name
:
'John Doe'
,
fk
:
4
},
{
name
:
'Jane John Doe'
,
fk
:
5
},
{
name
:
'John Jane Doe'
,
fk
:
6
}
])
).
then
(()
=>
{
])]).
then
(()
=>
{
//Find all projects with tasks and employees
const
availableProjects
=
3
;
const
limit
=
2
;
...
...
@@ -101,15 +97,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
// Create an enviroment
return
Promise
.
join
(
User
.
bulkCreate
([
return
Promise
.
all
([
User
.
bulkCreate
([
{
name
:
'Youtube'
},
{
name
:
'Facebook'
},
{
name
:
'Google'
},
{
name
:
'Yahoo'
},
{
name
:
'404'
}
]),
SomeConnection
.
bulkCreate
([
// Lets count, m: A and u: 1
]),
SomeConnection
.
bulkCreate
([
// Lets count, m: A and u: 1
{
u
:
1
,
m
:
'A'
,
fk
:
1
},
// 1 // Will be deleted
{
u
:
2
,
m
:
'A'
,
fk
:
1
},
{
u
:
3
,
m
:
'A'
,
fk
:
1
},
...
...
@@ -134,22 +128,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
{
u
:
2
,
m
:
'B'
,
fk
:
2
},
{
u
:
1
,
m
:
'A'
,
fk
:
4
},
// 4
{
u
:
4
,
m
:
'A'
,
fk
:
2
}
]),
A
.
bulkCreate
([
]),
A
.
bulkCreate
([
{
name
:
'Just'
},
{
name
:
'for'
},
{
name
:
'testing'
},
{
name
:
'proposes'
},
{
name
:
'only'
}
]),
B
.
bulkCreate
([
]),
B
.
bulkCreate
([
{
name
:
'this should not'
},
{
name
:
'be loaded'
}
]),
C
.
bulkCreate
([
]),
C
.
bulkCreate
([
{
name
:
'because we only want A'
}
])
).
then
(()
=>
{
])]).
then
(()
=>
{
// Delete some of conns to prove the concept
return
SomeConnection
.
destroy
({
where
:
{
m
:
'A'
,
...
...
test/integration/include/findOne.test.js
View file @
a1ec8a1
...
...
@@ -151,10 +151,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
{
return
Promise
.
join
(
A
.
create
({}),
B
.
create
({})
);
return
Promise
.
all
([
A
.
create
({}),
B
.
create
({})]);
})
.
then
(([
a
,
b
])
=>
{
return
a
.
addB
(
b
,
{
through
:
{
name
:
'Foobar'
}
});
...
...
@@ -293,9 +290,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
G
.
belongsTo
(
H
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
A
.
create
({}),
(
function
(
singles
)
{
return
Promise
.
all
([
A
.
create
({}),
(
function
(
singles
)
{
let
promise
=
Promise
.
resolve
(),
previousInstance
,
b
;
...
...
@@ -324,8 +319,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
});
return
promise
;
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])
).
then
(([
a
,
b
])
=>
{
})([
B
,
C
,
D
,
E
,
F
,
G
,
H
])]).
then
(([
a
,
b
])
=>
{
return
a
.
setB
(
b
);
}).
then
(()
=>
{
return
A
.
findOne
({
...
...
test/integration/include/limit.test.js
View file @
a1ec8a1
...
...
@@ -128,15 +128,15 @@ describe(Support.getTestDialectTeaser('Include'), () => {
*/
it
(
'supports many-to-many association with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
))
))
.
then
(([
projects
,
users
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
2
].
addUser
(
users
[
0
])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -156,17 +156,17 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 2 levels of required many-to-many associations'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
2
].
addUser
(
users
[
0
]),
users
[
0
].
addHobby
(
hobbies
[
0
])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -188,18 +188,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 2 levels of required many-to-many associations with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
2
].
addUser
(
users
[
0
]),
users
[
0
].
addHobby
(
hobbies
[
0
]),
users
[
1
].
addHobby
(
hobbies
[
1
])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -223,18 +223,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 2 levels of required many-to-many associations with through.where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
,
hobbies
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
2
].
addUser
(
users
[
0
]),
users
[
0
].
addHobby
(
hobbies
[
0
]),
users
[
1
].
addHobby
(
hobbies
[
1
])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -261,13 +261,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 3 levels of required many-to-many associations with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Task
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'Charlotte'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
tasks
,
projects
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
tasks
,
projects
,
users
,
hobbies
])
=>
Promise
.
all
([
tasks
[
0
].
addProject
(
projects
[
0
]),
tasks
[
1
].
addProject
(
projects
[
1
]),
tasks
[
2
].
addProject
(
projects
[
2
]),
...
...
@@ -276,7 +276,7 @@ describe(Support.getTestDialectTeaser('Include'), () => {
projects
[
2
].
addUser
(
users
[
0
]),
users
[
0
].
addHobby
(
hobbies
[
0
]),
users
[
1
].
addHobby
(
hobbies
[
1
])
))
]
))
.
then
(()
=>
this
.
Task
.
findAll
({
include
:
[{
model
:
this
.
Project
,
...
...
@@ -304,14 +304,13 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-many association'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
))
))
.
then
(([
projects
,
users
])
=>
Promise
.
join
(
projects
[
0
].
addUser
(
users
[
0
]),
// alpha
projects
[
2
].
addUser
(
users
[
0
])
// charlie
))
]))
.
then
(([
projects
,
users
])
=>
Promise
.
all
([
// alpha
projects
[
0
].
addUser
(
users
[
0
]),
// charlie
projects
[
2
].
addUser
(
users
[
0
])]))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -329,19 +328,19 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 2 required many-to-many association'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
,
'delta'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'David'
)),
this
.
Task
.
bulkCreate
(
build
(
'a'
,
'c'
,
'd'
))
))
.
then
(([
projects
,
users
,
tasks
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
,
tasks
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
0
].
addTask
(
tasks
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
2
].
addTask
(
tasks
[
1
]),
projects
[
3
].
addUser
(
users
[
2
]),
projects
[
3
].
addTask
(
tasks
[
2
])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -365,14 +364,11 @@ describe(Support.getTestDialectTeaser('Include'), () => {
*/
it
(
'supports required one-to-many association'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Post
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
))
))
.
then
(([
posts
,
comments
])
=>
Promise
.
join
(
posts
[
0
].
addComment
(
comments
[
0
]),
posts
[
2
].
addComment
(
comments
[
1
])
))
]))
.
then
(([
posts
,
comments
])
=>
Promise
.
all
([
posts
[
0
].
addComment
(
comments
[
0
]),
posts
[
2
].
addComment
(
comments
[
1
])]))
.
then
(()
=>
this
.
Post
.
findAll
({
include
:
[{
model
:
this
.
Comment
,
...
...
@@ -390,15 +386,15 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required one-to-many association with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Post
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
,
'comment2'
))
))
.
then
(([
posts
,
comments
])
=>
Promise
.
join
(
]
))
.
then
(([
posts
,
comments
])
=>
Promise
.
all
([
posts
[
0
].
addComment
(
comments
[
0
]),
posts
[
1
].
addComment
(
comments
[
1
]),
posts
[
2
].
addComment
(
comments
[
2
])
))
]
))
.
then
(()
=>
this
.
Post
.
findAll
({
include
:
[{
model
:
this
.
Comment
,
...
...
@@ -423,15 +419,15 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required one-to-many association with where clause (findOne)'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Post
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
)),
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
,
'comment2'
))
))
.
then
(([
posts
,
comments
])
=>
Promise
.
join
(
]
))
.
then
(([
posts
,
comments
])
=>
Promise
.
all
([
posts
[
0
].
addComment
(
comments
[
0
]),
posts
[
1
].
addComment
(
comments
[
1
]),
posts
[
2
].
addComment
(
comments
[
2
])
))
]
))
.
then
(()
=>
this
.
Post
.
findOne
({
include
:
[{
model
:
this
.
Comment
,
...
...
@@ -448,18 +444,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports 2 levels of required one-to-many associations'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'Charlotte'
,
'David'
)),
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
)),
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
,
'comment2'
))
))
.
then
(([
users
,
posts
,
comments
])
=>
Promise
.
join
(
]
))
.
then
(([
users
,
posts
,
comments
])
=>
Promise
.
all
([
users
[
0
].
addPost
(
posts
[
0
]),
users
[
1
].
addPost
(
posts
[
1
]),
users
[
3
].
addPost
(
posts
[
2
]),
posts
[
0
].
addComment
(
comments
[
0
]),
posts
[
2
].
addComment
(
comments
[
2
])
))
]
))
.
then
(()
=>
this
.
User
.
findAll
({
include
:
[{
model
:
this
.
Post
,
...
...
@@ -484,19 +480,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
*/
it
(
'supports required one-to-many association with nested required many-to-many association'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'Charlotte'
,
'David'
)),
this
.
Post
.
bulkCreate
(
build
(
'alpha'
,
'charlie'
,
'delta'
)),
this
.
Tag
.
bulkCreate
(
build
(
'atag'
,
'btag'
,
'dtag'
))
))
.
then
(([
users
,
posts
,
tags
])
=>
Promise
.
join
(
]
))
.
then
(([
users
,
posts
,
tags
])
=>
Promise
.
all
([
users
[
0
].
addPost
(
posts
[
0
]),
users
[
2
].
addPost
(
posts
[
1
]),
users
[
3
].
addPost
(
posts
[
2
]),
posts
[
0
].
addTag
([
tags
[
0
]]),
posts
[
2
].
addTag
([
tags
[
2
]])
))
]
))
.
then
(()
=>
this
.
User
.
findAll
({
include
:
[{
model
:
this
.
Post
,
...
...
@@ -518,19 +513,18 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-many association with nested required one-to-many association'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Project
.
bulkCreate
(
build
(
'alpha'
,
'bravo'
,
'charlie'
,
'delta'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'David'
)),
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
))
))
.
then
(([
projects
,
users
,
posts
])
=>
Promise
.
join
(
]
))
.
then
(([
projects
,
users
,
posts
])
=>
Promise
.
all
([
projects
[
0
].
addUser
(
users
[
0
]),
projects
[
1
].
addUser
(
users
[
1
]),
projects
[
3
].
addUser
(
users
[
2
]),
users
[
0
].
addPost
([
posts
[
0
]]),
users
[
2
].
addPost
([
posts
[
2
]])
))
]
))
.
then
(()
=>
this
.
Project
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -553,20 +547,19 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-one association with nested many-to-many association with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
,
'post3'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'Charlotte'
,
'David'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
posts
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
posts
,
users
,
hobbies
])
=>
Promise
.
all
([
posts
[
0
].
setUser
(
users
[
0
]),
posts
[
1
].
setUser
(
users
[
1
]),
posts
[
3
].
setUser
(
users
[
3
]),
users
[
0
].
addHobby
(
hobbies
[
0
]),
users
[
1
].
addHobby
(
hobbies
[
1
]),
users
[
3
].
addHobby
(
hobbies
[
0
])
))
]
))
.
then
(()
=>
this
.
Post
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -590,20 +583,19 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-one association with nested many-to-many association with through.where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
,
'post3'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
,
'Charlotte'
,
'David'
)),
this
.
Hobby
.
bulkCreate
(
build
(
'archery'
,
'badminton'
))
))
.
then
(([
posts
,
users
,
hobbies
])
=>
Promise
.
join
(
]
))
.
then
(([
posts
,
users
,
hobbies
])
=>
Promise
.
all
([
posts
[
0
].
setUser
(
users
[
0
]),
posts
[
1
].
setUser
(
users
[
1
]),
posts
[
3
].
setUser
(
users
[
3
]),
users
[
0
].
addHobby
(
hobbies
[
0
]),
users
[
1
].
addHobby
(
hobbies
[
1
]),
users
[
3
].
addHobby
(
hobbies
[
0
])
))
]
))
.
then
(()
=>
this
.
Post
.
findAll
({
include
:
[{
model
:
this
.
User
,
...
...
@@ -630,30 +622,27 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-one association with multiple nested associations with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
,
'comment2'
,
'comment3'
,
'comment4'
,
'comment5'
)),
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
,
'post3'
,
'post4'
)),
this
.
User
.
bulkCreate
(
build
(
'Alice'
,
'Bob'
)),
this
.
Tag
.
bulkCreate
(
build
(
'tag0'
,
'tag1'
))
))
.
then
(([
comments
,
posts
,
users
,
tags
])
=>
Promise
.
join
(
]
))
.
then
(([
comments
,
posts
,
users
,
tags
])
=>
Promise
.
all
([
comments
[
0
].
setPost
(
posts
[
0
]),
comments
[
1
].
setPost
(
posts
[
1
]),
comments
[
3
].
setPost
(
posts
[
2
]),
comments
[
4
].
setPost
(
posts
[
3
]),
comments
[
5
].
setPost
(
posts
[
4
]),
posts
[
0
].
addTag
(
tags
[
0
]),
posts
[
3
].
addTag
(
tags
[
0
]),
posts
[
4
].
addTag
(
tags
[
0
]),
posts
[
1
].
addTag
(
tags
[
1
]),
posts
[
0
].
setUser
(
users
[
0
]),
posts
[
2
].
setUser
(
users
[
0
]),
posts
[
4
].
setUser
(
users
[
0
]),
posts
[
1
].
setUser
(
users
[
1
])
))
]
))
.
then
(()
=>
this
.
Comment
.
findAll
({
include
:
[{
model
:
this
.
Post
,
...
...
@@ -682,20 +671,19 @@ describe(Support.getTestDialectTeaser('Include'), () => {
it
(
'supports required many-to-one association with nested one-to-many association with where clause'
,
function
()
{
return
this
.
sequelize
.
sync
({
force
:
true
})
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
this
.
Comment
.
bulkCreate
(
build
(
'comment0'
,
'comment1'
,
'comment2'
)),
this
.
Post
.
bulkCreate
(
build
(
'post0'
,
'post1'
,
'post2'
)),
this
.
Footnote
.
bulkCreate
(
build
(
'footnote0'
,
'footnote1'
,
'footnote2'
))
))
.
then
(([
comments
,
posts
,
footnotes
])
=>
Promise
.
join
(
]
))
.
then
(([
comments
,
posts
,
footnotes
])
=>
Promise
.
all
([
comments
[
0
].
setPost
(
posts
[
0
]),
comments
[
1
].
setPost
(
posts
[
1
]),
comments
[
2
].
setPost
(
posts
[
2
]),
posts
[
0
].
addFootnote
(
footnotes
[
0
]),
posts
[
1
].
addFootnote
(
footnotes
[
1
]),
posts
[
2
].
addFootnote
(
footnotes
[
2
])
))
]
))
.
then
(()
=>
this
.
Comment
.
findAll
({
include
:
[{
model
:
this
.
Post
,
...
...
test/integration/include/schema.test.js
View file @
a1ec8a1
...
...
@@ -1014,12 +1014,12 @@ describe(Support.getTestDialectTeaser('Includes with schemas'), () => {
return
User
.
findAll
();
})
}).
then
(
results
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
results
.
users
[
1
].
setGroup
(
results
.
groups
[
0
]),
results
.
users
[
2
].
setGroup
(
results
.
groups
[
0
]),
results
.
users
[
3
].
setGroup
(
results
.
groups
[
1
]),
results
.
users
[
0
].
setGroup
(
results
.
groups
[
0
])
);
]
);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
...
...
test/integration/include/separate.test.js
View file @
a1ec8a1
...
...
@@ -21,8 +21,7 @@ if (current.dialect.supports.groupedLimit) {
User
.
Tasks
=
User
.
hasMany
(
Task
,
{
as
:
'tasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{},
...
...
@@ -31,16 +30,14 @@ if (current.dialect.supports.groupedLimit) {
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{}
]
},
{
include
:
[
User
.
Tasks
]
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
{
association
:
User
.
Tasks
,
separate
:
true
}
...
...
@@ -193,8 +190,7 @@ if (current.dialect.supports.groupedLimit) {
User
.
Tasks
=
User
.
hasMany
(
Task
,
{
as
:
'tasks'
,
foreignKey
:
'userId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{},
...
...
@@ -203,8 +199,7 @@ if (current.dialect.supports.groupedLimit) {
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{},
...
...
@@ -214,8 +209,7 @@ if (current.dialect.supports.groupedLimit) {
]
},
{
include
:
[
User
.
Tasks
]
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
{
association
:
User
.
Tasks
,
limit
:
2
}
...
...
@@ -245,8 +239,7 @@ if (current.dialect.supports.groupedLimit) {
Company
.
Tasks
=
Company
.
hasMany
(
Task
,
{
as
:
'tasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
company
:
{
tasks
:
[
...
...
@@ -259,8 +252,7 @@ if (current.dialect.supports.groupedLimit) {
include
:
[
{
association
:
User
.
Company
,
include
:
[
Company
.
Tasks
]
}
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
company
:
{
tasks
:
[
...
...
@@ -271,8 +263,7 @@ if (current.dialect.supports.groupedLimit) {
include
:
[
{
association
:
User
.
Company
,
include
:
[
Company
.
Tasks
]
}
]
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
{
association
:
User
.
Company
,
include
:
[
...
...
@@ -306,8 +297,7 @@ if (current.dialect.supports.groupedLimit) {
Task
.
Project
=
Task
.
belongsTo
(
Project
,
{
as
:
'project'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Company
.
create
({
return
Promise
.
all
([
Company
.
create
({
id
:
1
,
users
:
[
{
...
...
@@ -326,8 +316,7 @@ if (current.dialect.supports.groupedLimit) {
]
}
]
}
]
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
Company
.
findAll
({
include
:
[
{
association
:
Company
.
Users
,
include
:
[
...
...
@@ -359,8 +348,7 @@ if (current.dialect.supports.groupedLimit) {
Project
.
Tasks
=
Project
.
hasMany
(
Task
,
{
as
:
'tasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
projects
:
[
{
...
...
@@ -382,8 +370,7 @@ if (current.dialect.supports.groupedLimit) {
include
:
[
{
association
:
User
.
Projects
,
include
:
[
Project
.
Tasks
]
}
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
projects
:
[
{
...
...
@@ -398,8 +385,7 @@ if (current.dialect.supports.groupedLimit) {
include
:
[
{
association
:
User
.
Projects
,
include
:
[
Project
.
Tasks
]
}
]
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
User
.
findAll
({
include
:
[
{
association
:
User
.
Projects
,
separate
:
true
,
include
:
[
...
...
@@ -445,8 +431,7 @@ if (current.dialect.supports.groupedLimit) {
return
Support
.
dropTestSchemas
(
this
.
sequelize
).
then
(()
=>
{
return
this
.
sequelize
.
createSchema
(
'archive'
).
then
(()
=>
{
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
create
({
return
Promise
.
all
([
User
.
create
({
id
:
1
,
tasks
:
[
{
id
:
1
,
title
:
'b'
},
...
...
@@ -456,8 +441,7 @@ if (current.dialect.supports.groupedLimit) {
]
},
{
include
:
[
User
.
Tasks
]
}),
User
.
create
({
}),
User
.
create
({
id
:
2
,
tasks
:
[
{
id
:
5
,
title
:
'a'
},
...
...
@@ -466,8 +450,7 @@ if (current.dialect.supports.groupedLimit) {
]
},
{
include
:
[
User
.
Tasks
]
})
);
})]);
}).
then
(()
=>
{
return
User
.
findAll
({
include
:
[{
model
:
Task
,
limit
:
2
,
as
:
'tasks'
,
order
:
[[
'id'
,
'ASC'
]]
}],
...
...
test/integration/model/attributes.test.js
View file @
a1ec8a1
...
...
@@ -46,10 +46,10 @@ describe(Support.getTestDialectTeaser('Model'), () => {
this
.
Course
.
belongsToMany
(
this
.
Student
,
{
through
:
this
.
Score
,
foreignKey
:
'CourseId'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Student
.
create
({
no
:
1
,
name
:
'ryan'
}),
this
.
Course
.
create
({
no
:
100
,
name
:
'history'
})
).
then
(([
student
,
course
])
=>
{
]
).
then
(([
student
,
course
])
=>
{
return
student
.
addCourse
(
course
,
{
through
:
{
score
:
98
,
test_value
:
1000
}
});
}).
then
(()
=>
{
expect
(
callCount
).
to
.
equal
(
1
);
...
...
@@ -58,10 +58,10 @@ describe(Support.getTestDialectTeaser('Model'), () => {
});
})
.
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
Student
.
build
({
no
:
1
}).
getCourses
({
where
:
{
no
:
100
}
}),
this
.
Score
.
findOne
({
where
:
{
StudentId
:
1
,
CourseId
:
100
}
})
);
]
);
})
.
then
(([
courses
,
score
])
=>
{
expect
(
score
.
test_value
).
to
.
equal
(
1001
);
...
...
test/integration/model/attributes/field.test.js
View file @
a1ec8a1
...
...
@@ -542,14 +542,11 @@ describe(Support.getTestDialectTeaser('Model'), () => {
it
(
'should work with a belongsTo association getter'
,
function
()
{
const
userId
=
Math
.
floor
(
Math
.
random
()
*
100000
);
return
Promise
.
join
(
this
.
User
.
create
({
return
Promise
.
all
([
this
.
User
.
create
({
id
:
userId
}),
this
.
Task
.
create
({
}),
this
.
Task
.
create
({
user_id
:
userId
})
).
then
(([
user
,
task
])
=>
{
})]).
then
(([
user
,
task
])
=>
{
return
Promise
.
all
([
user
,
task
.
getUser
()]);
}).
then
(([
userA
,
userB
])
=>
{
expect
(
userA
.
get
(
'id'
)).
to
.
equal
(
userB
.
get
(
'id'
));
...
...
test/integration/model/create.test.js
View file @
a1ec8a1
...
...
@@ -432,10 +432,10 @@ describe(Support.getTestDialectTeaser('Model'), () => {
if
(
current
.
dialect
.
supports
.
transactions
)
{
it
(
'works with a transaction'
,
function
()
{
return
this
.
sequelize
.
transaction
().
then
(
transaction
=>
{
return
Promise
.
join
(
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
},
transaction
}),
return
Promise
.
all
([
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
},
transaction
}),
(
first
,
second
)
=>
{
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
},
transaction
})
]).
then
(([
first
,
second
])
=>
{
const
firstInstance
=
first
[
0
],
firstCreated
=
first
[
1
],
secondInstance
=
second
[
0
],
...
...
@@ -450,8 +450,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
expect
(
firstInstance
.
id
).
to
.
equal
(
secondInstance
.
id
);
return
transaction
.
commit
();
}
);
});
});
});
}
...
...
@@ -512,8 +511,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
username
:
'gottlieb'
});
}).
then
(()
=>
{
return
Promise
.
join
(
User
.
findOrCreate
({
return
Promise
.
all
([
User
.
findOrCreate
({
where
:
{
objectId
:
'asdasdasd'
},
...
...
@@ -525,8 +523,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
}).
catch
(
err
=>
{
expect
(
err
instanceof
Sequelize
.
UniqueConstraintError
).
to
.
be
.
ok
;
expect
(
err
.
fields
).
to
.
be
.
ok
;
}),
User
.
findOrCreate
({
}),
User
.
findOrCreate
({
where
:
{
objectId
:
'asdasdasd'
},
...
...
@@ -538,17 +535,16 @@ describe(Support.getTestDialectTeaser('Model'), () => {
}).
catch
(
err
=>
{
expect
(
err
instanceof
Sequelize
.
UniqueConstraintError
).
to
.
be
.
ok
;
expect
(
err
.
fields
).
to
.
be
.
ok
;
})
);
})]);
});
});
// Creating two concurrent transactions and selecting / inserting from the same table throws sqlite off
(
dialect
!==
'sqlite'
?
it
:
it
.
skip
)(
'works without a transaction'
,
function
()
{
return
Promise
.
join
(
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
}),
return
Promise
.
all
([
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
}),
(
first
,
second
)
=>
{
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
})
]).
then
(([
first
,
second
])
=>
{
const
firstInstance
=
first
[
0
],
firstCreated
=
first
[
1
],
secondInstance
=
second
[
0
],
...
...
@@ -561,19 +557,18 @@ describe(Support.getTestDialectTeaser('Model'), () => {
expect
(
secondInstance
).
to
.
be
.
ok
;
expect
(
firstInstance
.
id
).
to
.
equal
(
secondInstance
.
id
);
}
);
});
});
});
});
describe
(
'findCreateFind'
,
()
=>
{
(
dialect
!==
'sqlite'
?
it
:
it
.
skip
)(
'should work with multiple concurrent calls'
,
function
()
{
return
Promise
.
join
(
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
}),
return
Promise
.
all
([
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
}),
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
}),
(
first
,
second
,
third
)
=>
{
this
.
User
.
findOrCreate
({
where
:
{
uniqueName
:
'winner'
}
})
]).
then
(([
first
,
second
,
third
])
=>
{
const
firstInstance
=
first
[
0
],
firstCreated
=
first
[
1
],
secondInstance
=
second
[
0
],
...
...
@@ -591,8 +586,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
expect
(
firstInstance
.
id
).
to
.
equal
(
secondInstance
.
id
);
expect
(
secondInstance
.
id
).
to
.
equal
(
thirdInstance
.
id
);
}
);
});
});
});
...
...
@@ -656,13 +650,10 @@ describe(Support.getTestDialectTeaser('Model'), () => {
Log
.
removeAttribute
(
'id'
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
Log
.
create
({
level
:
'info'
}),
Log
.
bulkCreate
([
return
Promise
.
all
([
Log
.
create
({
level
:
'info'
}),
Log
.
bulkCreate
([
{
level
:
'error'
},
{
level
:
'debug'
}
])
);
])]);
}).
then
(()
=>
{
return
Log
.
findAll
();
}).
then
(
logs
=>
{
...
...
test/integration/model/findAll/groupedLimit.test.js
View file @
a1ec8a1
...
...
@@ -51,22 +51,22 @@ if (current.dialect.supports['UNION ALL']) {
this
.
User
.
Tasks
=
this
.
User
.
hasMany
(
this
.
Task
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
User
.
bulkCreate
([{
age
:
-
5
},
{
age
:
45
},
{
age
:
7
},
{
age
:
-
9
},
{
age
:
8
},
{
age
:
15
},
{
age
:
-
9
}]),
this
.
Project
.
bulkCreate
([{},
{}]),
this
.
Task
.
bulkCreate
([{},
{}])
);
]
);
})
.
then
(()
=>
Promise
.
all
([
this
.
User
.
findAll
(),
this
.
Project
.
findAll
(),
this
.
Task
.
findAll
()]))
.
then
(([
users
,
projects
,
tasks
])
=>
{
this
.
projects
=
projects
;
return
Promise
.
join
(
return
Promise
.
all
([
projects
[
0
].
setMembers
(
users
.
slice
(
0
,
4
)),
projects
[
1
].
setMembers
(
users
.
slice
(
2
)),
projects
[
0
].
setParanoidMembers
(
users
.
slice
(
0
,
4
)),
projects
[
1
].
setParanoidMembers
(
users
.
slice
(
2
)),
users
[
2
].
setTasks
(
tasks
)
);
]
);
});
});
...
...
@@ -218,19 +218,19 @@ if (current.dialect.supports['UNION ALL']) {
this
.
User
.
Tasks
=
this
.
User
.
hasMany
(
this
.
Task
);
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
this
.
User
.
bulkCreate
([{},
{},
{}]),
this
.
Task
.
bulkCreate
([{
id
:
1
},
{
id
:
2
},
{
id
:
3
},
{
id
:
4
},
{
id
:
5
},
{
id
:
6
}])
);
]
);
})
.
then
(()
=>
Promise
.
all
([
this
.
User
.
findAll
(),
this
.
Task
.
findAll
()]))
.
then
(([
users
,
tasks
])
=>
{
this
.
users
=
users
;
return
Promise
.
join
(
return
Promise
.
all
([
users
[
0
].
setTasks
(
tasks
[
0
]),
users
[
1
].
setTasks
(
tasks
.
slice
(
1
,
4
)),
users
[
2
].
setTasks
(
tasks
.
slice
(
4
))
);
]
);
});
});
...
...
test/integration/model/json.test.js
View file @
a1ec8a1
...
...
@@ -210,8 +210,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
describe
(
'find'
,
()
=>
{
it
(
'should be possible to query a nested value'
,
function
()
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Homer'
,
...
...
@@ -219,8 +218,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Nuclear Safety Inspector'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -228,8 +226,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Housewife'
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
data
:
{
...
...
@@ -255,14 +252,12 @@ describe(Support.getTestDialectTeaser('Model'), () => {
const
now
=
moment
().
milliseconds
(
0
).
toDate
();
const
before
=
moment
().
milliseconds
(
0
).
subtract
(
1
,
'day'
).
toDate
();
const
after
=
moment
().
milliseconds
(
0
).
add
(
1
,
'day'
).
toDate
();
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
json
:
{
user
:
'Homer'
,
lastLogin
:
now
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
json
:
{
...
...
@@ -298,14 +293,12 @@ describe(Support.getTestDialectTeaser('Model'), () => {
});
it
(
'should be possible to query a boolean with array operators'
,
function
()
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
json
:
{
user
:
'Homer'
,
active
:
true
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
json
:
{
...
...
@@ -341,8 +334,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
});
it
(
'should be possible to query a nested integer value'
,
function
()
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Homer'
,
...
...
@@ -350,8 +342,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
age
:
40
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -359,8 +350,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
age
:
37
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
data
:
{
...
...
@@ -385,8 +375,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
});
it
(
'should be possible to query a nested null value'
,
function
()
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Homer'
,
...
...
@@ -394,8 +383,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Nuclear Safety Inspector'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -403,8 +391,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
null
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
data
:
{
...
...
@@ -425,8 +412,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
});
it
(
'should be possible to query for nested fields with hyphens/dashes, #8718'
,
function
()
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Homer'
,
...
...
@@ -439,8 +425,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Nuclear Safety Inspector'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -448,8 +433,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
null
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
data
:
{
...
...
@@ -488,8 +472,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
employment
:
'Nuclear Safety Inspector'
}
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -497,8 +480,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Housewife'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Bart'
,
...
...
@@ -506,8 +488,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'None'
}
})
);
})]);
}).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
...
...
@@ -555,8 +536,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
employment
:
'Nuclear Safety Inspector'
}
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -564,8 +544,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Housewife'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Bart'
,
...
...
@@ -573,8 +552,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'None'
}
})
);
})]);
}).
then
(()
=>
{
return
this
.
Event
.
findAll
({
where
:
{
...
...
@@ -628,8 +606,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
}
};
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Elliot'
,
...
...
@@ -637,8 +614,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Hacker'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Christian'
,
...
...
@@ -646,8 +622,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Hacker'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
' Tyrell'
,
...
...
@@ -655,8 +630,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'CTO'
}
})
).
then
(()
=>
{
})]).
then
(()
=>
{
return
expect
(
this
.
Event
.
findAll
(
conditionSearch
)).
to
.
eventually
.
have
.
length
(
2
);
}).
then
(()
=>
{
return
this
.
Event
.
destroy
(
conditionSearch
);
...
...
@@ -753,8 +727,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
employment
:
'Nuclear Safety Inspector'
}
}).
then
(()
=>
{
return
Promise
.
join
(
this
.
Event
.
create
({
return
Promise
.
all
([
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Marge'
,
...
...
@@ -762,8 +735,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'Housewife'
}
}),
this
.
Event
.
create
({
}),
this
.
Event
.
create
({
data
:
{
name
:
{
first
:
'Bart'
,
...
...
@@ -771,8 +743,7 @@ describe(Support.getTestDialectTeaser('Model'), () => {
},
employment
:
'None'
}
})
);
})]);
}).
then
(()
=>
{
if
(
current
.
options
.
dialect
===
'sqlite'
)
{
return
this
.
Event
.
findAll
({
...
...
test/integration/transaction.test.js
View file @
a1ec8a1
...
...
@@ -487,7 +487,7 @@ if (current.dialect.supports.transactions) {
});
});
};
return
Promise
.
join
(
newTransactionFunc
(),
newTransactionFunc
()
).
then
(()
=>
{
return
Promise
.
all
([
newTransactionFunc
(),
newTransactionFunc
()]
).
then
(()
=>
{
return
User
.
findAll
().
then
(
users
=>
{
expect
(
users
.
length
).
to
.
equal
(
2
);
});
...
...
@@ -510,7 +510,7 @@ if (current.dialect.supports.transactions) {
});
});
};
return
expect
(
Promise
.
join
(
newTransactionFunc
(),
newTransactionFunc
()
)).
to
.
be
.
rejectedWith
(
'SQLITE_BUSY: database is locked'
);
return
expect
(
Promise
.
all
([
newTransactionFunc
(),
newTransactionFunc
()]
)).
to
.
be
.
rejectedWith
(
'SQLITE_BUSY: database is locked'
);
});
});
});
...
...
@@ -570,16 +570,14 @@ if (current.dialect.supports.transactions) {
}).
then
(()
=>
{
return
this
.
sequelize
.
transaction
({
isolationLevel
:
Transaction
.
ISOLATION_LEVELS
.
SERIALIZABLE
}).
then
(
transaction
=>
{
return
User
.
findAll
(
{
transaction
}
)
.
then
(()
=>
Promise
.
join
(
.
then
(()
=>
Promise
.
all
([
// Update should not succeed before transaction has committed
User
.
update
({
username
:
'joe'
},
{
where
:
{
username
:
'jan'
}
}).
then
(()
=>
expect
(
transactionSpy
).
to
.
have
.
been
.
called
),
// Update should not succeed before transaction has committed
delay
(
2000
)
}).
then
(()
=>
expect
(
transactionSpy
).
to
.
have
.
been
.
called
),
delay
(
2000
)
.
then
(()
=>
transaction
.
commit
())
.
then
(
transactionSpy
)
));
.
then
(
transactionSpy
)]));
});
});
});
...
...
@@ -612,8 +610,7 @@ if (current.dialect.supports.transactions) {
return
this
.
sequelize
.
transaction
({
isolationLevel
:
Transaction
.
ISOLATION_LEVELS
.
READ_COMMITTED
}).
then
(
t2
=>
{
return
Promise
.
join
(
User
.
findOne
({
return
Promise
.
all
([
User
.
findOne
({
where
:
{
username
:
'jan'
},
...
...
@@ -624,9 +621,7 @@ if (current.dialect.supports.transactions) {
return
t2
.
commit
().
then
(()
=>
{
expect
(
t2Spy
).
to
.
have
.
been
.
calledAfter
(
t1Spy
);
// Find should not succeed before t1 has committed
});
}),
t1Jan
.
update
({
}),
t1Jan
.
update
({
awesome
:
true
},
{
transaction
:
t1
...
...
@@ -635,8 +630,7 @@ if (current.dialect.supports.transactions) {
return
delay
(
2000
).
then
(()
=>
{
return
t1
.
commit
();
});
})
);
})]);
});
});
});
...
...
@@ -695,10 +689,10 @@ if (current.dialect.supports.transactions) {
Task
.
belongsToMany
(
User
,
{
through
:
'UserTasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
User
.
create
({
username
:
'John'
}),
Task
.
create
({
title
:
'Get rich'
,
active
:
false
})
,
(
john
,
task1
)
=>
{
Task
.
create
({
title
:
'Get rich'
,
active
:
false
})
]).
then
(([
john
,
task1
]
)
=>
{
return
john
.
setTasks
([
task1
]);
})
.
then
(()
=>
{
...
...
@@ -738,11 +732,11 @@ if (current.dialect.supports.transactions) {
Task
.
belongsToMany
(
User
,
{
through
:
'UserTasks'
});
return
this
.
sequelize
.
sync
({
force
:
true
}).
then
(()
=>
{
return
Promise
.
join
(
return
Promise
.
all
([
User
.
create
({
username
:
'John'
}),
Task
.
create
({
title
:
'Get rich'
,
active
:
false
}),
Task
.
create
({
title
:
'Die trying'
,
active
:
false
})
,
(
john
,
task1
)
=>
{
Task
.
create
({
title
:
'Die trying'
,
active
:
false
})
]).
then
(([
john
,
task1
]
)
=>
{
return
john
.
setTasks
([
task1
]);
})
.
then
(()
=>
{
...
...
@@ -801,8 +795,7 @@ if (current.dialect.supports.transactions) {
transaction
:
t1
}).
then
(
t1Jan
=>
{
return
this
.
sequelize
.
transaction
().
then
(
t2
=>
{
return
Promise
.
join
(
User
.
findOne
({
return
Promise
.
all
([
User
.
findOne
({
where
:
{
username
:
'jan'
},
...
...
@@ -811,8 +804,7 @@ if (current.dialect.supports.transactions) {
}).
then
(()
=>
{
t2Spy
();
return
t2
.
commit
();
}),
t1Jan
.
update
({
}),
t1Jan
.
update
({
awesome
:
true
},
{
transaction
:
t1
...
...
@@ -822,8 +814,7 @@ if (current.dialect.supports.transactions) {
expect
(
t1Spy
).
to
.
have
.
been
.
calledAfter
(
t2Spy
);
return
t1
.
commit
();
});
})
);
})]);
});
});
});
...
...
@@ -854,8 +845,7 @@ if (current.dialect.supports.transactions) {
return
this
.
sequelize
.
transaction
({
isolationLevel
:
Transaction
.
ISOLATION_LEVELS
.
READ_COMMITTED
}).
then
(
t2
=>
{
return
Promise
.
join
(
User
.
findOne
({
return
Promise
.
all
([
User
.
findOne
({
where
:
{
username
:
'jan'
},
...
...
@@ -873,9 +863,7 @@ if (current.dialect.supports.transactions) {
expect
(
t2UpdateSpy
).
to
.
have
.
been
.
calledAfter
(
t1Spy
);
// But the update call should not happen before the first transaction has committed
});
});
}),
t1Jan
.
update
({
}),
t1Jan
.
update
({
awesome
:
true
},
{
transaction
:
t1
...
...
@@ -884,8 +872,7 @@ if (current.dialect.supports.transactions) {
t1Spy
();
return
t1
.
commit
();
});
})
);
})]);
});
});
});
...
...
test/unit/model/validation.test.js
View file @
a1ec8a1
...
...
@@ -309,17 +309,13 @@ describe(Support.getTestDialectTeaser('InstanceValidator'), () => {
});
it
(
'should allow decimal as scientific notation'
,
()
=>
{
return
Promise
.
join
(
expect
(
User
.
create
({
return
Promise
.
all
([
expect
(
User
.
create
({
number
:
'2321312301230128391820e219'
})).
not
.
to
.
be
.
rejected
,
expect
(
User
.
create
({
})).
not
.
to
.
be
.
rejected
,
expect
(
User
.
create
({
number
:
'2321312301230128391820e+219'
})).
not
.
to
.
be
.
rejected
,
expect
(
User
.
create
({
})).
not
.
to
.
be
.
rejected
,
expect
(
User
.
create
({
number
:
'2321312301230128391820f219'
})).
to
.
be
.
rejected
);
})).
to
.
be
.
rejected
]);
});
it
(
'should allow string as a number'
,
()
=>
{
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment