Skip to content

Commit 577c109

Browse files
committed
don't allow transfers of 0 hours and 0 minutes
1 parent f7e4537 commit 577c109

File tree

5 files changed

+27
-12
lines changed

5 files changed

+27
-12
lines changed

app/assets/javascripts/give_time.js.coffee

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ jQuery.validator.addMethod "either-hours-minutes-informed", ((value, element) ->
55
giveTimeReadyFn = () ->
66
config =
77
submitHandler: (form) ->
8-
$(" #transfer_amount ").val($(" #transfer_hours ").val() * 3600 + $(" #transfer_minutes ").val() * 60)
9-
form.submit()
8+
amount = $("#transfer_hours").val() * 3600 + $("#transfer_minutes").val() * 60
9+
$("#transfer_amount").val(amount)
10+
11+
if amount > 0
12+
form.submit()
13+
else
14+
$(form).find('input:submit').after(' <label class="error">Time must be greater than 0</label>')
1015

1116
$( "#new_transfer" ).validate(config)
1217

app/controllers/transfers_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def create
1212
if persister.save
1313
redirect_to redirect_target
1414
else
15-
flash[:error] = transfer.errors.full_messages.to_sentence
15+
redirect_to :back, alert: transfer.errors.full_messages.to_sentence
1616
end
1717
end
1818

app/models/transfer.rb

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Transfer < ActiveRecord::Base
1717
belongs_to :operator, class_name: "User"
1818
has_many :movements
1919

20+
validates :amount, numericality: { greater_than: 0 }
2021
validate :different_source_and_destination
2122

2223
after_create :make_movements
@@ -26,14 +27,6 @@ def make_movements
2627
movements.create(account: Account.find(destination_id), amount: amount.to_i)
2728
end
2829

29-
def movement_from
30-
movements.detect {|m| m.amount < 0 }
31-
end
32-
33-
def movement_to
34-
movements.detect {|m| m.amount > 0 }
35-
end
36-
3730
def source_id
3831
source.respond_to?(:id) ? source.id : source
3932
end

app/views/transfers/new.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</div>
3737

3838
<div class="form-actions">
39-
<%= f.button :submit, class: "btn btn-default", style: "margin-bottom: 20px;" %>
39+
<%= f.button :submit, class: "btn btn-default" %>
4040
</div>
4141
<% end %>
4242

spec/controllers/transfers_controller_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,5 +207,22 @@
207207
end
208208
end
209209
end
210+
211+
context 'with invalid params' do
212+
let(:user) { member_giver.user }
213+
let(:referer) { "/transfers/new?destination_account_id=#{member_taker.account.id}" }
214+
215+
before do
216+
request.env["HTTP_REFERER"] = referer
217+
end
218+
219+
it 'does not create any Transfer and redirects to :back if the amount is 0' do
220+
expect {
221+
post(:create, transfer: { amount: 0, destination: member_taker.account.id })
222+
}.not_to change(Transfer, :count)
223+
224+
expect(response).to redirect_to(referer)
225+
end
226+
end
210227
end
211228
end

0 commit comments

Comments
 (0)