mirror of
https://github.com/middleman/middleman.git
synced 2022-11-09 12:20:27 -05:00
4fe0732713
* Use "Given" instead of "And" as first scenario step * Remove unnecessary step The following step already invokes this step * Remove setup in feature that doesn't do anything As this referenced "i18n-test-app", but later we run "i18n-mixed-sources", these steps weren't doing anything. * Avoid referencing the same fixture twice The step "the Server is running at" invokes the "a fixture app" step, followed by "the Server is running" step.
195 lines
7.9 KiB
Gherkin
195 lines
7.9 KiB
Gherkin
Feature: link_to helper
|
|
|
|
Scenario: link_to works with blocks (erb)
|
|
Given the Server is running at "link-to-app"
|
|
When I go to "/link_to_erb.html"
|
|
Then I should see "erb <s>with html tags</s>"
|
|
|
|
Scenario: link_to works with absolute URLs (where the relative part matches a local path)
|
|
Given a fixture app "link-to-app"
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :relative_links, true
|
|
"""
|
|
And a file named "source/test.html.erb" with:
|
|
"""
|
|
Hello
|
|
"""
|
|
And a file named "source/link_to_absolute.html.erb" with:
|
|
"""
|
|
<%= link_to "test", "http://google.com/test.html" %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/link_to_absolute.html"
|
|
Then I should see '<a href="http://google.com/test.html">test</a>'
|
|
|
|
Scenario: link_to works with blocks (slim)
|
|
Given the Server is running at "link-to-app"
|
|
When I go to "/link_to_slim.html"
|
|
Then I should see "<s>slim with html tags</s>"
|
|
|
|
Scenario: link_to works with blocks (haml)
|
|
Given the Server is running at "link-to-app"
|
|
When I go to "/link_to_haml.html"
|
|
Then I should see "<s>haml with html tags</s>"
|
|
|
|
Scenario: link_to produces relative links
|
|
Given a fixture app "indexable-app"
|
|
And an empty file named "config.rb"
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
|
relative: <%= link_to "Relative", "needs_index.html", relative: true %>
|
|
|
|
absolute spaces: <%= link_to "Spaces Index", "/evil spaces.html", relative: true %>
|
|
relative spaces: <%= link_to "Spaces Relative", "evil spaces.html", relative: true %>
|
|
"""
|
|
And a file named "source/link_to/sub.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
|
relative: <%= link_to "Relative", "../needs_index.html", relative: true %>
|
|
|
|
absolute spaces: <%= link_to "Spaces Index", "/evil spaces.html", relative: true %>
|
|
relative spaces: <%= link_to "Spaces Relative", "../evil spaces.html", relative: true %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/link_to.html"
|
|
Then I should see 'absolute: <a href="needs_index.html">Needs Index</a>'
|
|
Then I should see 'relative: <a href="needs_index.html">Relative</a>'
|
|
Then I should see 'absolute spaces: <a href="evil%20spaces.html">Spaces Index</a>'
|
|
Then I should see 'relative spaces: <a href="evil%20spaces.html">Spaces Relative</a>'
|
|
When I go to "/link_to/sub.html"
|
|
Then I should see 'absolute: <a href="../needs_index.html">Needs Index</a>'
|
|
Then I should see 'relative: <a href="../needs_index.html">Relative</a>'
|
|
Then I should see 'absolute spaces: <a href="../evil%20spaces.html">Spaces Index</a>'
|
|
Then I should see 'relative spaces: <a href="../evil%20spaces.html">Spaces Relative</a>'
|
|
|
|
Scenario: link_to relative works with strip_index_file
|
|
Given a fixture app "indexable-app"
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :relative_links, true
|
|
set :strip_index_file, true
|
|
helpers do
|
|
def menu_items(path='link_to.html')
|
|
sitemap.by_destination_path(path).children
|
|
end
|
|
end
|
|
"""
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
<% menu_items.each do |item| %>
|
|
<%= link_to(item.data['title'], item.url) %>
|
|
<%= link_to(item.data['title'], item) %>
|
|
<% end %>
|
|
"""
|
|
And a file named "source/link_to/sub.html.erb" with:
|
|
"""
|
|
<% menu_items.each do |item| %>
|
|
<%= link_to(item.data['title'], item.url) %>
|
|
<%= link_to(item.data['title'], item) %>
|
|
<% end %>
|
|
"""
|
|
And the Server is running at "indexable-app"
|
|
When I go to "/link_to.html"
|
|
Then I should see '"link_to/sub.html"'
|
|
Then I should not see "/link_to/sub.html"
|
|
When I go to "/link_to/sub.html"
|
|
Then I should see '"sub.html"'
|
|
Then I should not see "/link_to/sub.html"
|
|
|
|
Scenario: link_to produces relative links when :relative_links is set to true
|
|
Given a fixture app "indexable-app"
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :relative_links, true
|
|
"""
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html" %>
|
|
relative: <%= link_to "Relative", "needs_index.html", relative: false %>
|
|
unknown: <%= link_to "Unknown", "foo.html" %>
|
|
"""
|
|
And a file named "source/link_to/sub.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html" %>
|
|
relative: <%= link_to "Relative", "../needs_index.html" %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/link_to.html"
|
|
Then I should see 'absolute: <a href="needs_index.html">Needs Index</a>'
|
|
Then I should see 'relative: <a href="/needs_index.html">Relative</a>'
|
|
Then I should see 'unknown: <a href="foo.html">Unknown</a>'
|
|
When I go to "/link_to/sub.html"
|
|
Then I should see 'absolute: <a href="../needs_index.html">Needs Index</a>'
|
|
Then I should see 'relative: <a href="../needs_index.html">Relative</a>'
|
|
|
|
Scenario: link_to knows about directory indexes
|
|
Given a fixture app "indexable-app"
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
|
relative: <%= link_to "Relative", "needs_index.html", relative: true %>
|
|
"""
|
|
And a file named "source/link_to/sub.html.erb" with:
|
|
"""
|
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
|
relative: <%= link_to "Relative", "../needs_index.html", relative: true %>
|
|
"""
|
|
And the Server is running at "indexable-app"
|
|
When I go to "/link_to/"
|
|
Then I should see 'absolute: <a href="../needs_index/">Needs Index</a>'
|
|
Then I should see 'relative: <a href="../needs_index/">Relative</a>'
|
|
When I go to "/link_to/sub/"
|
|
Then I should see 'absolute: <a href="../../needs_index/">Needs Index</a>'
|
|
Then I should see 'relative: <a href="../../needs_index/">Relative</a>'
|
|
|
|
Scenario: link_to can take a Resource
|
|
Given a fixture app "indexable-app"
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
<%= link_to "Needs Index", sitemap.by_path("/needs_index.html") %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/link_to/"
|
|
Then I should see '<a href="/needs_index/">Needs Index</a>'
|
|
|
|
Scenario: Setting http_prefix
|
|
Given a fixture app "indexable-app"
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :http_prefix, "/foo"
|
|
"""
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
<%= link_to "Needs Index", "/needs_index.html" %>
|
|
"""
|
|
And the Server is running at "indexable-app"
|
|
When I go to "/link_to.html"
|
|
Then I should see '<a href="/foo/needs_index.html">Needs Index</a>'
|
|
|
|
Scenario: link_to preserves query string and anchor and isn't messed up by them
|
|
Given a fixture app "indexable-app"
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
<%= link_to "Needs Index Anchor", "/needs_index.html#foo" %>
|
|
<%= link_to "Needs Index Query", "/needs_index.html?foo" %>
|
|
<%= link_to "Needs Index Query and Anchor", "/needs_index.html?foo#foo" %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/link_to/"
|
|
Then I should see '<a href="/needs_index/#foo">Needs Index Anchor</a>'
|
|
Then I should see '<a href="/needs_index/?foo">Needs Index Query</a>'
|
|
Then I should see '<a href="/needs_index/?foo#foo">Needs Index Query and Anchor</a>'
|
|
|
|
Scenario: link_to accepts a :query option that appends a query string
|
|
Given a fixture app "indexable-app"
|
|
And a file named "source/link_to.html.erb" with:
|
|
"""
|
|
<%= link_to "Needs Index String", "/needs_index.html", query: "foo" %>
|
|
<%= link_to "Needs Index Hash", "/needs_index.html", query: { foo: :bar } %>
|
|
"""
|
|
And the Server is running at "indexable-app"
|
|
When I go to "/link_to/"
|
|
Then I should see '<a href="/needs_index/?foo">Needs Index String</a>'
|
|
Then I should see '<a href="/needs_index/?foo=bar">Needs Index Hash</a>'
|