diff --git a/app/furniture/marketplace/delivery_area.rb b/app/furniture/marketplace/delivery_area.rb
index 9fd6be8d6..3a4ae0003 100644
--- a/app/furniture/marketplace/delivery_area.rb
+++ b/app/furniture/marketplace/delivery_area.rb
@@ -4,6 +4,8 @@ class DeliveryArea < Record
location(parent: :marketplace)
belongs_to :marketplace, inverse_of: :delivery_areas
+ has_many :orders, inverse_of: :delivery_area
+ has_many :deliveries, inverse_of: :delivery_area
monetize :price_cents
end
diff --git a/app/furniture/marketplace/order.rb b/app/furniture/marketplace/order.rb
index f3467545b..f3eea024e 100644
--- a/app/furniture/marketplace/order.rb
+++ b/app/furniture/marketplace/order.rb
@@ -6,6 +6,8 @@ class Order < Record
belongs_to :marketplace, inverse_of: :orders
delegate :space, :room, to: :marketplace
+ belongs_to :delivery_area, inverse_of: :orders, optional: true
+
belongs_to :shopper, inverse_of: :orders
has_many :ordered_products, inverse_of: :order, foreign_key: :cart_id, dependent: :destroy
diff --git a/app/furniture/marketplace/order/email_receipt_component.html.erb b/app/furniture/marketplace/order/email_receipt_component.html.erb
index 67eecf3f7..54e4aeab2 100644
--- a/app/furniture/marketplace/order/email_receipt_component.html.erb
+++ b/app/furniture/marketplace/order/email_receipt_component.html.erb
@@ -51,6 +51,12 @@
Delivery Schedule: |
<%= render(order.delivery_window) %> |
+<%- if order.delivery_area.present? %>
+
+ Delivering In: |
+ <%= order.delivery_area.label %> |
+
+<%- end %>
Buyer Email: |
<%= order.contact_email %> |
diff --git a/spec/factories/furniture/marketplace.rb b/spec/factories/furniture/marketplace.rb
index d65df630a..b13b69acd 100644
--- a/spec/factories/furniture/marketplace.rb
+++ b/spec/factories/furniture/marketplace.rb
@@ -100,15 +100,15 @@
trait :full do
with_taxed_products
- with_delivery_areas
transient do
product_count { (1..5).to_a.sample }
end
- marketplace { association(:marketplace, :with_tax_rates, :with_delivery_fees, :with_notify_emails) }
+ marketplace { association(:marketplace, :with_tax_rates, :with_delivery_areas, :with_delivery_fees, :with_notify_emails) }
- delivery_window { Marketplace::Delivery::Window.new(1.hour.from_now) }
+ delivery_window { 1.hour.from_now }
+ delivery_area { marketplace.delivery_areas.sample }
placed_at { 5.minutes.ago }
delivery_address { Faker::Address.full_address }
contact_email { Faker::Internet.safe_email }
diff --git a/spec/furniture/marketplace/delivery_area_spec.rb b/spec/furniture/marketplace/delivery_area_spec.rb
new file mode 100644
index 000000000..f3c321af6
--- /dev/null
+++ b/spec/furniture/marketplace/delivery_area_spec.rb
@@ -0,0 +1,7 @@
+require "rails_helper"
+
+RSpec.describe Marketplace::DeliveryArea, type: :model do
+ it { is_expected.to belong_to(:marketplace).inverse_of(:delivery_areas) }
+ it { is_expected.to have_many(:orders).inverse_of(:delivery_area) }
+ it { is_expected.to have_many(:deliveries).inverse_of(:delivery_area) }
+end
diff --git a/spec/furniture/marketplace/delivery_spec.rb b/spec/furniture/marketplace/delivery_spec.rb
index 799ebb18a..6738c9098 100644
--- a/spec/furniture/marketplace/delivery_spec.rb
+++ b/spec/furniture/marketplace/delivery_spec.rb
@@ -8,6 +8,7 @@
it { is_expected.to belong_to(:marketplace) }
it { is_expected.to belong_to(:shopper) }
+ it { is_expected.to belong_to(:delivery_area) }
describe "#delivery_window" do
subject(:delivery_window) { delivery.delivery_window }
diff --git a/spec/furniture/marketplace/order/email_receipt_component_spec.rb b/spec/furniture/marketplace/order/email_receipt_component_spec.rb
index 8e1c90b2e..d6fc615ad 100644
--- a/spec/furniture/marketplace/order/email_receipt_component_spec.rb
+++ b/spec/furniture/marketplace/order/email_receipt_component_spec.rb
@@ -4,6 +4,7 @@
subject(:content) { render_inline(component) }
let(:component) { described_class.new(order) }
+ let(:order) { build(:marketplace_order, :full) }
context "when the order has a particular time to be delivered" do
let(:order) { build(:marketplace_order, delivery_window: 3.hours.from_now) }
@@ -16,4 +17,6 @@
it { is_expected.to have_content("3pm on Sunday") }
end
+
+ it { is_expected.to have_content(/Delivering In:\s+ #{order.delivery_area.label}/) }
end
diff --git a/spec/furniture/marketplace/order_spec.rb b/spec/furniture/marketplace/order_spec.rb
index fd831b377..804143ed5 100644
--- a/spec/furniture/marketplace/order_spec.rb
+++ b/spec/furniture/marketplace/order_spec.rb
@@ -8,6 +8,7 @@
it { is_expected.to belong_to(:marketplace).class_name("Marketplace::Marketplace").inverse_of(:orders) }
it { is_expected.to belong_to(:shopper).inverse_of(:orders) }
+ it { is_expected.to belong_to(:delivery_area).inverse_of(:orders).optional }
describe "#price_total" do
subject(:price_total) { order.price_total }