Skip to content

Commit

Permalink
Use I18n for month select
Browse files Browse the repository at this point in the history
  • Loading branch information
acrogenesis authored and calebhearth committed Feb 6, 2015
1 parent be71be7 commit e4eb895
Show file tree
Hide file tree
Showing 4 changed files with 239 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/formulaic/inputs/date_input.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def fill
def select_date(date, options)
field = find_field(options[:from].to_s)["id"].gsub(/_\di/, "")
select date.year.to_s, from: "#{field}_1i"
select Date::MONTHNAMES[date.month], from: "#{field}_2i"
select I18n.t("date.month_names")[date.month], from: "#{field}_2i"
select date.day.to_s, from: "#{field}_3i"
end
end
Expand Down
16 changes: 16 additions & 0 deletions spec/features/fill_in_user_form_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,22 @@
expect(page.find('#user_date_of_birth_5i').value).to eq('30')
end

it 'finds and fills a spanish locale date field' do
begin
I18n.locale = :es
visit 'user_form_es'
form = Formulaic::Form.new(:user, :new, date_of_birth: Date.new(1980, 1, 2))

form.fill

expect(page.find('#user_date_of_birth_1i').value).to eq('1980')
expect(page.find('#user_date_of_birth_2i').value).to eq('1')
expect(page.find('#user_date_of_birth_3i').value).to eq('2')
ensure
I18n.locale = :en
end
end

it 'finds and checks a boolean field' do
visit 'user_form'
form = Formulaic::Form.new(:user, :new, terms_of_service: true)
Expand Down
205 changes: 205 additions & 0 deletions spec/fixtures/user_form_es.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
<form accept-charset="UTF-8" action="/users" class="simple_form new_user" id="new_user" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value=""><input name="authenticity_token" type="hidden" value="O6ORla31JvEaWroCuiA7bArM15ztDotMfPAbNW0v61g="></div>
<div class="input string required user_name"><label class="string required"
for="user_name"><abbr title="required">*</abbr> Your Display name</label><input class="string required" id="user_name" maxlength="255" name="user[name]" size="50" type="text"></div>
<div class="input email required user_email"><label class="email required"
for="user_email"><abbr title="required">*</abbr> Your Email</label><input class="string email required" id="user_email" maxlength="255" name="user[email]" size="50" type="email"></div>
<div class="input tel required user_phone"><label class="tel required" for="user_phone"><abbr title="required">*</abbr> Phone Number</label><input class="string phone required" id="user_phone" maxlength="255" name="user[phone]" size="50" type="tel"></div>
<div class="input integer required user_age"><label class="integer required"
for="user_age"><abbr title="required">*</abbr> Your Age</label><input class="numeric integer age required" id="user_age" maxlength="255" name="user[age]" size="50" type="number"></div>
<div class="input url required user_url"><label class="tel required" for="user_url"><abbr title="required">*</abbr> Website</label><input class="string url required" id="user_url" maxlength="255" name="user[url]" size="50" type="url"></div>
<div class="input file optional user_avatar"><label class="file optional"
for="user_avatar">Your Avatar</label><input class="file optional" id="user_avatar" name="user[avatar]" type="file" /></div>
<div class="input password optional user_password"><label class="password
optional" for="user_password">Your Password</label><input class="password optional" id="user_password" name="user[password]" size="50" type="password"></div>
<div class="input select required user_awesome">
<label class="select required" for="user_awesome"><abbr title="required">*</abbr> Are you awesome?</label>
<select class="select required" id="user_awesome" name="user[awesome]">
<option value=""></option>
<option value="true">Yes</option>
<option value="false">No</option>
</select>
</div>
<div class="input select user_likes">
<label class="select" for="user_likes">Your Likes</label>
<select class="select" id="user_likes" name="user[likes][]" multiple>
<option value=""></option>
<option value="ruby">Ruby</option>
<option value="rails">Rails</option>
<option value="git">Git</option>
</select>
</div>
<div class="input check_boxes optional user_dislikes">
<label class="check_boxes optional">Your Dislikes</label>
<span class="checkbox">
<input class="check_boxes optional" id="user_dislikes_1" name="user[dislikes][]" type="checkbox" value="java">
<label class="collection_check_boxes" for="user_dislikes_1">Java</label>
</span>
<span class="checkbox">
<label class="collection_check_boxes" for="user_dislikes_2">
PHP
<input class="check_boxes optional" id="user_dislikes_2" name="user[dislikes][]" type="checkbox" value="php">
</label>
</span>
<input name="user[dislikes][]" type="hidden" value="">
</div>
<div class="input text required user_bio"><label class="text required"
for="user_bio"><abbr title="required">*</abbr> Your Biography</label><textarea class="text required" cols="40" id="user_bio" name="user[bio]" rows="20" style="overflow: hidden; word-wrap: break-word; resize: horizontal; height: 464px;"></textarea></div>
<div class="input date required user_date_of_birth">
<label class="date required" for="user_date_of_birth_1i"><abbr
title="required">*</abbr> Your Date of birth</label>
<select class="date required" id="user_date_of_birth_1i" name="user[date_of_birth(1i)]">
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>
<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>
<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>
<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
<option value="1912">1912</option>
<option value="1911">1911</option>
<option value="1910">1910</option>
<option value="1909">1909</option>
<option value="1908">1908</option>
<option value="1907">1907</option>
<option value="1906">1906</option>
<option value="1905">1905</option>
<option value="1904">1904</option>
<option value="1903">1903</option>
<option value="1902">1902</option>
<option value="1901">1901</option>
<option value="1900">1900</option>
</select>
<select class="date required" id="user_date_of_birth_2i" name="user[date_of_birth(2i)]">
<option value="1">Enero</option>
<option value="2">February</option>
<option value="3">Marzo</option>
<option value="4">Abril</option>
<option value="5">Mayo</option>
<option selected="selected" value="6">Junio</option>
<option value="7">Julio</option>
<option value="8">Agosto</option>
<option value="9">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12">Diciembre</option>
</select>
<select class="date required" id="user_date_of_birth_3i" name="user[date_of_birth(3i)]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option selected="selected" value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
</div>
<div class="input boolean required user_terms_of_service"><input name="user[terms_of_service]" type="hidden" value="0"><input class="boolean required" id="user_terms_of_service" name="user[terms_of_service]" type="checkbox" value="1"><label class="boolean required" for="user_terms_of_service"><abbr title="required">*</abbr> I agree to the Terms of Service</label></div>
<input name="commit" type="submit" value="Register">
</form>
17 changes: 17 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ def load_translations
terms_of_service: I agree to the Terms of Service
url: Website
TRANSLATIONS
I18n.backend.store_translations(:es, YAML.load(<<-TRANSLATIONS))
date:
month_names:
-
- Enero
- Febrero
- Marzo
- Abril
- Mayo
- Junio
- Julio
- Agosto
- Septiembre
- Octubre
- Noviembre
- Diciembre
TRANSLATIONS
end
end

Expand Down

0 comments on commit e4eb895

Please sign in to comment.