Skip to content

Commit

Permalink
Set defaults for ranges within fiscal, calendar and paydate years
Browse files Browse the repository at this point in the history
  • Loading branch information
tallenaz committed Sep 24, 2016
1 parent 86b6460 commit dcdbbd0
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 23 deletions.
36 changes: 27 additions & 9 deletions app/models/expenditure_report.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,39 @@ def set_fund
end

def check_fy
return unless fy_start.present? && fy_end.present?
write_fy_start(fy_start.sub('FY', ''))
write_fy_end(fy_end.sub('FY', ''))
if date_type == 'fiscal'
if fy_start.present? && fy_end.present?
write_fy_start(fy_start.sub('FY', ''))
write_fy_end(fy_end.sub('FY', ''))
else # fy_end is the same as fy_start
write_fy_start(fy_start.sub('FY', ''))
write_fy_end(fy_start.sub('FY', ''))
end
end
end

def check_cal
return unless cal_start.present? && cal_end.present?
write_cal_start(cal_start)
write_cal_end(cal_end)
if date_type == 'calendar'
if cal_start.present? && cal_end.present?
write_cal_start(cal_start)
write_cal_end(cal_end)
else # cal_end is the same as cal_start
write_cal_start(cal_start)
write_cal_end(cal_start)
end
end
end

def check_pd
return unless pd_start.present? && pd_end.present?
write_pd_start(pd_start)
write_pd_end(pd_end)
if date_type == 'paydate'
if pd_start.present? && pd_end.present?
write_pd_start(pd_start)
write_pd_end(pd_end)
else # pd_end is the same as pd_start
write_pd_start(pd_start)
write_pd_end(pd_start)
end
end
end

def write_fy_start(year)
Expand Down
24 changes: 12 additions & 12 deletions app/views/shared/_date_range_selection.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,31 @@
<div class='form-group row'>
<div class='panel-body fiscal collapse'>
<div class='form-group'>
<div class='col-sm-3'>
<%= f.select :fy_start, options_for_select(ExpendituresPaydates.fiscal_years.map{ |d| [ "FY #{d}" ] }), {prompt: 'FY Start'}, {class: 'form-control'} %>
<div class='col-sm-3'>Start date:
<%= f.select :fy_start, options_for_select(ExpendituresPaydates.fiscal_years.map{ |d| [ "FY #{d}" ] }), {}, {class: 'form-control'} %>
</div>
<div class='col-sm-3'>
<%= f.select :fy_end, options_for_select(ExpendituresPaydates.fiscal_years.map{ |d| [ "FY #{d}" ] }), {prompt: 'FY End'}, {class: 'form-control'} %>
<div class='col-sm-3'>End date:
<%= f.select :fy_end, options_for_select(ExpendituresPaydates.fiscal_years.map{ |d| [ "FY #{d}" ] }), {prompt: 'Same FY as Start'}, {class: 'form-control'} %>
</div>
</div>
</div>
<div class='panel-body calendar collapse'>
<div class='form-group'>
<div class='col-sm-3'>
<%= f.select :cal_start, options_for_select(ExpendituresPaydates.calendar_years.map{ |d| [ d ] }), {prompt: 'Start Year'}, {class: 'form-control'} %>
<div class='col-sm-3'>Start date:
<%= f.select :cal_start, options_for_select(ExpendituresPaydates.calendar_years.map{ |d| [ d ] }), {}, {class: 'form-control'} %>
</div>
<div class='col-sm-3'>
<%= f.select :cal_end, options_for_select(ExpendituresPaydates.calendar_years.map{ |d| [ d ] }), {prompt: 'End Year'}, {class: 'form-control'} %>
<div class='col-sm-3'>End date:
<%= f.select :cal_end, options_for_select(ExpendituresPaydates.calendar_years.map{ |d| [ d ] }), {prompt: 'Same Year as Start'}, {class: 'form-control'} %>
</div>
</div>
</div>
<div class='panel-body paydate collapse'>
<div class='form-group'>
<div class='col-sm-3'>
<%= f.select :pd_start, options_for_select(ExpendituresPaydates.pay_dates.map{ |d| [ d.pay_date.try(:strftime, '%d-%^b-%y') ] }), {prompt: 'Date Paid Start'}, {class: 'form-control'} %>
<div class='col-sm-3'>Start date:
<%= f.select :pd_start, options_for_select(ExpendituresPaydates.pay_dates.map{ |d| [ d.pay_date.try(:strftime, '%d-%^b-%y') ] }), {}, {class: 'form-control'} %>
</div>
<div class='col-sm-3'>
<%= f.select :pd_end, options_for_select(ExpendituresPaydates.pay_dates.map{ |d| [ d.pay_date.try(:strftime, '%d-%^b-%y') ] }), {prompt: 'Date Paid End'}, {class: 'form-control'} %>
<div class='col-sm-3'>End date:
<%= f.select :pd_end, options_for_select(ExpendituresPaydates.pay_dates.map{ |d| [ d.pay_date.try(:strftime, '%d-%^b-%y') ] }), {prompt: 'Same Date Paid as Start'}, {class: 'form-control'} %>
</div>
</div>
</div>
Expand Down
39 changes: 37 additions & 2 deletions spec/controllers/expenditure_reports_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,46 @@
expect(response).to render_template('new')
end
describe 'post#create' do
it 'returns 302 when saving expenditure_report' do
it 'returns 302 when saving expenditure_report for fiscal years' do
stub_current_user(FactoryGirl.create(:authorized_user))
post :create, expenditure_report: { email: 'someone@some.one',
fund: ['1008930-1-HAGOY'],
date_type: 'fiscal' }
date_type: 'fiscal',
fy_start: 'FY 2009' }
expect(response).to have_http_status(302)
end
it 'returns 302 when saving expenditure_report for calendar years with only cal_start' do
stub_current_user(FactoryGirl.create(:authorized_user))
post :create, expenditure_report: { email: 'someone@some.one',
fund: ['1008930-1-HAGOY'],
date_type: 'calendar',
cal_start: '1996' }
expect(response).to have_http_status(302)
end
it 'returns 302 when saving expenditure_report for calendar years with cal_start and end' do
stub_current_user(FactoryGirl.create(:authorized_user))
post :create, expenditure_report: { email: 'someone@some.one',
fund: ['1008930-1-HAGOY'],
date_type: 'calendar',
cal_start: '1996',
cal_end: '1997' }
expect(response).to have_http_status(302)
end
it 'returns 302 when saving expenditure_report for pay date years with only pd_start' do
stub_current_user(FactoryGirl.create(:authorized_user))
post :create, expenditure_report: { email: 'someone@some.one',
fund: ['1008930-1-HAGOY'],
date_type: 'paydate',
pd_start: '22-DEC-99' }
expect(response).to have_http_status(302)
end
it 'returns 302 when saving expenditure_report for pay date years with pd_start and pd_end' do
stub_current_user(FactoryGirl.create(:authorized_user))
post :create, expenditure_report: { email: 'someone@some.one',
fund: ['1008930-1-HAGOY'],
date_type: 'paydate',
pd_start: '22-DEC-99',
pd_end: '10-DEC-99' }
expect(response).to have_http_status(302)
end
it 'renders new template with an invalid object' do
Expand Down

0 comments on commit dcdbbd0

Please sign in to comment.