-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
order_spec.rb
83 lines (60 loc) · 2.69 KB
/
order_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# frozen_string_literal: true
require 'spec_helper'
describe "Order", :js, type: :feature do
before { sign_in create(:admin_user, email: '[email protected]') }
it "allows detaching a customer from an order" do
order = create(:order, number: "R123456789", user: create(:user))
visit "/admin/orders/R123456789"
open_customer_menu
click_on "Remove customer"
expect(page).to have_content("Customer was removed successfully")
open_customer_menu
expect(page).not_to have_content("Remove customer")
expect(order.reload.user).to be_nil
expect(page).to be_axe_clean
end
it "allows changing the order email" do
create(:order, number: "R123456789", total: 19.99)
visit "/admin/orders/R123456789/edit"
expect(page).to have_content("Order R123456789")
open_customer_menu
click_on "Edit order email"
within("dialog") do
fill_in "Customer Email", with: "[email protected]"
click_on "Save"
end
expect(page).to have_content("Order was updated successfully")
expect(page).to have_content("Order contact email [email protected]", normalize_ws: true)
expect(page).to be_axe_clean
end
context "in cart state" do
it "allows managing the cart" do
create(:product, name: "Just a product", slug: 'just-a-prod', price: 19.99)
create(:product, name: "Just another product", slug: 'just-another-prod', price: 29.99)
create(:order, number: "R123456789", total: 19.99, state: "cart")
visit "/admin/orders/R123456789/edit"
expect(page).to have_current_path("/admin/orders/R123456789")
expect(page).to have_content("Order R123456789")
search_field = find("[data-#{SolidusAdmin::UI::Forms::Search::Component.stimulus_id}-target='searchField']")
search_field.set "another"
expect(page).not_to have_content("Just a product")
expect(page).to have_content("Just another product")
expect(Spree::Order.last.line_items.count).to eq(0)
find("[aria-selected]", text: "Just another product").click
expect(page).to have_content("Variant added to cart successfully", wait: 30)
expect(Spree::Order.last.line_items.count).to eq(1)
expect(Spree::Order.last.line_items.last.quantity).to eq(1)
fill_in "line_item[quantity]", with: 4
expect(page).to have_content("Quantity updated successfully", wait: 30)
expect(Spree::Order.last.line_items.last.quantity).to eq(4)
accept_confirm("Are you sure?") { click_on "Delete" }
expect(page).to have_content("Line item removed successfully", wait: 30)
expect(Spree::Order.last.line_items.count).to eq(0)
expect(page).to be_axe_clean
end
end
private
def open_customer_menu
find("summary[title='More']").click
end
end