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.
269 lines
11 KiB
Gherkin
269 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
|
|
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
|
|
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
|
|
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
|
|
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 '"/"'
|
|
|
|
Scenario: link_to is i18n aware and leaves absolute URLs unchanged
|
|
Given a fixture app "i18n-default-app"
|
|
And a file named "source/localizable/index.html.erb" with:
|
|
"""
|
|
<%= link_to "Example", "https://www.example.org/" %>
|
|
"""
|
|
And the Server is running
|
|
When I go to "/index.html"
|
|
Then I should see '<a href="https://www.example.org/">Example</a>'
|