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
Léo-Paul Géneau
gitlab-ce
Commits
44b82396
Commit
44b82396
authored
May 12, 2015
by
Jakub Jirutka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add spec for RelativeLinkFilter
parent
b3276661
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
120 additions
and
73 deletions
+120
-73
spec/helpers/gitlab_markdown_helper_spec.rb
spec/helpers/gitlab_markdown_helper_spec.rb
+0
-73
spec/lib/gitlab/markdown/relative_link_filter_spec.rb
spec/lib/gitlab/markdown/relative_link_filter_spec.rb
+120
-0
No files found.
spec/helpers/gitlab_markdown_helper_spec.rb
View file @
44b82396
...
...
@@ -96,79 +96,6 @@ describe GitlabMarkdownHelper do
end
end
describe
"#markdown"
do
# TODO (rspeicher): These belong in a relative link filter spec
context
'relative links'
do
context
'with a valid repository'
do
before
do
@repository
=
project
.
repository
@ref
=
'markdown'
end
it
"should handle relative urls for a file in master"
do
actual
=
"[GitLab API doc](doc/api/README.md)
\n
"
expected
=
"<p><a href=
\"
/
#{
project
.
path_with_namespace
}
/blob/
#{
@ref
}
/doc/api/README.md
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should handle relative urls for a file in master with an anchor"
do
actual
=
"[GitLab API doc](doc/api/README.md#section)
\n
"
expected
=
"<p><a href=
\"
/
#{
project
.
path_with_namespace
}
/blob/
#{
@ref
}
/doc/api/README.md#section
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should not handle relative urls for the current file with an anchor"
do
actual
=
"[GitLab API doc](#section)
\n
"
expected
=
"<p><a href=
\"
#section
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should handle relative urls for a directory in master"
do
actual
=
"[GitLab API doc](doc/api)
\n
"
expected
=
"<p><a href=
\"
/
#{
project
.
path_with_namespace
}
/tree/
#{
@ref
}
/doc/api
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should handle absolute urls"
do
actual
=
"[GitLab](https://www.gitlab.com)
\n
"
expected
=
"<p><a href=
\"
https://www.gitlab.com
\"
>GitLab</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should handle relative urls in reference links for a file in master"
do
actual
=
"[GitLab API doc][GitLab readme]
\n
[GitLab readme]: doc/api/README.md
\n
"
expected
=
"<p><a href=
\"
/
#{
project
.
path_with_namespace
}
/blob/
#{
@ref
}
/doc/api/README.md
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should handle relative urls in reference links for a directory in master"
do
actual
=
"[GitLab API doc directory][GitLab readmes]
\n
[GitLab readmes]: doc/api/
\n
"
expected
=
"<p><a href=
\"
/
#{
project
.
path_with_namespace
}
/tree/
#{
@ref
}
/doc/api
\"
>GitLab API doc directory</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
it
"should not handle malformed relative urls in reference links for a file in master"
do
actual
=
"[GitLab readme]: doc/api/README.md
\n
"
expected
=
""
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
end
context
'with an empty repository'
do
before
do
@project
=
create
(
:empty_project
)
@repository
=
@project
.
repository
end
it
"should not touch relative urls"
do
actual
=
"[GitLab API doc][GitLab readme]
\n
[GitLab readme]: doc/api/README.md
\n
"
expected
=
"<p><a href=
\"
doc/api/README.md
\"
>GitLab API doc</a></p>
\n
"
expect
(
markdown
(
actual
)).
to
match
(
expected
)
end
end
end
end
describe
'#render_wiki_content'
do
before
do
@wiki
=
double
(
'WikiPage'
)
...
...
spec/lib/gitlab/markdown/relative_link_filter_spec.rb
0 → 100644
View file @
44b82396
require
'spec_helper'
module
Gitlab::Markdown
describe
RelativeLinkFilter
do
include
ActionView
::
Helpers
::
TagHelper
let!
(
:project
)
{
create
(
:project
)
}
let
(
:commit
)
{
project
.
commit
}
let
(
:project_path
)
{
project
.
path_with_namespace
}
let
(
:repository
)
{
project
.
repository
}
let
(
:ref
)
{
'markdown'
}
let
(
:project_wiki
)
{
nil
}
let
(
:requested_path
)
{
'/'
}
let
(
:blob
)
{
RepoHelpers
.
sample_blob
}
let
(
:context
)
do
{
commit:
commit
,
project:
project
,
project_wiki:
project_wiki
,
requested_path:
requested_path
,
ref:
ref
}
end
shared_examples
:preserve_unchanged
do
it
"should not modify any relative url in anchor"
do
doc
=
tag
(
:a
,
href:
'README.md'
)
expect
(
filter
(
doc
)
).
to
match
'"README.md"'
end
it
"should not modify any relative url in image"
do
doc
=
tag
(
:img
,
src:
'files/images/logo-black.png'
)
expect
(
filter
(
doc
)
).
to
match
'"files/images/logo-black.png"'
end
end
shared_examples
:relative_to_requested
do
it
"should rebuild url relative to the requested path"
do
expect
(
filter
(
tag
(
:a
,
href:
'users.md'
))
).
to
\
match
%("/#{project_path}/blob/#{ref}/doc/api/users.md")
end
end
context
"with a project_wiki"
do
let
(
:project_wiki
)
{
double
(
'ProjectWiki'
)
}
include_examples
:preserve_unchanged
end
context
"without a repository"
do
let!
(
:project
)
{
create
(
:empty_project
)
}
include_examples
:preserve_unchanged
end
context
"with an empty repository"
do
let!
(
:project
)
{
create
(
:project_empty_repo
)
}
include_examples
:preserve_unchanged
end
context
"with a valid repository"
do
it
"should rebuild relative url for a file in the repo"
do
expect
(
filter
(
tag
(
:a
,
href:
'doc/api/README.md'
))
).
to
\
match
%("/#{project_path}/blob/#{ref}/doc/api/README.md")
end
it
"should rebuild relative url for a file in the repo with an anchor"
do
expect
(
filter
(
tag
(
:a
,
href:
'README.md#section'
))
).
to
\
match
%("/#{project_path}/blob/#{ref}/README.md#section")
end
it
"should rebuild relative url for a directory in the repo"
do
expect
(
filter
(
tag
(
:a
,
href:
'doc/api/'
))
).
to
\
match
%("/#{project_path}/tree/#{ref}/doc/api")
end
it
"should rebuild relative url for an image in the repo"
do
expect
(
filter
(
tag
(
:img
,
src:
'files/images/logo-black.png'
))
).
to
\
match
%("/#{project_path}/raw/#{ref}/files/images/logo-black.png")
end
it
"should not modify relative url with an anchor only"
do
doc
=
tag
(
:a
,
href:
'#section-1'
)
expect
(
filter
(
doc
)
).
to
match
%("#section-1")
end
it
"should not modify absolute url"
do
expect
(
filter
(
tag
(
:a
,
href:
'http://example.org'
))
).
to
\
match
%("http://example.org")
end
context
"when requested path is a file in the repo"
do
let
(
:requested_path
)
{
'doc/api/README.md'
}
include_examples
:relative_to_requested
end
context
"when requested path is a directory in the repo"
do
let
(
:requested_path
)
{
'doc/api'
}
include_examples
:relative_to_requested
end
end
def
filter
(
doc
)
described_class
.
call
(
doc
,
context
).
to_s
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