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 with html tags" 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 at "link-to-app" When I go to "/link_to_absolute.html" Then I should see 'test' 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 "slim with html tags" 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 "haml with html tags" 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 at "indexable-app" When I go to "/link_to.html" Then I should see 'absolute: Needs Index' Then I should see 'relative: Relative' Then I should see 'absolute spaces: Spaces Index' Then I should see 'relative spaces: Spaces Relative' When I go to "/link_to/sub.html" Then I should see 'absolute: Needs Index' Then I should see 'relative: Relative' Then I should see 'absolute spaces: Spaces Index' Then I should see 'relative spaces: Spaces Relative' 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.find_resource_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 at "indexable-app" When I go to "/link_to.html" Then I should see 'absolute: Needs Index' Then I should see 'relative: Relative' Then I should see 'unknown: Unknown' When I go to "/link_to/sub.html" Then I should see 'absolute: Needs Index' Then I should see 'relative: Relative' 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: Needs Index' Then I should see 'relative: Relative' When I go to "/link_to/sub/" Then I should see 'absolute: Needs Index' Then I should see 'relative: Relative' 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.find_resource_by_path("/needs_index.html") %> """ And the Server is running at "indexable-app" When I go to "/link_to/" Then I should see 'Needs Index' 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 'Needs Index' 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 at "indexable-app" When I go to "/link_to/" Then I should see 'Needs Index Anchor' Then I should see 'Needs Index Query' Then I should see 'Needs Index Query and Anchor' 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 'Needs Index String' Then I should see 'Needs Index Hash'