From f4a9de2201b22000de37bbec868da5a54ccf5edc Mon Sep 17 00:00:00 2001 From: Zee Spencer <50284+zspencer@users.noreply.github.com> Date: Wed, 26 Jul 2023 19:08:26 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=E2=9C=A8=20`Marketplace`:=20`Order?= =?UTF-8?q?s`=20expose=20their=20`Events`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - https://github.com/zinc-collective/convene/pull/1710 Next steps: - Tidy the UI! It gross - Add Specs! It needs them! - ??? --- app/furniture/marketplace/event_policy.rb | 7 +++++++ .../marketplace/order/events/index.html.erb | 3 +++ .../marketplace/order/events_controller.rb | 13 +++++++++++++ app/furniture/marketplace/orders/_order.html.erb | 4 ++++ app/furniture/marketplace/routes.rb | 4 +++- .../stripe_events_controller_request_spec.rb | 2 +- 6 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 app/furniture/marketplace/event_policy.rb create mode 100644 app/furniture/marketplace/order/events/index.html.erb create mode 100644 app/furniture/marketplace/order/events_controller.rb diff --git a/app/furniture/marketplace/event_policy.rb b/app/furniture/marketplace/event_policy.rb new file mode 100644 index 000000000..8fe176077 --- /dev/null +++ b/app/furniture/marketplace/event_policy.rb @@ -0,0 +1,7 @@ +class Marketplace + class EventPolicy < Policy + + class Scope < ApplicationScope + end + end +end diff --git a/app/furniture/marketplace/order/events/index.html.erb b/app/furniture/marketplace/order/events/index.html.erb new file mode 100644 index 000000000..cda7fd147 --- /dev/null +++ b/app/furniture/marketplace/order/events/index.html.erb @@ -0,0 +1,3 @@ +<%- events.each do |event| %> +<%= event.description%> - <% l(event.created_at, format: :long_ordinal) %> +<%- end %> diff --git a/app/furniture/marketplace/order/events_controller.rb b/app/furniture/marketplace/order/events_controller.rb new file mode 100644 index 000000000..d77437c6e --- /dev/null +++ b/app/furniture/marketplace/order/events_controller.rb @@ -0,0 +1,13 @@ +class Marketplace + class Order::EventsController < Controller + expose :order, scope: -> { OrderPolicy::Scope.new(shopper, marketplace.orders).resolve }, model: Order + helper_method def events + policy_scope(order.events) + end + + def index + skip_authorization + + end + end +end diff --git a/app/furniture/marketplace/orders/_order.html.erb b/app/furniture/marketplace/orders/_order.html.erb index 3706546f2..aca8f25d4 100644 --- a/app/furniture/marketplace/orders/_order.html.erb +++ b/app/furniture/marketplace/orders/_order.html.erb @@ -26,4 +26,8 @@
Total
<%= humanized_money_with_symbol(order.price_total) %>
+ + <%- if policy(order.events).index? %> + <%= link_to(t('marketplace.order.events.index.link_to'), order.location(child: :events)) %> + <%- end %> <%- end %> diff --git a/app/furniture/marketplace/routes.rb b/app/furniture/marketplace/routes.rb index 52dbb99be..00352bcbb 100644 --- a/app/furniture/marketplace/routes.rb +++ b/app/furniture/marketplace/routes.rb @@ -10,7 +10,9 @@ def self.append_routes(router) router.resources :delivery_areas router.resources :notification_methods - router.resources :orders, only: [:show, :index] + router.resources :orders, only: [:show, :index] do + router.resources :events, only: [:index], controller: "order/events" + end router.resources :products router.resource :stripe_account, only: [:show, :new, :create] router.resources :stripe_events diff --git a/spec/furniture/marketplace/stripe_events_controller_request_spec.rb b/spec/furniture/marketplace/stripe_events_controller_request_spec.rb index 6cfe15271..2fc6fb82f 100644 --- a/spec/furniture/marketplace/stripe_events_controller_request_spec.rb +++ b/spec/furniture/marketplace/stripe_events_controller_request_spec.rb @@ -45,7 +45,7 @@ expect(order.events).to exist(description: "Payment Received") expect(order.events).to exist(description: "Notifications to Vendor and Distributor Sent") - expect(order.events).to exist(description: "Notification to Buyer Sent") + expect(order.events).to exist(description: "Notification to Buyer Sent") expect(Stripe::Transfer).to(have_received(:create).with({amount: order.price_total.cents - balance_transaction.fee, currency: "usd", destination: marketplace.stripe_account, transfer_group: order.id}, {api_key: marketplace.stripe_api_key})) expect(order.events).to exist(description: "Payment Split")