mirror of
https://github.com/middleman/middleman.git
synced 2022-11-09 12:20:27 -05:00
3d359378b3
* Fix bug where anchor gets added to i18n links in the wrong place * also fix Kramdown ignoring attributes * add tests for changes to i18n_link_to and kramdown * Pass &:to_sym as an argument to transform_keys! instead of a block.
259 lines
11 KiB
Gherkin
259 lines
11 KiB
Gherkin
Feature: i18n Paths
|
|
|
|
Scenario: link_to is i18n aware
|
|
Given a fixture app "empty-app"
|
|
And a file named "data/pages.yml" with:
|
|
"""
|
|
- hello.html
|
|
"""
|
|
And a file named "locales/en.yml" with:
|
|
"""
|
|
---
|
|
en:
|
|
msg: Hello
|
|
home: Home
|
|
"""
|
|
And a file named "locales/es.yml" with:
|
|
"""
|
|
---
|
|
es:
|
|
paths:
|
|
hello: "hola"
|
|
msg: Hola
|
|
home: Casa
|
|
"""
|
|
And a file named "source/localizable/index.html.erb" with:
|
|
"""
|
|
Page: <%= t(:hom) %>
|
|
"""
|
|
And a file named "source/localizable/hello.html.erb" with:
|
|
"""
|
|
Page: <%= t(:msg) %>
|
|
|
|
<%= link_to "Current Home", "/index.html", class: 'current' %>
|
|
<%= link_to "Other Home", "/index.html", title: "Other Home", locale: ::I18n.locale == :en ? :es : :en %>
|
|
<% link_to "/index.html", class: 'current' do %><span>Home: Current Block</span><% end %>
|
|
<% link_to "/index.html", title: "Other Home", locale: ::I18n.locale == :en ? :es : :en do %><span>Home: Other Block</span><% end %>
|
|
<%= link_to "Current Foobar", "/foobar.html", class: 'current' %>
|
|
<%= link_to "Other Foobar", "/foobar.html", title: "Other Foobar", locale: ::I18n.locale == :en ? :es : :en %>
|
|
|
|
<% data.pages.each_with_index do |p, i| %>
|
|
<%= link_to "Current #{p}", "/#{p}", class: 'current' %>
|
|
<%= link_to "Other #{p}", "/#{p}", title: "Other #{p}", locale: ::I18n.locale == :en ? :es : :en %>
|
|
<% link_to "/#{p}", class: 'current' do %><span>Current Block</span><% end %>
|
|
<% link_to "/#{p}", title: "Other #{p}", locale: ::I18n.locale == :en ? :es : :en do %><span>Other Block</span><% end %>
|
|
<% end %>
|
|
"""
|
|
And a file named "source/localizable/foobar.en.html.erb" with:
|
|
"""
|
|
English foobar
|
|
"""
|
|
And a file named "source/localizable/foobar.es.html.erb" with:
|
|
"""
|
|
Spanish foobar
|
|
"""
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :strip_index_file, false
|
|
activate :i18n, mount_at_root: :en
|
|
"""
|
|
Given the Server is running at "empty-app"
|
|
When I go to "/hello.html"
|
|
Then I should see "Page: Hello"
|
|
Then I should see '<a href="/index.html" class="current">Current Home</a>'
|
|
Then I should see '<a href="/es/index.html" title="Other Home">Other Home</a>'
|
|
Then I should see '<a href="/index.html" class="current"><span>Home: Current Block</span></a>'
|
|
Then I should see '<a href="/es/index.html" title="Other Home"><span>Home: Other Block</span></a>'
|
|
Then I should see '<a href="/hello.html" class="current">Current hello.html</a>'
|
|
Then I should see '<a href="/es/hola.html" title="Other hello.html">Other hello.html</a>'
|
|
Then I should see '<a href="/hello.html" class="current"><span>Current Block</span></a>'
|
|
Then I should see '<a href="/es/hola.html" title="Other hello.html"><span>Other Block</span></a>'
|
|
Then I should see '<a href="/foobar.html" class="current">Current Foobar</a>'
|
|
Then I should see '<a href="/es/foobar.html" title="Other Foobar">Other Foobar</a>'
|
|
When I go to "/es/hola.html"
|
|
Then I should see "Page: Hola"
|
|
Then I should see '<a href="/es/index.html" class="current">Current Home</a>'
|
|
Then I should see '<a href="/index.html" title="Other Home">Other Home</a>'
|
|
Then I should see '<a href="/es/index.html" class="current"><span>Home: Current Block</span></a>'
|
|
Then I should see '<a href="/index.html" title="Other Home"><span>Home: Other Block</span></a>'
|
|
Then I should see '<a href="/es/hola.html" class="current">Current hello.html</a>'
|
|
Then I should see '<a href="/hello.html" title="Other hello.html">Other hello.html</a>'
|
|
Then I should see '<a href="/es/hola.html" class="current"><span>Current Block</span></a>'
|
|
Then I should see '<a href="/hello.html" title="Other hello.html"><span>Other Block</span></a>'
|
|
Then I should see '<a href="/es/foobar.html" class="current">Current Foobar</a>'
|
|
Then I should see '<a href="/foobar.html" title="Other Foobar">Other Foobar</a>'
|
|
|
|
Scenario: link_to is i18n aware and supports relative_links
|
|
Given a fixture app "empty-app"
|
|
And a file named "locales/en.yml" with:
|
|
"""
|
|
---
|
|
en:
|
|
msg: Hello
|
|
home: Home
|
|
"""
|
|
And a file named "locales/es.yml" with:
|
|
"""
|
|
---
|
|
es:
|
|
paths:
|
|
hello: "hola"
|
|
msg: Hola
|
|
home: Casa
|
|
"""
|
|
And a file named "source/assets/css/main.css.scss" with:
|
|
"""
|
|
$color: red;
|
|
body { background: $color; }
|
|
"""
|
|
And a file named "source/localizable/index.html.erb" with:
|
|
"""
|
|
Page: <%= t(:home) %>
|
|
<%= stylesheet_link_tag :main %>
|
|
"""
|
|
And a file named "source/localizable/hello.html.erb" with:
|
|
"""
|
|
Page: <%= t(:msg) %>
|
|
|
|
<%= link_to "Current Home", "/index.html", class: 'current' %>
|
|
<%= link_to "Other Home", "/index.html", title: "Other Home", locale: ::I18n.locale == :en ? :es : :en %>
|
|
<% link_to "/index.html", class: 'current' do %><span>Home: Current Block</span><% end %>
|
|
<% link_to "/index.html", title: "Other Home", locale: ::I18n.locale == :en ? :es : :en do %><span>Home: Other Block</span><% end %>
|
|
|
|
<%= link_to "Current hello.html", "/hello.html", class: 'current' %>
|
|
<%= link_to "Other hello.html", "/hello.html", title: "Other hello.html", locale: ::I18n.locale == :en ? :es : :en %>
|
|
<% link_to "/hello.html", class: 'current' do %><span>Current Block</span><% end %>
|
|
<% link_to "/hello.html", title: "Other hello.html", locale: ::I18n.locale == :en ? :es : :en do %><span>Other Block</span><% end %>
|
|
"""
|
|
And a file named "config.rb" with:
|
|
"""
|
|
set :css_dir, 'assets/css'
|
|
set :relative_links, true
|
|
set :strip_index_file, false
|
|
activate :i18n, mount_at_root: :en
|
|
activate :relative_assets
|
|
"""
|
|
Given the Server is running at "empty-app"
|
|
When I go to "/index.html"
|
|
Then I should see "assets/css/main.css"
|
|
When I go to "/hello.html"
|
|
Then I should see "Page: Hello"
|
|
Then I should see '<a href="index.html" class="current">Current Home</a>'
|
|
Then I should see '<a href="es/index.html" title="Other Home">Other Home</a>'
|
|
Then I should see '<a href="index.html" class="current"><span>Home: Current Block</span></a>'
|
|
Then I should see '<a href="es/index.html" title="Other Home"><span>Home: Other Block</span></a>'
|
|
Then I should see '<a href="hello.html" class="current">Current hello.html</a>'
|
|
Then I should see '<a href="es/hola.html" title="Other hello.html">Other hello.html</a>'
|
|
Then I should see '<a href="hello.html" class="current"><span>Current Block</span></a>'
|
|
Then I should see '<a href="es/hola.html" title="Other hello.html"><span>Other Block</span></a>'
|
|
When I go to "/es/hola.html"
|
|
Then I should see "Page: Hola"
|
|
Then I should see '<a href="index.html" class="current">Current Home</a>'
|
|
Then I should see '<a href="../index.html" title="Other Home">Other Home</a>'
|
|
Then I should see '<a href="index.html" class="current"><span>Home: Current Block</span></a>'
|
|
Then I should see '<a href="../index.html" title="Other Home"><span>Home: Other Block</span></a>'
|
|
Then I should see '<a href="hola.html" class="current">Current hello.html</a>'
|
|
Then I should see '<a href="../hello.html" title="Other hello.html">Other hello.html</a>'
|
|
Then I should see '<a href="hola.html" class="current"><span>Current Block</span></a>'
|
|
Then I should see '<a href="../hello.html" title="Other hello.html"><span>Other Block</span></a>'
|
|
|
|
Scenario: url_for is i18n aware
|
|
Given a fixture app "empty-app"
|
|
And a file named "data/pages.yml" with:
|
|
"""
|
|
- hello.html
|
|
- article.html
|
|
"""
|
|
And a file named "locales/en.yml" with:
|
|
"""
|
|
---
|
|
en:
|
|
msg: Hello
|
|
"""
|
|
And a file named "locales/es.yml" with:
|
|
"""
|
|
---
|
|
es:
|
|
paths:
|
|
hello: "hola"
|
|
form: "formulario"
|
|
msg: Hola
|
|
"""
|
|
And a file named "source/localizable/hello.html.erb" with:
|
|
"""
|
|
Page: <%= t(:msg) %>
|
|
<% data.pages.each_with_index do |p, i| %>
|
|
Current: <%= url_for "/#{p}" %>
|
|
Other: <%= url_for "/#{p}", locale: ::I18n.locale == :en ? :es : :en %>
|
|
<% end %>
|
|
"""
|
|
And a file named "source/localizable/form.html.erb" with:
|
|
"""
|
|
Other: <%= url_for "/form.html", query: { foo: 'bar' }, fragment: "deep", locale: ::I18n.locale == :en ? :es : :en %>
|
|
"""
|
|
And a file named "source/localizable/article.html.erb" with:
|
|
"""
|
|
Page Lang: Default
|
|
|
|
Current: <%= url_for "/article.html" %>
|
|
Other: <%= url_for "/article.html", locale: ::I18n.locale == :en ? :es : :en %>
|
|
Current with anchor: <%= url_for "/article.html", :anchor => "test-anchor" %>
|
|
"""
|
|
And a file named "source/localizable/article.es.html.erb" with:
|
|
"""
|
|
Page Lang: Spanish
|
|
|
|
Current: <%= url_for "/article.html" %>
|
|
Other: <%= url_for "/article.html", locale: :en %>
|
|
Current with anchor: <%= url_for "/article.html", :anchor => "test-anchor" %>
|
|
"""
|
|
And a file named "config.rb" with:
|
|
"""
|
|
activate :i18n, mount_at_root: :en
|
|
"""
|
|
Given the Server is running at "empty-app"
|
|
When I go to "/hello.html"
|
|
Then I should see "Page: Hello"
|
|
Then I should see 'Current: /hello.html'
|
|
Then I should see 'Other: /es/hola.html'
|
|
When I go to "/es/hola.html"
|
|
Then I should see "Page: Hola"
|
|
Then I should see 'Current: /es/hola.html'
|
|
Then I should see 'Other: /hello.html'
|
|
When I go to "/form.html"
|
|
Then I should see 'Other: /es/formulario.html?foo=bar#deep'
|
|
When I go to "/es/formulario.html"
|
|
Then I should see 'Other: /form.html?foo=bar#deep'
|
|
When I go to "/article.html"
|
|
Then I should see "Page Lang: Default"
|
|
Then I should see 'Current: /article.html'
|
|
Then I should see 'Other: /es/article.html'
|
|
Then I should see 'Current with anchor: /article.html#test-anchor'
|
|
When I go to "/es/article.html"
|
|
Then I should see "Page Lang: Spanish"
|
|
Then I should see 'Current: /es/article.html'
|
|
Then I should see 'Other: /article.html'
|
|
Then I should see 'Current with anchor: /es/article.html#test-anchor'
|
|
|
|
Scenario: url_for can link to the current page in a different language with localized templates
|
|
Given a fixture app "empty-app"
|
|
And a file named "source/localizable/index.de.html.erb" with:
|
|
"""
|
|
Deutsch. Die Englische Version finden Sie unter "<%= url_for current_page, locale: :en %>"
|
|
"""
|
|
And a file named "source/localizable/index.en.html.erb" with:
|
|
"""
|
|
English. The German version can be found at "<%= url_for current_page, locale: :de %>"
|
|
"""
|
|
And a file named "config.rb" with:
|
|
"""
|
|
# FIXME: Auto-discover does not work if there are no locale files.
|
|
activate :i18n, mount_at_root: :en, :locales => [:en, :de]
|
|
"""
|
|
Given the Server is running at "empty-app"
|
|
When I go to "/index.html"
|
|
Then I should see "English"
|
|
Then I should see '"/de/"'
|
|
When I go to "/de/index.html"
|
|
Then I should see "Deutsch"
|
|
Then I should see '"/"'
|