spec/lib/dotiw_spec.rb in dotiw-5.3.1 vs spec/lib/dotiw_spec.rb in dotiw-5.3.2

- old
+ new

@@ -318,13 +318,40 @@ expect(distance_of_time_in_words(start, finish, true, options)).to eq(output) end end if defined?(ActionView) - describe 'ActionView' do + describe 'ActionView without include seconds argument' do [ [START_TIME, + START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, + { vague: true }, + 'about 1 year'], + [START_TIME, + START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, + { vague: 'Yes please' }, + 'about 1 year'], + [START_TIME, + START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, + { vague: false }, + '1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes'], + [START_TIME, + START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, + { vague: nil }, + '1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes'] + ].each do |start, finish, options, output| + it "should be #{output}" do + expect(distance_of_time_in_words(start, finish, options)).to eq(output) + end + end + end + end + + if defined?(ActionView) + describe 'ActionView with include seconds argument' do + [ + [START_TIME, START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, { vague: true }, 'about 1 year'], [START_TIME, START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, @@ -341,11 +368,11 @@ ].each do |start, finish, options, output| it "should be #{output}" do expect(distance_of_time_in_words(start, finish, true, options)).to eq(output) end end - + context 'via ActionController::Base.helpers' do it '#distance_of_time_in_words' do end_time = START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds expected = '1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds' actual = ActionController::Base.helpers.distance_of_time_in_words(START_TIME, end_time, true, @@ -367,35 +394,96 @@ end.to raise_error(ArgumentError) end end context 'without options' do - it 'shows detailed duration' do + it 'shows detailed duration without seconds' do expected = '3 days and 14 minutes' actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(Time.now - 3.days - 14.minutes) expect(actual).to eq(expected) end end - context 'with vague option true' do + context 'with seconds false and vague option true' do it 'shows vague duration' do expected = '3 days' actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( - Time.now - 3.days - 14.minutes, false, vague: true + Time.now - 3.days - 14.minutes - 20.seconds, false, vague: true ) expect(actual).to eq(expected) end end - context 'with vague option false' do - it 'shows detailed duration' do + context 'with seconds true and vague option true' do + it 'shows vague duration' do + expected = '3 days' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, true, vague: true + ) + expect(actual).to eq(expected) + end + end + + context 'with seconds false and vague option false' do + it 'shows detailed duration without seconds' do expected = '3 days and 14 minutes' actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( - Time.now - 3.days - 14.minutes, false, vague: false + Time.now - 3.days - 14.minutes - 20.seconds, false, vague: false ) expect(actual).to eq(expected) end end + + context 'with seconds true and vague option false' do + it 'shows detailed duration with seconds' do + expected = '3 days, 14 minutes, and 20 seconds' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, true, vague: false + ) + expect(actual).to eq(expected) + end + end + + context 'without seconds and vague option false' do + it 'shows detailed duration without seconds' do + expected = '3 days and 14 minutes' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, vague: false + ) + expect(actual).to eq(expected) + end + end + + context 'without seconds and vague option true' do + it 'shows vague duration' do + expected = '3 days' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, vague: true + ) + expect(actual).to eq(expected) + end + end + + context 'with options include_seconds true and vague option false' do + it 'shows detailed duration with seconds' do + expected = '3 days, 14 minutes, and 20 seconds' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: true, vague: false} + ) + expect(actual).to eq(expected) + end + end + + context 'with options include_seconds false and vague option true' do + it 'shows vague duration' do + expected = '3 days' + actual = ActionController::Base.helpers.distance_of_time_in_words_to_now( + Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: false, vague: true} + ) + expect(actual).to eq(expected) + end + end + end end end end