Skip to content

Commit 9dc3f42

Browse files
committed
Follow rename from refund to return in rails app.
1 parent 8ba0855 commit 9dc3f42

File tree

14 files changed

+193
-274
lines changed

14 files changed

+193
-274
lines changed

rails_application/app/controllers/refunds_controller.rb

Lines changed: 0 additions & 71 deletions
This file was deleted.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
class ReturnsController < ApplicationController
2+
def edit
3+
@return = Returns::Return.find_by_uid!(params[:id])
4+
@order = Orders::Order.find_by_uid!(@return.order_uid)
5+
@return_items = build_return_items_list(@order.order_lines, @return.return_items)
6+
end
7+
8+
def create
9+
return_id = SecureRandom.uuid
10+
create_draft_return(return_id)
11+
12+
redirect_to edit_order_return_path(return_id, order_id: params[:order_id])
13+
end
14+
15+
def add_item
16+
add_item_to_return
17+
redirect_to edit_order_return_path(params[:id], order_id: params[:order_id])
18+
rescue Ordering::Return::ExceedsOrderQuantityError
19+
flash[:alert] = "You cannot add more of this product to the return than is in the original order."
20+
redirect_to edit_order_return_path(params[:id], order_id: params[:order_id])
21+
end
22+
23+
def remove_item
24+
remove_item_from_return
25+
redirect_to edit_order_return_path(params[:id], order_id: params[:order_id])
26+
rescue Ordering::Return::ReturnHaveNotBeenRequestedForThisProductError
27+
flash[:alert] = "This product is not added to the return."
28+
redirect_to edit_order_return_path(params[:id], order_id: params[:order_id])
29+
end
30+
31+
private
32+
33+
def create_draft_return_cmd(return_id)
34+
Ordering::CreateDraftReturn.new(return_id: return_id, order_id: params[:order_id])
35+
end
36+
37+
def create_draft_return(return_id)
38+
command_bus.(create_draft_return_cmd(return_id))
39+
end
40+
41+
def add_item_to_return_cmd
42+
Ordering::AddItemToReturn.new(return_id: params[:id], order_id: params[:order_id], product_id: params[:product_id])
43+
end
44+
45+
def add_item_to_return
46+
command_bus.(add_item_to_return_cmd)
47+
end
48+
49+
def remove_item_from_return_cmd
50+
Ordering::RemoveItemFromReturn.new(return_id: params[:id], order_id: params[:order_id], product_id: params[:product_id])
51+
end
52+
53+
def remove_item_from_return
54+
command_bus.(remove_item_from_return_cmd)
55+
end
56+
57+
def build_return_items_list(order_lines, return_items)
58+
order_lines.map { |order_line| build_return_item(order_line, return_items) }
59+
end
60+
61+
def build_return_item(order_line, return_items)
62+
return_item = return_items.find { |item| item.product_uid == order_line.product_id } || initialize_return_item(order_line)
63+
64+
return_item.order_line = order_line
65+
return_item
66+
end
67+
68+
def initialize_return_item(order_line)
69+
Returns::ReturnItem.new(product_uid: order_line.product_id, quantity: 0, price: order_line.price)
70+
end
71+
end

rails_application/app/read_models/refunds/add_item_to_refund.rb

Lines changed: 0 additions & 21 deletions
This file was deleted.

rails_application/app/read_models/refunds/configuration.rb

Lines changed: 0 additions & 37 deletions
This file was deleted.

rails_application/app/read_models/refunds/create_draft_refund.rb

Lines changed: 0 additions & 7 deletions
This file was deleted.

rails_application/app/read_models/refunds/remove_item_from_refund.rb

Lines changed: 0 additions & 16 deletions
This file was deleted.

rails_application/app/views/orders/show.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<% end %>
2525

2626
<% if @order.state == "Paid" %>
27-
<%= button_to("Refund", order_refunds_path(order_id: @order.uid), class: "ml-3 inline-flex items-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-50 border-gray-300 text-gray-700 bg-white hover:bg-gray-50") %>
27+
<%= button_to("Return", order_returns_path(order_id: @order.uid), class: "ml-3 inline-flex items-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-50 border-gray-300 text-gray-700 bg-white hover:bg-gray-50") %>
2828
<% end %>
2929

3030
<% if (@order.state == "Submitted") %>
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<% content_for(:header) do %>
2-
Refund for Order <%= @order.number %>
2+
Return for Order <%= @order.number %>
33
<% end %>
44

55
<% content_for(:actions) do %>
@@ -8,7 +8,7 @@
88
<% end %>
99

1010
<%= primary_form_action_button do %>
11-
Submit Refund
11+
Submit Return
1212
<% end %>
1313
<% end %>
1414

@@ -25,20 +25,20 @@
2525
</thead>
2626

2727
<tbody>
28-
<% @refund_items.each do |refund_item| %>
29-
<tr class="border-b" id="order_line_product_<%= refund_item.product_uid %>">
30-
<td class="py-2"><%= refund_item.product_name %></td>
31-
<td class="py-2"><%= refund_item.quantity %> / <%= refund_item.order_quantity %></td>
32-
<td class="py-2"><%= number_to_currency(refund_item.price) %></td>
33-
<td class="py-2"><%= number_to_currency(refund_item.value) %></td>
28+
<% @return_items.each do |return_item| %>
29+
<tr class="border-b" id="order_line_product_<%= return_item.product_uid %>">
30+
<td class="py-2"><%= return_item.product_name %></td>
31+
<td class="py-2"><%= return_item.quantity %> / <%= return_item.order_quantity %></td>
32+
<td class="py-2"><%= number_to_currency(return_item.price) %></td>
33+
<td class="py-2"><%= number_to_currency(return_item.value) %></td>
3434
<td class="py-2">
35-
<% unless refund_item.max_quantity? %>
36-
<%= button_to "Add", add_item_order_refund_path(order_id: @order.uid, id: @refund.uid, product_id: refund_item.product_uid), class: "hover:underline text-blue-500" %>
35+
<% unless return_item.max_quantity? %>
36+
<%= button_to "Add", add_item_order_return_path(order_id: @order.uid, id: @return.uid, product_id: return_item.product_uid), class: "hover:underline text-blue-500" %>
3737
<% end %>
3838
</td>
3939
<td class="py-2 text-right">
40-
<% unless refund_item.quantity.zero? %>
41-
<%= button_to "Remove", remove_item_order_refund_path(order_id: @order.uid, id: @refund.uid, product_id: refund_item.product_uid), class: "hover:underline text-blue-500" %>
40+
<% unless return_item.quantity.zero? %>
41+
<%= button_to "Remove", remove_item_order_return_path(order_id: @order.uid, id: @return.uid, product_id: return_item.product_uid), class: "hover:underline text-blue-500" %>
4242
<% end %>
4343
</td>
4444
</tr>
@@ -47,7 +47,7 @@
4747
<tfoot class="border-t-4">
4848
<tr class="border-t">
4949
<td class="py-2" colspan="3">Total</td>
50-
<td class="py-2 font-bold"><%= number_to_currency(@refund.total_value) %></td>
50+
<td class="py-2 font-bold"><%= number_to_currency(@return.total_value) %></td>
5151
</tr>
5252
</tfoot>
5353
</table>

rails_application/config/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
resource :shipping_address, only: [:edit, :update]
1818
resource :billing_address, only: [:edit, :update]
1919
resource :invoice, only: [:create]
20-
resources :refunds, only: [:edit, :create] do
20+
resources :returns, only: [:edit, :create] do
2121
member do
2222
post :add_item
2323
post :remove_item

rails_application/test/integration/refunds_test.rb renamed to rails_application/test/integration/returns_test.rb

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "test_helper"
22

3-
class RefundsTest < InMemoryRESIntegrationTestCase
3+
class ReturnsTest < InMemoryRESIntegrationTestCase
44
def setup
55
super
66
add_available_vat_rate(10)
@@ -20,16 +20,16 @@ def test_happy_path
2020

2121
get "/orders/#{order_id}"
2222

23-
assert_select("button", "Refund")
23+
assert_select("button", "Return")
2424

25-
post "/orders/#{order_id}/refunds"
25+
post "/orders/#{order_id}/returns"
2626
follow_redirect!
2727

2828
assert_order_line_row(async_remote_id, "Async Remote", 1)
2929
assert_order_line_row(fearless_id, "Fearless Refactoring", 2)
3030
end
3131

32-
def test_renders_error_when_exceeds_available_quantity_to_refund
32+
def test_renders_error_when_exceeds_available_quantity_to_return
3333
shopify_id = register_customer("Shopify")
3434
order_id = SecureRandom.uuid
3535
async_remote_id = register_product("Async Remote", 39, 10)
@@ -38,16 +38,16 @@ def test_renders_error_when_exceeds_available_quantity_to_refund
3838
submit_order(shopify_id, order_id)
3939
pay_order(order_id)
4040

41-
post "/orders/#{order_id}/refunds"
41+
post "/orders/#{order_id}/returns"
4242
follow_redirect!
4343

44-
refund = Refunds::Refund.last
44+
return_record = Returns::Return.last
4545

46-
add_item_to_refund(order_id, refund.uid, async_remote_id)
47-
add_item_to_refund(order_id, refund.uid, async_remote_id)
46+
add_item_to_return(order_id, return_record.uid, async_remote_id)
47+
add_item_to_return(order_id, return_record.uid, async_remote_id)
4848
follow_redirect!
4949

50-
assert_select("#alert", "You cannot add more of this product to the refund than is in the original order.")
50+
assert_select("#alert", "You cannot add more of this product to the return than is in the original order.")
5151
end
5252

5353
def test_renders_error_when_trying_to_remove_not_added_product
@@ -59,15 +59,15 @@ def test_renders_error_when_trying_to_remove_not_added_product
5959
submit_order(shopify_id, order_id)
6060
pay_order(order_id)
6161

62-
post "/orders/#{order_id}/refunds"
62+
post "/orders/#{order_id}/returns"
6363
follow_redirect!
6464

65-
refund = Refunds::Refund.last
65+
return_record = Returns::Return.last
6666

67-
remove_item_from_refund(order_id, refund.uid, async_remote_id)
67+
remove_item_from_return(order_id, return_record.uid, async_remote_id)
6868
follow_redirect!
6969

70-
assert_select("#alert", "This product is not added to the refund.")
70+
assert_select("#alert", "This product is not added to the return.")
7171
end
7272

7373
private

0 commit comments

Comments
 (0)