Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
ebf5a0bd
Commit
ebf5a0bd
authored
Aug 10, 2017
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix and improve spec/controllers/autocomplete_controller_spec.rb
Signed-off-by:
Rémy Coutable
<
remy@rymai.me
>
parent
449a0587
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
77 deletions
+56
-77
spec/controllers/autocomplete_controller_spec.rb
spec/controllers/autocomplete_controller_spec.rb
+56
-77
No files found.
spec/controllers/autocomplete_controller_spec.rb
View file @
ebf5a0bd
require
'spec_helper'
require
'spec_helper'
describe
AutocompleteController
do
describe
AutocompleteController
do
let
!
(
:project
)
{
create
(
:project
)
}
let
(
:project
)
{
create
(
:project
)
}
let
!
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
project
.
owner
}
context
'GET users'
do
context
'GET users'
do
let!
(
:user2
)
{
create
(
:user
)
}
let!
(
:user2
)
{
create
(
:user
)
}
...
@@ -11,7 +11,6 @@ describe AutocompleteController do
...
@@ -11,7 +11,6 @@ describe AutocompleteController do
context
'project members'
do
context
'project members'
do
before
do
before
do
sign_in
(
user
)
sign_in
(
user
)
project
.
add_master
(
user
)
end
end
describe
'GET #users with project ID'
do
describe
'GET #users with project ID'
do
...
@@ -19,11 +18,11 @@ describe AutocompleteController do
...
@@ -19,11 +18,11 @@ describe AutocompleteController do
get
(
:users
,
project_id:
project
.
id
)
get
(
:users
,
project_id:
project
.
id
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns the project members'
do
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
expect
(
json_response
.
size
).
to
eq
(
1
)
it
{
expect
(
body
.
size
).
to
eq
2
}
expect
(
json_response
.
map
{
|
u
|
u
[
"username"
]
}).
to
include
(
user
.
username
)
it
{
expect
(
body
.
map
{
|
u
|
u
[
"username"
]
}).
to
include
(
user
.
username
)
}
end
end
end
describe
'GET #users with unknown project'
do
describe
'GET #users with unknown project'
do
...
@@ -39,20 +38,20 @@ describe AutocompleteController do
...
@@ -39,20 +38,20 @@ describe AutocompleteController do
let
(
:group
)
{
create
(
:group
)
}
let
(
:group
)
{
create
(
:group
)
}
before
do
before
do
sign_in
(
user
)
group
.
add_owner
(
user
)
group
.
add_owner
(
user
)
sign_in
(
user
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
describe
'GET #users with group ID'
do
describe
'GET #users with group ID'
do
before
do
before
do
get
(
:users
,
group_id:
group
.
id
)
get
(
:users
,
group_id:
group
.
id
)
end
end
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
'returns the group members'
do
it
{
expect
(
body
.
size
).
to
eq
1
}
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
{
expect
(
body
.
first
[
"username"
]).
to
eq
user
.
username
}
expect
(
json_response
.
size
).
to
eq
(
1
)
expect
(
json_response
.
first
[
"username"
]).
to
eq
user
.
username
end
end
end
describe
'GET #users with unknown group ID'
do
describe
'GET #users with unknown group ID'
do
...
@@ -65,23 +64,22 @@ describe AutocompleteController do
...
@@ -65,23 +64,22 @@ describe AutocompleteController do
end
end
context
'non-member login for public project'
do
context
'non-member login for public project'
do
let
!
(
:project
)
{
create
(
:project
,
:public
)
}
let
(
:project
)
{
create
(
:project
,
:public
)
}
before
do
before
do
sign_in
(
non_member
)
sign_in
(
non_member
)
project
.
add_master
(
user
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
describe
'GET #users with project ID'
do
describe
'GET #users with project ID'
do
before
do
before
do
get
(
:users
,
project_id:
project
.
id
,
current_user:
true
)
get
(
:users
,
project_id:
project
.
id
,
current_user:
true
)
end
end
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
'returns the project members and non-members'
do
it
{
expect
(
body
.
size
).
to
eq
3
}
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
{
expect
(
body
.
map
{
|
u
|
u
[
'username'
]
}).
to
include
(
user
.
username
,
non_member
.
username
)
}
expect
(
json_response
.
size
).
to
eq
(
2
)
expect
(
json_response
.
map
{
|
u
|
u
[
'username'
]
}).
to
include
(
user
.
username
,
non_member
.
username
)
end
end
end
end
end
...
@@ -91,10 +89,8 @@ describe AutocompleteController do
...
@@ -91,10 +89,8 @@ describe AutocompleteController do
get
(
:users
)
get
(
:users
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
{
expect
(
json_response
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
json_response
.
size
).
to
eq
User
.
count
}
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
body
.
size
).
to
eq
User
.
count
}
end
end
context
'user order'
do
context
'user order'
do
...
@@ -106,7 +102,7 @@ describe AutocompleteController do
...
@@ -106,7 +102,7 @@ describe AutocompleteController do
sign_in
(
user
)
sign_in
(
user
)
get
(
:users
,
search:
'user'
)
get
(
:users
,
search:
'user'
)
response_usernames
=
JSON
.
parse
(
response
.
body
)
.
map
{
|
user
|
user
[
'username'
]
}
response_usernames
=
json_response
.
map
{
|
user
|
user
[
'username'
]
}
expect
(
response_usernames
.
take
(
3
)).
to
match_array
([
user
.
username
,
reported_user
.
username
,
user1
.
username
])
expect
(
response_usernames
.
take
(
3
)).
to
match_array
([
user
.
username
,
reported_user
.
username
,
user1
.
username
])
end
end
...
@@ -120,15 +116,12 @@ describe AutocompleteController do
...
@@ -120,15 +116,12 @@ describe AutocompleteController do
get
(
:users
,
per_page:
per_page
)
get
(
:users
,
per_page:
per_page
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
{
expect
(
json_response
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
json_response
.
size
).
to
eq
(
per_page
)
}
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
body
.
size
).
to
eq
per_page
}
end
end
context
'unauthenticated user'
do
context
'unauthenticated user'
do
let
(
:public_project
)
{
create
(
:project
,
:public
)
}
let
(
:public_project
)
{
create
(
:project
,
:public
)
}
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
describe
'GET #users with public project'
do
describe
'GET #users with public project'
do
before
do
before
do
...
@@ -136,8 +129,8 @@ describe AutocompleteController do
...
@@ -136,8 +129,8 @@ describe AutocompleteController do
get
(
:users
,
project_id:
public_project
.
id
)
get
(
:users
,
project_id:
public_project
.
id
)
end
end
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
json_response
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
body
.
size
).
to
eq
2
}
it
{
expect
(
json_response
.
size
).
to
eq
2
}
end
end
describe
'GET #users with project'
do
describe
'GET #users with project'
do
...
@@ -170,8 +163,8 @@ describe AutocompleteController do
...
@@ -170,8 +163,8 @@ describe AutocompleteController do
get
(
:users
)
get
(
:users
)
end
end
it
{
expect
(
body
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
json_response
).
to
be_kind_of
(
Array
)
}
it
{
expect
(
body
.
size
).
to
eq
0
}
it
{
expect
(
json_response
).
to
be_empty
}
end
end
describe
'GET #users with todo filter'
do
describe
'GET #users with todo filter'
do
...
@@ -179,14 +172,12 @@ describe AutocompleteController do
...
@@ -179,14 +172,12 @@ describe AutocompleteController do
get
:users
,
todo_filter:
true
get
:users
,
todo_filter:
true
expect
(
response
.
status
).
to
eq
200
expect
(
response
.
status
).
to
eq
200
expect
(
body
).
to
be_kind_of
(
Array
)
expect
(
json_response
).
to
be_kind_of
(
Array
)
end
end
end
end
end
end
context
'author of issuable included'
do
context
'author of issuable included'
do
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
context
'authenticated'
do
context
'authenticated'
do
before
do
before
do
sign_in
(
user
)
sign_in
(
user
)
...
@@ -195,13 +186,13 @@ describe AutocompleteController do
...
@@ -195,13 +186,13 @@ describe AutocompleteController do
it
'includes the author'
do
it
'includes the author'
do
get
(
:users
,
author_id:
non_member
.
id
)
get
(
:users
,
author_id:
non_member
.
id
)
expect
(
body
.
first
[
"username"
]).
to
eq
non_member
.
username
expect
(
json_response
.
first
[
"username"
]).
to
eq
non_member
.
username
end
end
it
'rejects non existent user ids'
do
it
'rejects non existent user ids'
do
get
(
:users
,
author_id:
99999
)
get
(
:users
,
author_id:
99999
)
expect
(
body
.
collect
{
|
u
|
u
[
'id'
]
}).
not_to
include
(
99999
)
expect
(
json_response
.
collect
{
|
u
|
u
[
'id'
]
}).
not_to
include
(
99999
)
end
end
end
end
...
@@ -209,7 +200,7 @@ describe AutocompleteController do
...
@@ -209,7 +200,7 @@ describe AutocompleteController do
it
'returns empty result'
do
it
'returns empty result'
do
get
(
:users
,
author_id:
non_member
.
id
)
get
(
:users
,
author_id:
non_member
.
id
)
expect
(
body
).
to
be_empty
expect
(
json_response
).
to
be_empty
end
end
end
end
end
end
...
@@ -222,10 +213,9 @@ describe AutocompleteController do
...
@@ -222,10 +213,9 @@ describe AutocompleteController do
it
'skips the user IDs passed'
do
it
'skips the user IDs passed'
do
get
(
:users
,
skip_users:
[
user
,
user2
].
map
(
&
:id
))
get
(
:users
,
skip_users:
[
user
,
user2
].
map
(
&
:id
))
other_user_ids
=
[
non_member
,
project
.
owner
,
project
.
creator
].
map
(
&
:id
)
response_user_ids
=
json_response
.
map
{
|
user
|
user
[
'id'
]
}
response_user_ids
=
JSON
.
parse
(
response
.
body
).
map
{
|
user
|
user
[
'id'
]
}
expect
(
response_user_ids
).
to
contain_exactly
(
*
other_user_ids
)
expect
(
response_user_ids
).
to
contain_exactly
(
non_member
.
id
)
end
end
end
end
end
end
...
@@ -249,17 +239,15 @@ describe AutocompleteController do
...
@@ -249,17 +239,15 @@ describe AutocompleteController do
get
(
:projects
,
project_id:
project
.
id
)
get
(
:projects
,
project_id:
project
.
id
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns projects'
do
expect
(
json_response
).
to
be_kind_of
(
Array
)
expect
(
json_response
.
size
).
to
eq
(
2
)
it
do
expect
(
json_response
.
first
[
'id'
]).
to
eq
(
0
)
expect
(
body
).
to
be_kind_of
(
Array
)
expect
(
json_response
.
first
[
'name_with_namespace'
]).
to
eq
'No project'
expect
(
body
.
size
).
to
eq
2
expect
(
body
.
first
[
'id'
]).
to
eq
0
expect
(
json_response
.
last
[
'id'
]).
to
eq
authorized_project
.
id
expect
(
body
.
first
[
'name_with_namespace'
]).
to
eq
'No project'
expect
(
json_response
.
last
[
'name_with_namespace'
]).
to
eq
authorized_project
.
name_with_namespace
expect
(
body
.
last
[
'id'
]).
to
eq
authorized_project
.
id
expect
(
body
.
last
[
'name_with_namespace'
]).
to
eq
authorized_project
.
name_with_namespace
end
end
end
end
end
end
...
@@ -275,14 +263,12 @@ describe AutocompleteController do
...
@@ -275,14 +263,12 @@ describe AutocompleteController do
get
(
:projects
,
project_id:
project
.
id
,
search:
'rugged'
)
get
(
:projects
,
project_id:
project
.
id
,
search:
'rugged'
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns projects'
do
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
do
expect
(
json_response
.
size
).
to
eq
(
2
)
expect
(
body
).
to
be_kind_of
(
Array
)
expect
(
body
.
size
).
to
eq
2
expect
(
body
.
last
[
'id'
]).
to
eq
authorized_search_project
.
id
expect
(
json_response
.
last
[
'id'
]).
to
eq
authorized_search_project
.
id
expect
(
body
.
last
[
'name_with_namespace'
]).
to
eq
authorized_search_project
.
name_with_namespace
expect
(
json_response
.
last
[
'name_with_namespace'
]).
to
eq
authorized_search_project
.
name_with_namespace
end
end
end
end
end
end
...
@@ -304,11 +290,9 @@ describe AutocompleteController do
...
@@ -304,11 +290,9 @@ describe AutocompleteController do
get
(
:projects
,
project_id:
project
.
id
)
get
(
:projects
,
project_id:
project
.
id
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns projects'
do
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
do
expect
(
json_response
.
size
).
to
eq
3
# Of a total of 4
expect
(
body
).
to
be_kind_of
(
Array
)
expect
(
body
.
size
).
to
eq
3
# Of a total of 4
end
end
end
end
end
end
...
@@ -328,11 +312,9 @@ describe AutocompleteController do
...
@@ -328,11 +312,9 @@ describe AutocompleteController do
get
(
:projects
,
project_id:
project
.
id
,
offset_id:
authorized_project
.
id
)
get
(
:projects
,
project_id:
project
.
id
,
offset_id:
authorized_project
.
id
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns "No project"'
do
expect
(
json_response
.
detect
{
|
item
|
item
[
'id'
]
==
0
}).
to
be_nil
# 'No project' is not there
it
do
expect
(
json_response
.
detect
{
|
item
|
item
[
'id'
]
==
authorized_project
.
id
}).
to
be_nil
# Offset project is not there either
expect
(
body
.
detect
{
|
item
|
item
[
'id'
]
==
0
}).
to
be_nil
# 'No project' is not there
expect
(
body
.
detect
{
|
item
|
item
[
'id'
]
==
authorized_project
.
id
}).
to
be_nil
# Offset project is not there either
end
end
end
end
end
end
...
@@ -349,13 +331,10 @@ describe AutocompleteController do
...
@@ -349,13 +331,10 @@ describe AutocompleteController do
get
(
:projects
,
project_id:
project
.
id
)
get
(
:projects
,
project_id:
project
.
id
)
end
end
let
(
:body
)
{
JSON
.
parse
(
response
.
body
)
}
it
'returns a single "No project"'
do
expect
(
json_response
).
to
be_kind_of
(
Array
)
it
do
expect
(
json_response
.
size
).
to
eq
(
1
)
# 'No project'
expect
(
body
).
to
be_kind_of
(
Array
)
expect
(
json_response
.
first
[
'id'
]).
to
eq
0
expect
(
body
.
size
).
to
eq
1
# 'No project'
expect
(
body
.
first
[
'id'
]).
to
eq
0
end
end
end
end
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment