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
Kazuhiko Shiozaki
gitlab-ce
Commits
026e9885
Commit
026e9885
authored
Feb 12, 2015
by
Jeroen van Baarsen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Even more hound fixes
Signed-off-by:
Jeroen van Baarsen
<
jeroenvanbaarsen@gmail.com
>
parent
5bb743ef
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
266 additions
and
191 deletions
+266
-191
spec/controllers/blob_controller_spec.rb
spec/controllers/blob_controller_spec.rb
+1
-1
spec/controllers/commit_controller_spec.rb
spec/controllers/commit_controller_spec.rb
+2
-2
spec/controllers/import/github_controller_spec.rb
spec/controllers/import/github_controller_spec.rb
+3
-3
spec/controllers/tree_controller_spec.rb
spec/controllers/tree_controller_spec.rb
+5
-1
spec/features/admin/admin_users_spec.rb
spec/features/admin/admin_users_spec.rb
+12
-10
spec/features/atom/dashboard_issues_spec.rb
spec/features/atom/dashboard_issues_spec.rb
+7
-6
spec/features/atom/dashboard_spec.rb
spec/features/atom/dashboard_spec.rb
+3
-2
spec/features/atom/issues_spec.rb
spec/features/atom/issues_spec.rb
+18
-15
spec/features/atom/users_spec.rb
spec/features/atom/users_spec.rb
+12
-6
spec/features/issues_spec.rb
spec/features/issues_spec.rb
+53
-40
spec/features/notes_on_merge_requests_spec.rb
spec/features/notes_on_merge_requests_spec.rb
+73
-58
spec/features/profile_spec.rb
spec/features/profile_spec.rb
+8
-8
spec/helpers/application_helper_spec.rb
spec/helpers/application_helper_spec.rb
+20
-10
spec/helpers/broadcast_messages_helper_spec.rb
spec/helpers/broadcast_messages_helper_spec.rb
+2
-1
spec/helpers/diff_helper_spec.rb
spec/helpers/diff_helper_spec.rb
+10
-7
spec/helpers/gitlab_markdown_helper_spec.rb
spec/helpers/gitlab_markdown_helper_spec.rb
+37
-21
No files found.
spec/controllers/blob_controller_spec.rb
View file @
026e9885
...
...
@@ -45,7 +45,7 @@ describe Projects::BlobController do
context
'redirect to tree'
do
let
(
:id
)
{
'markdown/doc'
}
it
"redirects"
do
it
'redirects'
do
expect
(
subject
).
to
redirect_to
(
"/
#{
project
.
path_with_namespace
}
/tree/markdown/doc"
)
end
...
...
spec/controllers/commit_controller_spec.rb
View file @
026e9885
...
...
@@ -31,8 +31,8 @@ describe Projects::CommitController do
end
it
"should not escape Html"
do
allow_any_instance_of
(
Commit
).
to
receive
(
:"to_
#{
format
}
"
)
.
and_return
(
'HTML entities &<>" '
)
allow_any_instance_of
(
Commit
).
to
receive
(
:"to_
#{
format
}
"
)
.
and_return
(
'HTML entities &<>" '
)
get
:show
,
project_id:
project
.
to_param
,
id:
commit
.
id
,
format:
format
...
...
spec/controllers/import/github_controller_spec.rb
View file @
026e9885
...
...
@@ -12,9 +12,9 @@ describe Import::GithubController do
token
=
"asdasd12345"
allow_any_instance_of
(
Gitlab
::
GithubImport
::
Client
).
to
receive
(
:get_token
).
and_return
(
token
)
Gitlab
.
config
.
omniauth
.
providers
<<
OpenStruct
.
new
(
app_id:
"asd123"
,
app_secret:
"asd123"
,
name:
"github"
)
Gitlab
.
config
.
omniauth
.
providers
<<
OpenStruct
.
new
(
app_id:
'asd123'
,
app_secret:
'asd123'
,
name:
'github'
)
get
:callback
...
...
spec/controllers/tree_controller_spec.rb
View file @
026e9885
...
...
@@ -50,7 +50,11 @@ describe Projects::TreeController do
context
'redirect to blob'
do
let
(
:id
)
{
'master/README.md'
}
it
{
is_expected
.
to
redirect_to
(
"/
#{
project
.
path_with_namespace
}
/blob/master/README.md"
)
}
it
'redirects'
do
redirect_url
=
"/
#{
project
.
path_with_namespace
}
/blob/master/README.md"
expect
(
subject
).
to
redirect_to
(
redirect_url
)
end
end
end
end
spec/features/admin/admin_users_spec.rb
View file @
026e9885
...
...
@@ -33,15 +33,17 @@ describe "Admin::Users", feature: true do
it
"should apply defaults to user"
do
click_button
"Create user"
user
=
User
.
find_by
(
username:
'bang'
)
expect
(
user
.
projects_limit
).
to
eq
(
Gitlab
.
config
.
gitlab
.
default_projects_limit
)
expect
(
user
.
can_create_group
).
to
eq
(
Gitlab
.
config
.
gitlab
.
default_can_create_group
)
expect
(
user
.
projects_limit
).
to
eq
(
Gitlab
.
config
.
gitlab
.
default_projects_limit
)
expect
(
user
.
can_create_group
).
to
eq
(
Gitlab
.
config
.
gitlab
.
default_can_create_group
)
end
it
"should create user with valid data"
do
click_button
"Create user"
user
=
User
.
find_by
(
username:
'bang'
)
expect
(
user
.
name
).
to
eq
(
"Big Bang"
)
expect
(
user
.
email
).
to
eq
(
"bigbang@mail.com"
)
expect
(
user
.
name
).
to
eq
(
'Big Bang'
)
expect
(
user
.
email
).
to
eq
(
'bigbang@mail.com'
)
end
it
"should call send mail"
do
...
...
@@ -54,7 +56,7 @@ describe "Admin::Users", feature: true do
click_button
"Create user"
user
=
User
.
find_by
(
username:
'bang'
)
email
=
ActionMailer
::
Base
.
deliveries
.
last
expect
(
email
.
subject
).
to
have_content
(
"Account was created"
)
expect
(
email
.
subject
).
to
have_content
(
'Account was created'
)
expect
(
email
.
text_part
.
body
).
to
have_content
(
user
.
email
)
expect
(
email
.
text_part
.
body
).
to
have_content
(
'password'
)
end
...
...
@@ -80,8 +82,8 @@ describe "Admin::Users", feature: true do
end
it
"should have user edit page"
do
expect
(
page
).
to
have_content
(
"Name"
)
expect
(
page
).
to
have_content
(
"Password"
)
expect
(
page
).
to
have_content
(
'Name'
)
expect
(
page
).
to
have_content
(
'Password'
)
end
describe
"Update user"
do
...
...
@@ -93,13 +95,13 @@ describe "Admin::Users", feature: true do
end
it
"should show page with new data"
do
expect
(
page
).
to
have_content
(
"bigbang@mail.com"
)
expect
(
page
).
to
have_content
(
"Big Bang"
)
expect
(
page
).
to
have_content
(
'bigbang@mail.com'
)
expect
(
page
).
to
have_content
(
'Big Bang'
)
end
it
"should change user entry"
do
@simple_user
.
reload
expect
(
@simple_user
.
name
).
to
eq
(
"Big Bang"
)
expect
(
@simple_user
.
name
).
to
eq
(
'Big Bang'
)
expect
(
@simple_user
.
is_admin?
).
to
be_truthy
end
end
...
...
spec/features/atom/dashboard_issues_spec.rb
View file @
026e9885
...
...
@@ -17,12 +17,13 @@ describe "Dashboard Issues Feed", feature: true do
it
"should render atom feed via private token"
do
visit
issues_dashboard_path
(
:atom
,
private_token:
user
.
private_token
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
"application/atom+xml"
)
expect
(
body
).
to
have_selector
(
"title"
,
text:
"
#{
user
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
"author email"
,
text:
issue1
.
author_email
)
expect
(
body
).
to
have_selector
(
"entry summary"
,
text:
issue1
.
title
)
expect
(
body
).
to
have_selector
(
"author email"
,
text:
issue2
.
author_email
)
expect
(
body
).
to
have_selector
(
"entry summary"
,
text:
issue2
.
title
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
user
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
'author email'
,
text:
issue1
.
author_email
)
expect
(
body
).
to
have_selector
(
'entry summary'
,
text:
issue1
.
title
)
expect
(
body
).
to
have_selector
(
'author email'
,
text:
issue2
.
author_email
)
expect
(
body
).
to
have_selector
(
'entry summary'
,
text:
issue2
.
title
)
end
end
end
...
...
spec/features/atom/dashboard_spec.rb
View file @
026e9885
...
...
@@ -7,7 +7,7 @@ describe "Dashboard Feed", feature: true do
context
"projects atom feed via private token"
do
it
"should render projects atom feed"
do
visit
dashboard_path
(
:atom
,
private_token:
user
.
private_token
)
expect
(
body
).
to
have_selector
(
"feed title"
)
expect
(
body
).
to
have_selector
(
'feed title'
)
end
end
...
...
@@ -28,7 +28,8 @@ describe "Dashboard Feed", feature: true do
end
it
"should have issue comment event"
do
expect
(
body
).
to
have_content
(
"
#{
user
.
name
}
commented on issue #
#{
issue
.
iid
}
"
)
expect
(
body
).
to
have_content
(
"
#{
user
.
name
}
commented on issue #
#{
issue
.
iid
}
"
)
end
end
end
...
...
spec/features/atom/issues_spec.rb
View file @
026e9885
require
'spec_helper'
describe
"Issues Feed"
,
feature:
true
do
describe
"GET /issues"
do
describe
'Issues Feed'
,
feature:
true
do
describe
'GET /issues'
do
let!
(
:user
)
{
create
(
:user
)
}
let!
(
:project
)
{
create
(
:project
)
}
let!
(
:issue
)
{
create
(
:issue
,
author:
user
,
project:
project
)
}
before
{
project
.
team
<<
[
user
,
:developer
]
}
context
"when authenticated"
do
it
"should render atom feed"
do
context
'when authenticated'
do
it
'should render atom feed'
do
login_with
user
visit
project_issues_path
(
project
,
:atom
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
"application/atom+xml"
)
expect
(
body
).
to
have_selector
(
"title"
,
text:
"
#{
project
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
"author email"
,
text:
issue
.
author_email
)
expect
(
body
).
to
have_selector
(
"entry summary"
,
text:
issue
.
title
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
project
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
'author email'
,
text:
issue
.
author_email
)
expect
(
body
).
to
have_selector
(
'entry summary'
,
text:
issue
.
title
)
end
end
context
"when authenticated via private token"
do
it
"should render atom feed"
do
visit
project_issues_path
(
project
,
:atom
,
private_token:
user
.
private_token
)
context
'when authenticated via private token'
do
it
'should render atom feed'
do
visit
project_issues_path
(
project
,
:atom
,
private_token:
user
.
private_token
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
"application/atom+xml"
)
expect
(
body
).
to
have_selector
(
"title"
,
text:
"
#{
project
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
"author email"
,
text:
issue
.
author_email
)
expect
(
body
).
to
have_selector
(
"entry summary"
,
text:
issue
.
title
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
project
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
'author email'
,
text:
issue
.
author_email
)
expect
(
body
).
to
have_selector
(
'entry summary'
,
text:
issue
.
title
)
end
end
end
...
...
spec/features/atom/users_spec.rb
View file @
026e9885
...
...
@@ -4,17 +4,23 @@ describe "User Feed", feature: true do
describe
"GET /"
do
let!
(
:user
)
{
create
(
:user
)
}
context
"user atom feed via private token"
do
context
'user atom feed via private token'
do
it
"should render user atom feed"
do
visit
user_path
(
user
,
:atom
,
private_token:
user
.
private_token
)
expect
(
body
).
to
have_selector
(
"feed title"
)
expect
(
body
).
to
have_selector
(
'feed title'
)
end
end
context
'feed content'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:issue
)
{
create
(
:issue
,
project:
project
,
author:
user
,
description:
''
)
}
let
(
:note
)
{
create
(
:note
,
noteable:
issue
,
author:
user
,
note:
'Bug confirmed'
,
project:
project
)
}
let
(
:issue
)
do
create
(
:issue
,
project:
project
,
author:
user
,
description:
''
)
end
let
(
:note
)
do
create
(
:note
,
noteable:
issue
,
author:
user
,
note:
'Bug confirmed'
,
project:
project
)
end
before
do
project
.
team
<<
[
user
,
:master
]
...
...
@@ -23,11 +29,11 @@ describe "User Feed", feature: true do
visit
user_path
(
user
,
:atom
,
private_token:
user
.
private_token
)
end
it
"should have issue opened event"
do
it
'should have issue opened event'
do
expect
(
body
).
to
have_content
(
"
#{
safe_name
}
opened issue #
#{
issue
.
iid
}
"
)
end
it
"should have issue comment event"
do
it
'should have issue comment event'
do
expect
(
body
).
to
have_content
(
"
#{
safe_name
}
commented on issue #
#{
issue
.
iid
}
"
)
end
...
...
spec/features/issues_spec.rb
View file @
026e9885
require
'spec_helper'
describe
"Issues"
,
feature:
true
do
describe
'Issues'
,
feature:
true
do
include
SortingHelper
let
(
:project
)
{
create
(
:project
)
}
...
...
@@ -12,7 +12,7 @@ describe "Issues", feature: true do
project
.
team
<<
[[
@user
,
user2
],
:developer
]
end
describe
"Edit issue"
do
describe
'Edit issue'
do
let!
(
:issue
)
do
create
(
:issue
,
author:
@user
,
...
...
@@ -25,30 +25,34 @@ describe "Issues", feature: true do
click_link
"Edit"
end
it
"should open new issue popup"
do
it
'should open new issue popup'
do
expect
(
page
).
to
have_content
(
"Issue #
#{
issue
.
iid
}
"
)
end
describe
"fill in"
do
describe
'fill in'
do
before
do
fill_in
"issue_title"
,
with:
"bug 345"
fill_in
"issue_description"
,
with:
"bug description"
fill_in
'issue_title'
,
with:
'bug 345'
fill_in
'issue_description'
,
with:
'bug description'
end
it
{
expect
{
click_button
"Save changes"
}.
to_not
change
{
Issue
.
count
}
}
it
'does not change issue count'
do
expect
{
click_button
'Save changes'
}.
to_not
change
{
Issue
.
count
}
end
it
"should update issue fields"
do
click_button
"Save changes"
it
'should update issue fields'
do
click_button
'Save changes'
expect
(
page
).
to
have_content
@user
.
name
expect
(
page
).
to
have_content
"bug 345"
expect
(
page
).
to
have_content
'bug 345'
expect
(
page
).
to
have_content
project
.
name
end
end
end
describe
"Editing issue assignee"
do
describe
'Editing issue assignee'
do
let!
(
:issue
)
do
create
(
:issue
,
author:
@user
,
...
...
@@ -56,7 +60,7 @@ describe "Issues", feature: true do
project:
project
)
end
it
'allows user to select unasigned'
,
:js
=>
true
do
it
'allows user to select unasigned'
,
js:
true
do
visit
edit_project_issue_path
(
project
,
issue
)
expect
(
page
).
to
have_content
"Assign to
#{
@user
.
name
}
"
...
...
@@ -65,14 +69,14 @@ describe "Issues", feature: true do
sleep
2
# wait for ajax stuff to complete
first
(
'.user-result'
).
click
click_button
"Save changes"
click_button
'Save changes'
expect
(
page
).
to
have_content
'Assignee: none'
expect
(
issue
.
reload
.
assignee
).
to
be_nil
end
end
describe
"Filter issue"
do
describe
'Filter issue'
do
before
do
[
'foobar'
,
'barbaz'
,
'gitlab'
].
each
do
|
title
|
create
(
:issue
,
...
...
@@ -90,7 +94,7 @@ describe "Issues", feature: true do
let
(
:issue
)
{
@issue
}
it
"should allow filtering by issues with no specified milestone"
do
it
'should allow filtering by issues with no specified milestone'
do
visit
project_issues_path
(
project
,
milestone_id:
'0'
)
expect
(
page
).
not_to
have_content
'foobar'
...
...
@@ -98,7 +102,7 @@ describe "Issues", feature: true do
expect
(
page
).
to
have_content
'gitlab'
end
it
"should allow filtering by a specified milestone"
do
it
'should allow filtering by a specified milestone'
do
visit
project_issues_path
(
project
,
milestone_id:
issue
.
milestone
.
id
)
expect
(
page
).
to
have_content
'foobar'
...
...
@@ -106,7 +110,7 @@ describe "Issues", feature: true do
expect
(
page
).
not_to
have_content
'gitlab'
end
it
"should allow filtering by issues with no specified assignee"
do
it
'should allow filtering by issues with no specified assignee'
do
visit
project_issues_path
(
project
,
assignee_id:
'0'
)
expect
(
page
).
to
have_content
'foobar'
...
...
@@ -114,7 +118,7 @@ describe "Issues", feature: true do
expect
(
page
).
not_to
have_content
'gitlab'
end
it
"should allow filtering by a specified assignee"
do
it
'should allow filtering by a specified assignee'
do
visit
project_issues_path
(
project
,
assignee_id:
@user
.
id
)
expect
(
page
).
not_to
have_content
'foobar'
...
...
@@ -126,7 +130,11 @@ describe "Issues", feature: true do
describe
'filter issue'
do
titles
=
[
'foo'
,
'bar'
,
'baz'
]
titles
.
each_with_index
do
|
title
,
index
|
let!
(
title
.
to_sym
)
{
create
(
:issue
,
title:
title
,
project:
project
,
created_at:
Time
.
now
-
(
index
*
60
))
}
let!
(
title
.
to_sym
)
do
create
(
:issue
,
title:
title
,
project:
project
,
created_at:
Time
.
now
-
(
index
*
60
))
end
end
let
(
:newer_due_milestone
)
{
create
(
:milestone
,
due_date:
'2013-12-11'
)
}
let
(
:later_due_milestone
)
{
create
(
:milestone
,
due_date:
'2013-12-12'
)
}
...
...
@@ -134,15 +142,15 @@ describe "Issues", feature: true do
it
'sorts by newest'
do
visit
project_issues_path
(
project
,
sort:
sort_value_recently_created
)
expect
(
first_issue
).
to
include
(
"foo"
)
expect
(
last_issue
).
to
include
(
"baz"
)
expect
(
first_issue
).
to
include
(
'foo'
)
expect
(
last_issue
).
to
include
(
'baz'
)
end
it
'sorts by oldest'
do
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_created
)
expect
(
first_issue
).
to
include
(
"baz"
)
expect
(
last_issue
).
to
include
(
"foo"
)
expect
(
first_issue
).
to
include
(
'baz'
)
expect
(
last_issue
).
to
include
(
'foo'
)
end
it
'sorts by most recently updated'
do
...
...
@@ -150,7 +158,7 @@ describe "Issues", feature: true do
baz
.
save
visit
project_issues_path
(
project
,
sort:
sort_value_recently_updated
)
expect
(
first_issue
).
to
include
(
"baz"
)
expect
(
first_issue
).
to
include
(
'baz'
)
end
it
'sorts by least recently updated'
do
...
...
@@ -158,7 +166,7 @@ describe "Issues", feature: true do
baz
.
save
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_updated
)
expect
(
first_issue
).
to
include
(
"baz"
)
expect
(
first_issue
).
to
include
(
'baz'
)
end
describe
'sorting by milestone'
do
...
...
@@ -172,13 +180,13 @@ describe "Issues", feature: true do
it
'sorts by recently due milestone'
do
visit
project_issues_path
(
project
,
sort:
sort_value_milestone_soon
)
expect
(
first_issue
).
to
include
(
"foo"
)
expect
(
first_issue
).
to
include
(
'foo'
)
end
it
'sorts by least recently due milestone'
do
visit
project_issues_path
(
project
,
sort:
sort_value_milestone_later
)
expect
(
first_issue
).
to
include
(
"bar"
)
expect
(
first_issue
).
to
include
(
'bar'
)
end
end
...
...
@@ -193,10 +201,12 @@ describe "Issues", feature: true do
end
it
'sorts with a filter applied'
do
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_created
,
assignee_id:
user2
.
id
)
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_created
,
assignee_id:
user2
.
id
)
expect
(
first_issue
).
to
include
(
"bar"
)
expect
(
last_issue
).
to
include
(
"foo"
)
expect
(
first_issue
).
to
include
(
'bar'
)
expect
(
last_issue
).
to
include
(
'foo'
)
expect
(
page
).
not_to
have_content
'baz'
end
end
...
...
@@ -210,11 +220,13 @@ describe "Issues", feature: true do
it
'with dropdown menu'
do
visit
project_issue_path
(
project
,
issue
)
find
(
'.edit-issue.inline-update #issue_assignee_id'
).
set
project
.
team
.
members
.
first
.
id
find
(
'.edit-issue.inline-update #issue_assignee_id'
).
set
project
.
team
.
members
.
first
.
id
click_button
'Update Issue'
expect
(
page
).
to
have_content
"Assignee:"
has_select?
(
'issue_assignee_id'
,
:selected
=>
project
.
team
.
members
.
first
.
name
)
expect
(
page
).
to
have_content
'Assignee:'
has_select?
(
'issue_assignee_id'
,
selected:
project
.
team
.
members
.
first
.
name
)
end
end
...
...
@@ -228,7 +240,7 @@ describe "Issues", feature: true do
issue
.
save
end
it
"shows assignee text"
,
js:
true
do
it
'shows assignee text'
,
js:
true
do
logout
login_with
guest
...
...
@@ -247,12 +259,13 @@ describe "Issues", feature: true do
it
'with dropdown menu'
do
visit
project_issue_path
(
project
,
issue
)
find
(
'.edit-issue.inline-update'
).
select
(
milestone
.
title
,
from:
'issue_milestone_id'
)
find
(
'.edit-issue.inline-update'
).
select
(
milestone
.
title
,
from:
'issue_milestone_id'
)
click_button
'Update Issue'
expect
(
page
).
to
have_content
"Milestone changed to
#{
milestone
.
title
}
"
expect
(
page
).
to
have_content
"Milestone:
#{
milestone
.
title
}
"
has_select?
(
'issue_assignee_id'
,
:selected
=>
milestone
.
title
)
has_select?
(
'issue_assignee_id'
,
selected:
milestone
.
title
)
end
end
...
...
@@ -265,7 +278,7 @@ describe "Issues", feature: true do
issue
.
save
end
it
"shows milestone text"
,
js:
true
do
it
'shows milestone text'
,
js:
true
do
logout
login_with
guest
...
...
@@ -282,7 +295,7 @@ describe "Issues", feature: true do
issue
.
save
end
it
'allows user to remove assignee'
,
:js
=>
true
do
it
'allows user to remove assignee'
,
js:
true
do
visit
project_issue_path
(
project
,
issue
)
expect
(
page
).
to
have_content
"Assignee:
#{
user2
.
name
}
"
...
...
@@ -298,10 +311,10 @@ describe "Issues", feature: true do
end
def
first_issue
all
(
"ul.issues-list li"
).
first
.
text
all
(
'ul.issues-list li'
).
first
.
text
end
def
last_issue
all
(
"ul.issues-list li"
).
last
.
text
all
(
'ul.issues-list li'
).
last
.
text
end
end
spec/features/notes_on_merge_requests_spec.rb
View file @
026e9885
...
...
@@ -3,10 +3,12 @@ require 'spec_helper'
describe
'Comments'
do
include
RepoHelpers
describe
"On a merge request"
,
js:
true
,
feature:
true
do
describe
'On a merge request'
,
js:
true
,
feature:
true
do
let!
(
:merge_request
)
{
create
(
:merge_request
)
}
let!
(
:project
)
{
merge_request
.
source_project
}
let!
(
:note
)
{
create
(
:note_on_merge_request
,
:with_attachment
,
project:
project
)
}
let!
(
:note
)
do
create
(
:note_on_merge_request
,
:with_attachment
,
project:
project
)
end
before
do
login_as
:admin
...
...
@@ -15,19 +17,20 @@ describe 'Comments' do
subject
{
page
}
describe
"the note form"
do
describe
'the note form'
do
it
'should be valid'
do
is_expected
.
to
have_css
(
".js-main-target-form"
,
visible:
true
,
count:
1
)
expect
(
find
(
".js-main-target-form input[type=submit]"
).
value
).
to
eq
(
"Add Comment"
)
is_expected
.
to
have_css
(
'.js-main-target-form'
,
visible:
true
,
count:
1
)
expect
(
find
(
'.js-main-target-form input[type=submit]'
).
value
).
to
eq
(
'Add Comment'
)
within
(
'.js-main-target-form'
)
do
expect
(
page
).
not_to
have_link
(
'Cancel'
)
end
end
describe
"with text"
do
describe
'with text'
do
before
do
within
(
".js-main-target-form"
)
do
fill_in
"note[note]"
,
with:
"This is awesome"
within
(
'.js-main-target-form'
)
do
fill_in
'note[note]'
,
with:
'This is awesome'
end
end
...
...
@@ -40,41 +43,45 @@ describe 'Comments' do
end
end
describe
"when posting a note"
do
describe
'when posting a note'
do
before
do
within
(
".js-main-target-form"
)
do
fill_in
"note[note]"
,
with:
"This is awsome!"
within
(
'.js-main-target-form'
)
do
fill_in
'note[note]'
,
with:
'This is awsome!'
find
(
'.js-md-preview-button'
).
click
click_button
"Add Comment"
click_button
'Add Comment'
end
end
it
'should be added and form reset'
do
is_expected
.
to
have_content
(
"This is awsome!"
)
is_expected
.
to
have_content
(
'This is awsome!'
)
within
(
'.js-main-target-form'
)
do
expect
(
page
).
to
have_no_field
(
'note[note]'
,
with:
'This is awesome!'
)
expect
(
page
).
to
have_css
(
'.js-md-preview'
,
visible: :hidden
)
end
within
(
".js-main-target-form"
)
{
is_expected
.
to
have_css
(
".js-note-text"
,
visible:
true
)
}
within
(
'.js-main-target-form'
)
do
is_expected
.
to
have_css
(
'.js-note-text'
,
visible:
true
)
end
end
end
describe
"when editing a note"
,
js:
true
do
it
"should contain the hidden edit form"
do
within
(
"#note_
#{
note
.
id
}
"
)
{
is_expected
.
to
have_css
(
".note-edit-form"
,
visible:
false
)
}
describe
'when editing a note'
,
js:
true
do
it
'should contain the hidden edit form'
do
within
(
"#note_
#{
note
.
id
}
"
)
do
is_expected
.
to
have_css
(
'.note-edit-form'
,
visible:
false
)
end
end
describe
"editing the note"
do
describe
'editing the note'
do
before
do
find
(
'.note'
).
hover
find
(
".js-note-edit"
).
click
end
it
"should show the note edit form and hide the note body"
do
it
'should show the note edit form and hide the note body'
do
within
(
"#note_
#{
note
.
id
}
"
)
do
expect
(
find
(
".current-note-edit-form"
,
visible:
true
)).
to
be_visible
expect
(
find
(
".note-edit-form"
,
visible:
true
)).
to
be_visible
expect
(
find
(
:css
,
".note-text"
,
visible:
false
)).
not_to
be_visible
expect
(
find
(
'.current-note-edit-form'
,
visible:
true
)).
to
be_visible
expect
(
find
(
'.note-edit-form'
,
visible:
true
)).
to
be_visible
expect
(
find
(
:css
,
'.note-text'
,
visible:
false
)).
not_to
be_visible
end
end
...
...
@@ -87,41 +94,43 @@ describe 'Comments' do
#end
#end
it
"appends the edited at time to the note"
do
within
(
".current-note-edit-form"
)
do
fill_in
"note[note]"
,
with:
"Some new content"
find
(
".btn-save"
).
click
it
'appends the edited at time to the note'
do
within
(
'.current-note-edit-form'
)
do
fill_in
'note[note]'
,
with:
'Some new content'
find
(
'.btn-save'
).
click
end
within
(
"#note_
#{
note
.
id
}
"
)
do
is_expected
.
to
have_css
(
".note_edited_ago"
)
expect
(
find
(
".note_edited_ago"
).
text
).
to
match
(
/less than a minute ago/
)
is_expected
.
to
have_css
(
'.note_edited_ago'
)
expect
(
find
(
'.note_edited_ago'
).
text
).
to
match
(
/less than a minute ago/
)
end
end
end
describe
"deleting an attachment"
do
describe
'deleting an attachment'
do
before
do
find
(
'.note'
).
hover
find
(
".js-note-edit"
).
click
find
(
'.js-note-edit'
).
click
end
it
"shows the delete link"
do
within
(
".note-attachment"
)
do
is_expected
.
to
have_css
(
".js-note-attachment-delete"
)
it
'shows the delete link'
do
within
(
'.note-attachment'
)
do
is_expected
.
to
have_css
(
'.js-note-attachment-delete'
)
end
end
it
"removes the attachment div and resets the edit form"
do
find
(
".js-note-attachment-delete"
).
click
is_expected
.
not_to
have_css
(
".note-attachment"
)
expect
(
find
(
".current-note-edit-form"
,
visible:
false
)).
not_to
be_visible
it
'removes the attachment div and resets the edit form'
do
find
(
'.js-note-attachment-delete'
).
click
is_expected
.
not_to
have_css
(
'.note-attachment'
)
expect
(
find
(
'.current-note-edit-form'
,
visible:
false
)).
not_to
be_visible
end
end
end
end
describe
"On a merge request diff"
,
js:
true
,
feature:
true
do
describe
'On a merge request diff'
,
js:
true
,
feature:
true
do
let
(
:merge_request
)
{
create
(
:merge_request
)
}
let
(
:project
)
{
merge_request
.
source_project
}
...
...
@@ -132,68 +141,74 @@ describe 'Comments' do
subject
{
page
}
describe
"when adding a note"
do
describe
'when adding a note'
do
before
do
click_diff_line
end
describe
"the notes holder"
do
it
{
is_expected
.
to
have_css
(
".js-temp-notes-holder"
)
}
describe
'the notes holder'
do
it
{
is_expected
.
to
have_css
(
'.js-temp-notes-holder'
)
}
it
{
within
(
".js-temp-notes-holder"
)
{
is_expected
.
to
have_css
(
".new_note"
)
}
}
it
'has .new_note css class'
do
within
(
'.js-temp-notes-holder'
)
do
expect
(
subject
).
to
have_css
(
'.new_note'
)
end
end
end
describe
"the note form"
do
describe
'the note form'
do
it
"shouldn't add a second form for same row"
do
click_diff_line
is_expected
.
to
have_css
(
"tr[id='
#{
line_code
}
'] + .js-temp-notes-holder form"
,
count:
1
)
is_expected
.
to
have_css
(
"tr[id='
#{
line_code
}
'] + .js-temp-notes-holder form"
,
count:
1
)
end
it
"should be removed when canceled"
do
it
'should be removed when canceled'
do
within
(
".diff-file form[rel$='
#{
line_code
}
']"
)
do
find
(
".js-close-discussion-note-form"
).
trigger
(
"click"
)
find
(
'.js-close-discussion-note-form'
).
trigger
(
'click'
)
end
is_expected
.
to
have_no_css
(
".js-temp-notes-holder"
)
is_expected
.
to
have_no_css
(
'.js-temp-notes-holder'
)
end
end
end
describe
"with muliple note forms"
do
describe
'with muliple note forms'
do
before
do
click_diff_line
click_diff_line
(
line_code_2
)
end
it
{
is_expected
.
to
have_css
(
".js-temp-notes-holder"
,
count:
2
)
}
it
{
is_expected
.
to
have_css
(
'.js-temp-notes-holder'
,
count:
2
)
}
describe
"previewing them separately"
do
describe
'previewing them separately'
do
before
do
# add two separate texts and trigger previews on both
within
(
"tr[id='
#{
line_code
}
'] + .js-temp-notes-holder"
)
do
fill_in
"note[note]"
,
with:
"One comment on line 7"
fill_in
'note[note]'
,
with:
'One comment on line 7'
find
(
'.js-md-preview-button'
).
click
end
within
(
"tr[id='
#{
line_code_2
}
'] + .js-temp-notes-holder"
)
do
fill_in
"note[note]"
,
with:
"Another comment on line 10"
fill_in
'note[note]'
,
with:
'Another comment on line 10'
find
(
'.js-md-preview-button'
).
click
end
end
end
describe
"posting a note"
do
describe
'posting a note'
do
before
do
within
(
"tr[id='
#{
line_code_2
}
'] + .js-temp-notes-holder"
)
do
fill_in
"note[note]"
,
with:
"Another comment on line 10"
click_button
(
"Add Comment"
)
fill_in
'note[note]'
,
with:
'Another comment on line 10'
click_button
(
'Add Comment'
)
end
end
it
'should be added as discussion'
do
is_expected
.
to
have_content
(
"Another comment on line 10"
)
is_expected
.
to
have_css
(
".notes_holder"
)
is_expected
.
to
have_css
(
".notes_holder .note"
,
count:
1
)
is_expected
.
to
have_content
(
'Another comment on line 10'
)
is_expected
.
to
have_css
(
'.notes_holder'
)
is_expected
.
to
have_css
(
'.notes_holder .note'
,
count:
1
)
is_expected
.
to
have_button
(
'Reply'
)
end
end
...
...
spec/features/profile_spec.rb
View file @
026e9885
require
'spec_helper'
describe
"Profile account page"
,
feature:
true
do
describe
'Profile account page'
,
feature:
true
do
let
(
:user
)
{
create
(
:user
)
}
before
do
login_as
:user
end
describe
"when signup is enabled"
do
describe
'when signup is enabled'
do
before
do
ApplicationSetting
.
any_instance
.
stub
(
signup_enabled?:
true
)
visit
profile_account_path
end
it
{
expect
(
page
).
to
have_content
(
"Remove account"
)
}
it
{
expect
(
page
).
to
have_content
(
'Remove account'
)
}
it
"should delete the account"
do
expect
{
click_link
"Delete account"
}.
to
change
{
User
.
count
}.
by
(
-
1
)
it
'should delete the account'
do
expect
{
click_link
'Delete account'
}.
to
change
{
User
.
count
}.
by
(
-
1
)
expect
(
current_path
).
to
eq
(
new_user_session_path
)
end
end
describe
"when signup is disabled"
do
describe
'when signup is disabled'
do
before
do
ApplicationSetting
.
any_instance
.
stub
(
signup_enabled?:
false
)
visit
profile_account_path
end
it
"should not have option to remove account"
do
expect
(
page
).
not_to
have_content
(
"Remove account"
)
it
'should not have option to remove account'
do
expect
(
page
).
not_to
have_content
(
'Remove account'
)
expect
(
current_path
).
to
eq
(
profile_account_path
)
end
end
...
...
spec/helpers/application_helper_spec.rb
View file @
026e9885
...
...
@@ -46,7 +46,8 @@ describe ApplicationHelper do
group
=
create
(
:group
)
group
.
avatar
=
File
.
open
(
avatar_file_path
)
group
.
save!
expect
(
group_icon
(
group
.
path
).
to_s
).
to
match
(
"/uploads/group/avatar/
#{
group
.
id
}
/gitlab_logo.png"
)
expect
(
group_icon
(
group
.
path
).
to_s
).
to
match
(
"/uploads/group/avatar/
#{
group
.
id
}
/gitlab_logo.png"
)
end
it
'should give default avatar_icon when no avatar is present'
do
...
...
@@ -86,7 +87,8 @@ describe ApplicationHelper do
user
=
create
(
:user
)
user
.
avatar
=
File
.
open
(
avatar_file_path
)
user
.
save!
expect
(
avatar_icon
(
user
.
email
).
to_s
).
to
match
(
"/uploads/user/avatar/
#{
user
.
id
}
/gitlab_logo.png"
)
expect
(
avatar_icon
(
user
.
email
).
to_s
).
to
match
(
"/uploads/user/avatar/
#{
user
.
id
}
/gitlab_logo.png"
)
end
it
'should return an url for the avatar with relative url'
do
...
...
@@ -96,7 +98,8 @@ describe ApplicationHelper do
user
=
create
(
:user
)
user
.
avatar
=
File
.
open
(
avatar_file_path
)
user
.
save!
expect
(
avatar_icon
(
user
.
email
).
to_s
).
to
match
(
"/gitlab/uploads/user/avatar/
#{
user
.
id
}
/gitlab_logo.png"
)
expect
(
avatar_icon
(
user
.
email
).
to_s
).
to
match
(
"/gitlab/uploads/user/avatar/
#{
user
.
id
}
/gitlab_logo.png"
)
end
it
'should call gravatar_icon when no avatar is present'
do
...
...
@@ -120,7 +123,8 @@ describe ApplicationHelper do
it
'should return default gravatar url'
do
Gitlab
.
config
.
gitlab
.
stub
(
https:
false
)
expect
(
gravatar_icon
(
user_email
)).
to
match
(
'http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118'
)
url
=
'http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118'
expect
(
gravatar_icon
(
user_email
)).
to
match
(
url
)
end
it
'should use SSL when appropriate'
do
...
...
@@ -130,8 +134,11 @@ describe ApplicationHelper do
it
'should return custom gravatar path when gravatar_url is set'
do
allow
(
self
).
to
receive
(
:request
).
and_return
(
double
(
:ssl?
=>
false
))
allow
(
Gitlab
.
config
.
gravatar
).
to
receive
(
:plain_url
).
and_return
(
'http://example.local/?s=%{size}&hash=%{hash}'
)
expect
(
gravatar_icon
(
user_email
,
20
)).
to
eq
(
'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118'
)
allow
(
Gitlab
.
config
.
gravatar
).
to
receive
(
:plain_url
).
and_return
(
'http://example.local/?s=%{size}&hash=%{hash}'
)
url
=
'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118'
expect
(
gravatar_icon
(
user_email
,
20
)).
to
eq
(
url
)
end
it
'should accept a custom size'
do
...
...
@@ -146,7 +153,8 @@ describe ApplicationHelper do
it
'should be case insensitive'
do
allow
(
self
).
to
receive
(
:request
).
and_return
(
double
(
:ssl?
=>
false
))
expect
(
gravatar_icon
(
user_email
)).
to
eq
(
gravatar_icon
(
user_email
.
upcase
+
' '
))
expect
(
gravatar_icon
(
user_email
)).
to
eq
(
gravatar_icon
(
user_email
.
upcase
+
' '
))
end
end
...
...
@@ -170,7 +178,7 @@ describe ApplicationHelper do
it
'includes a list of tag names'
do
expect
(
options
[
1
][
0
]).
to
eq
(
'Tags'
)
expect
(
options
[
1
][
1
]).
to
include
(
'v1.0.0'
,
'v1.1.0'
)
expect
(
options
[
1
][
1
]).
to
include
(
'v1.0.0'
,
'v1.1.0'
)
end
it
'includes a specific commit ref if defined'
do
...
...
@@ -183,9 +191,11 @@ describe ApplicationHelper do
it
'sorts tags in a natural order'
do
# Stub repository.tag_names to make sure we get some valid testing data
expect
(
@project
.
repository
).
to
receive
(
:tag_names
).
and_return
([
'v1.0.9'
,
'v1.0.10'
,
'v2.0'
,
'v3.1.4.2'
,
'v1.0.9a'
])
expect
(
@project
.
repository
).
to
receive
(
:tag_names
).
and_return
([
'v1.0.9'
,
'v1.0.10'
,
'v2.0'
,
'v3.1.4.2'
,
'v1.0.9a'
])
expect
(
options
[
1
][
1
]).
to
eq
([
'v3.1.4.2'
,
'v2.0'
,
'v1.0.10'
,
'v1.0.9a'
,
'v1.0.9'
])
expect
(
options
[
1
][
1
]).
to
eq
([
'v3.1.4.2'
,
'v2.0'
,
'v1.0.10'
,
'v1.0.9a'
,
'v1.0.9'
])
end
end
...
...
spec/helpers/broadcast_messages_helper_spec.rb
View file @
026e9885
...
...
@@ -14,7 +14,8 @@ describe BroadcastMessagesHelper do
before
{
broadcast_message
.
stub
(
color:
"#f2dede"
,
font:
"#b94a48"
)
}
it
"should have a customized style"
do
expect
(
broadcast_styling
(
broadcast_message
)).
to
match
(
'background-color:#f2dede;color:#b94a48'
)
expect
(
broadcast_styling
(
broadcast_message
)).
to
match
(
'background-color:#f2dede;color:#b94a48'
)
end
end
end
...
...
spec/helpers/diff_helper_spec.rb
View file @
026e9885
...
...
@@ -10,7 +10,7 @@ describe DiffHelper do
describe
'diff_hard_limit_enabled?'
do
it
'should return true if param is provided'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
:force_show_diff
=>
true
}
}
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
expect
(
diff_hard_limit_enabled?
).
to
be_truthy
end
...
...
@@ -21,7 +21,7 @@ describe DiffHelper do
describe
'allowed_diff_size'
do
it
'should return hard limit for a diff if force diff is true'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
:force_show_diff
=>
true
}
}
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
expect
(
allowed_diff_size
).
to
eq
(
1000
)
end
...
...
@@ -32,13 +32,15 @@ describe DiffHelper do
describe
'parallel_diff'
do
it
'should return an array of arrays containing the parsed diff'
do
expect
(
parallel_diff
(
diff_file
,
0
)).
to
match_array
(
parallel_diff_result_array
)
expect
(
parallel_diff
(
diff_file
,
0
)).
to
match_array
(
parallel_diff_result_array
)
end
end
describe
'generate_line_code'
do
it
'should generate correct line code'
do
expect
(
generate_line_code
(
diff_file
.
file_path
,
diff_file
.
diff_lines
.
first
)).
to
eq
(
'2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6'
)
expect
(
generate_line_code
(
diff_file
.
file_path
,
diff_file
.
diff_lines
.
first
)).
to
eq
(
'2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6'
)
end
end
...
...
@@ -55,12 +57,13 @@ describe DiffHelper do
describe
'diff_line_content'
do
it
'should return non breaking space when line is empty'
do
expect
(
diff_line_content
(
nil
)).
to
eq
(
" "
)
expect
(
diff_line_content
(
nil
)).
to
eq
(
' '
)
end
it
'should return the line itself'
do
expect
(
diff_line_content
(
diff_file
.
diff_lines
.
first
.
text
)).
to
eq
(
"@@ -6,12 +6,18 @@ module Popen"
)
expect
(
diff_line_content
(
diff_file
.
diff_lines
.
first
.
type
)).
to
eq
(
"match"
)
expect
(
diff_line_content
(
diff_file
.
diff_lines
.
first
.
text
)).
to
eq
(
'@@ -6,12 +6,18 @@ module Popen'
)
expect
(
diff_line_content
(
diff_file
.
diff_lines
.
first
.
type
)).
to
eq
(
'match'
)
expect
(
diff_line_content
(
diff_file
.
diff_lines
.
first
.
new_pos
)).
to
eq
(
6
)
end
end
...
...
spec/helpers/gitlab_markdown_helper_spec.rb
View file @
026e9885
require
"spec_helper"
require
'spec_helper'
describe
GitlabMarkdownHelper
do
include
ApplicationHelper
...
...
@@ -42,7 +42,8 @@ describe GitlabMarkdownHelper do
end
it
"should not touch HTML entities"
do
allow
(
@project
.
issues
).
to
receive
(
:where
).
with
(
id:
'39'
).
and_return
([
issue
])
allow
(
@project
.
issues
).
to
receive
(
:where
).
with
(
id:
'39'
).
and_return
([
issue
])
actual
=
'We'll accept good pull requests.'
expect
(
gfm
(
actual
)).
to
eq
(
"We'll accept good pull requests."
)
end
...
...
@@ -156,7 +157,8 @@ describe GitlabMarkdownHelper do
expect
(
gfm
(
actual
.
gsub
(
reference
,
"(
#{
reference
}
)"
))).
to
match
(
expected
)
# Append some text to the end of the reference
expect
(
gfm
(
actual
.
gsub
(
reference
,
"
#{
reference
}
, right?"
))).
to
match
(
expected
)
expect
(
gfm
(
actual
.
gsub
(
reference
,
"
#{
reference
}
, right?"
))).
to
match
(
expected
)
end
it
"should keep whitespace intact"
do
...
...
@@ -216,9 +218,8 @@ describe GitlabMarkdownHelper do
)
# Append some text to the end of the reference
expect
(
gfm
(
actual
.
gsub
(
full_reference
,
"
#{
full_reference
}
, right?"
))).
to
(
match
(
expected
)
)
expect
(
gfm
(
actual
.
gsub
(
full_reference
,
"
#{
full_reference
}
, right?"
))).
to
(
match
(
expected
))
end
it
'should keep whitespace intact'
do
...
...
@@ -315,7 +316,8 @@ describe GitlabMarkdownHelper do
expect
(
gfm
(
actual
.
gsub
(
reference
,
"(
#{
reference
}
)"
))).
to
match
(
expected
)
# Append some text to the end of the reference
expect
(
gfm
(
actual
.
gsub
(
reference
,
"
#{
reference
}
, right?"
))).
to
match
(
expected
)
expect
(
gfm
(
actual
.
gsub
(
reference
,
"
#{
reference
}
, right?"
))).
to
match
(
expected
)
end
it
"should keep whitespace intact"
do
...
...
@@ -471,7 +473,8 @@ describe GitlabMarkdownHelper do
expect
(
groups
[
0
]).
to
match
(
/This should finally fix $/
)
# First issue link
expect
(
groups
[
1
]).
to
match
(
/href="
#{
project_issue_url
(
project
,
issues
[
0
])
}
"/
)
expect
(
groups
[
1
]).
to
match
(
/href="
#{
project_issue_url
(
project
,
issues
[
0
])
}
"/
)
expect
(
groups
[
1
]).
to
match
(
/#
#{
issues
[
0
].
iid
}
$/
)
# Internal commit link
...
...
@@ -479,7 +482,8 @@ describe GitlabMarkdownHelper do
expect
(
groups
[
2
]).
to
match
(
/ and /
)
# Second issue link
expect
(
groups
[
3
]).
to
match
(
/href="
#{
project_issue_url
(
project
,
issues
[
1
])
}
"/
)
expect
(
groups
[
3
]).
to
match
(
/href="
#{
project_issue_url
(
project
,
issues
[
1
])
}
"/
)
expect
(
groups
[
3
]).
to
match
(
/#
#{
issues
[
1
].
iid
}
$/
)
# Trailing commit link
...
...
@@ -494,7 +498,8 @@ describe GitlabMarkdownHelper do
it
"escapes HTML passed in as the body"
do
actual
=
"This is a <h1>test</h1> - see #
#{
issues
[
0
].
iid
}
"
expect
(
link_to_gfm
(
actual
,
commit_path
)).
to
match
(
'<h1>test</h1>'
)
expect
(
link_to_gfm
(
actual
,
commit_path
)).
to
match
(
'<h1>test</h1>'
)
end
end
...
...
@@ -508,16 +513,20 @@ describe GitlabMarkdownHelper do
it
"should handle references in headers"
do
actual
=
"
\n
# Working around #
#{
issue
.
iid
}
\n
## Apply !
#{
merge_request
.
iid
}
"
expect
(
markdown
(
actual
,
{
no_header_anchors
:true
})).
to
match
(
%r{<h1[^<]*>Working around <a.+>#
#{
issue
.
iid
}
</a></h1>}
)
expect
(
markdown
(
actual
,
{
no_header_anchors
:true
})).
to
match
(
%r{<h2[^<]*>Apply <a.+>!
#{
merge_request
.
iid
}
</a></h2>}
)
expect
(
markdown
(
actual
,
no_header_anchors:
true
)).
to
match
(
%r{<h1[^<]*>Working around <a.+>#
#{
issue
.
iid
}
</a></h1>}
)
expect
(
markdown
(
actual
,
no_header_anchors:
true
)).
to
match
(
%r{<h2[^<]*>Apply <a.+>!
#{
merge_request
.
iid
}
</a></h2>}
)
end
it
"should add ids and links to headers"
do
# Test every rule except nested tags.
text
=
'..Ab_c-d. e..'
id
=
'ab_c-d-e'
expect
(
markdown
(
"#
#{
text
}
"
)).
to
match
(
%r{<h1 id="
#{
id
}
">
#{
text
}
<a href="[^"]*#
#{
id
}
"></a></h1>}
)
expect
(
markdown
(
"#
#{
text
}
"
,
{
no_header_anchors
:true
})).
to
eq
(
"<h1>
#{
text
}
</h1>"
)
expect
(
markdown
(
"#
#{
text
}
"
)).
to
match
(
%r{<h1 id="
#{
id
}
">
#{
text
}
<a href="[^"]*#
#{
id
}
"></a></h1>}
)
expect
(
markdown
(
"#
#{
text
}
"
,
{
no_header_anchors
:true
})).
to
eq
(
"<h1>
#{
text
}
</h1>"
)
id
=
'link-text'
expect
(
markdown
(
"# [link text](url) ![img alt](url)"
)).
to
match
(
...
...
@@ -530,13 +539,16 @@ describe GitlabMarkdownHelper do
actual
=
"
\n
* dark: #
#{
issue
.
iid
}
\n
* light by @
#{
member
.
user
.
username
}
"
expect
(
markdown
(
actual
)).
to
match
(
%r{<li>dark: <a.+>#
#{
issue
.
iid
}
</a></li>}
)
expect
(
markdown
(
actual
)).
to
match
(
%r{<li>light by <a.+>@
#{
member
.
user
.
username
}
</a></li>}
)
expect
(
markdown
(
actual
)).
to
match
(
%r{<li>dark: <a.+>#
#{
issue
.
iid
}
</a></li>}
)
expect
(
markdown
(
actual
)).
to
match
(
%r{<li>light by <a.+>@
#{
member
.
user
.
username
}
</a></li>}
)
end
it
"should not link the apostrophe to issue 39"
do
project
.
team
<<
[
user
,
:master
]
allow
(
project
.
issues
).
to
receive
(
:where
).
with
(
iid:
'39'
).
and_return
([
issue
])
allow
(
project
.
issues
).
to
receive
(
:where
).
with
(
iid:
'39'
).
and_return
([
issue
])
actual
=
"Yes, it is @
#{
member
.
user
.
username
}
's task."
expected
=
/Yes, it is <a.+>@
#{
member
.
user
.
username
}
<\/a>'s task/
...
...
@@ -545,7 +557,8 @@ describe GitlabMarkdownHelper do
it
"should not link the apostrophe to issue 39 in code blocks"
do
project
.
team
<<
[
user
,
:master
]
allow
(
project
.
issues
).
to
receive
(
:where
).
with
(
iid:
'39'
).
and_return
([
issue
])
allow
(
project
.
issues
).
to
receive
(
:where
).
with
(
iid:
'39'
).
and_return
([
issue
])
actual
=
"Yes, `it is @
#{
member
.
user
.
username
}
's task.`"
expected
=
/Yes, <code>it is @gfm\'s task.<\/code>/
...
...
@@ -555,7 +568,8 @@ describe GitlabMarkdownHelper do
it
"should handle references in <em>"
do
actual
=
"Apply _!
#{
merge_request
.
iid
}
_ ASAP"
expect
(
markdown
(
actual
)).
to
match
(
%r{Apply <em><a.+>!
#{
merge_request
.
iid
}
</a></em>}
)
expect
(
markdown
(
actual
)).
to
match
(
%r{Apply <em><a.+>!
#{
merge_request
.
iid
}
</a></em>}
)
end
it
"should handle tables"
do
...
...
@@ -572,8 +586,10 @@ describe GitlabMarkdownHelper do
target_html
=
"<pre class=
\"
code highlight white plaintext
\"
><code>some code from $40
\n
here too
\n
</code></pre>
\n
"
expect
(
helper
.
markdown
(
"
\n
some code from $
#{
snippet
.
id
}
\n
here too
\n
"
)).
to
eq
(
target_html
)
expect
(
helper
.
markdown
(
"
\n
```
\n
some code from $
#{
snippet
.
id
}
\n
here too
\n
```
\n
"
)).
to
eq
(
target_html
)
expect
(
helper
.
markdown
(
"
\n
some code from $
#{
snippet
.
id
}
\n
here too
\n
"
)).
to
eq
(
target_html
)
expect
(
helper
.
markdown
(
"
\n
```
\n
some code from $
#{
snippet
.
id
}
\n
here too
\n
```
\n
"
)).
to
eq
(
target_html
)
end
it
"should leave inline code untouched"
do
...
...
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