Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tatsuosakurai/455be42a32acd2bce30dbc82604ffbfd to your computer and use it in GitHub Desktop.
Save tatsuosakurai/455be42a32acd2bce30dbc82604ffbfd to your computer and use it in GitHub Desktop.
ruby( ActiveSupportあり )で、誕生日の前後一週間かどうかを判定するメソッドを実装してください〜
# 準備
# `gem i activesupport`
# `gem i rspec`
# 実行
# `rspec birthday_around_a_week_challenge.rb`
# 実装
require 'active_support'
require 'active_support/core_ext'
# require 'byebug'
class BirthDay
def self.around_a_week?(birthday)
# TODO: 実装!
end
end
# spec_helper
require 'rspec'
require 'active_support/testing/time_helpers'
RSpec.configure do |config|
config.include ActiveSupport::Testing::TimeHelpers
end
# spec
RSpec.describe BirthDay do
describe 'around_a_week?' do
subject(:around_a_week?) { travel_to(today.to_time) { BirthDay.around_a_week?(birthday) } }
context '年をまたがない場合' do
let!(:birthday){ '1985-05-26 0:00'.to_time }
context '7日前' do
let!(:today) { '2019-5-19 00:00' }
it { expect(around_a_week?).to eq true }
end
context '8日前' do
let!(:today) { '2019-5-18 23:59' }
it { expect(around_a_week?).to eq false }
end
context '7日後' do
let!(:today) { '2019-6-2 23:59' }
it { expect(around_a_week?).to eq true }
end
context '8日後' do
let!(:today) { '2019-6-3 00:00' }
it { expect(around_a_week?).to eq false }
end
end
context '年をまたぐ場合' do
context '年末の場合' do
let(:birthday){ '1985-12-27 0:00'.to_time }
context '7日前' do
let!(:today) { '2019-12-20 00:00' }
it { expect(around_a_week?).to eq true }
end
context '8日前' do
let!(:today) { '2019-12-19 23:59' }
it { expect(around_a_week?).to eq false }
end
context '7日後' do
let!(:today) { '2020-1-3 23:59' }
it { expect(around_a_week?).to eq true }
end
context '8日後' do
let!(:today) { '2020-1-4 00:00' }
it { expect(around_a_week?).to eq false }
end
end
context '年始の場合' do
let(:birthday){ '1985-01-03 0:00'.to_time }
context '7日前' do
let!(:today) { '2019-12-27 00:00' }
it { expect(around_a_week?).to eq true }
end
context '8日前' do
let!(:today) { '2019-12-26 23:59' }
it { expect(around_a_week?).to eq false }
end
context '7日後' do
let!(:today) { '2020-1-10 23:59' }
it { expect(around_a_week?).to eq true }
end
context '8日後' do
let!(:today) { '2020-1-11 00:00' }
it { expect(around_a_week?).to eq false }
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment