-
Notifications
You must be signed in to change notification settings - Fork 290
Expand file tree
/
Copy pathstate_builder_spec.rb
More file actions
118 lines (94 loc) · 2.48 KB
/
state_builder_spec.rb
File metadata and controls
118 lines (94 loc) · 2.48 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
require 'rails_helper'
describe "State Builder", type: :feature do
context "changing state value" do
before do
register_index(Invoice) do
state_column :aasm_state
end
create_invoice
visit admin_invoices_path
end
it "shows set label" do
expect(page).to have_content('Pending')
end
it "shows valid css class" do
expect(page).to have_css('.pending')
end
end
context "passing a block" do
before do
register_show(Invoice) do
state_row(:aasm_state) do
invoice.state
end
end
visit admin_invoice_path(create_invoice)
end
it "localizes the value returned from the block" do
expect(page).to have_content('Pending')
end
it "shows valid css class" do
expect(page).to have_css('.pending')
end
end
context "using a label" do
before do
register_show(Invoice) do
state_row("custom state", :aasm_state)
end
visit admin_invoice_path(create_invoice)
end
it "shows custom label" do
expect(page).to have_content 'Custom State'
end
end
context "with a named states machine" do
before do
register_show(Invoice) do
state_row(:shipping_status, machine: :shipping)
end
visit admin_invoice_path(create_invoice)
end
it "shows set label" do
expect(page).to have_content('Stock')
end
it "shows valid css class" do
expect(page).to have_css('.stock')
end
end
context "passing title as string" do
before do
register_show(Invoice) do
state_row(:aasm_state, title: 'Enigmatic')
end
visit admin_invoice_path(create_invoice)
end
it "shows title" do
expect(page).to have_selector('span[title="Enigmatic"]')
end
end
context "passing title as string" do
before do
register_show(Invoice) do
state_row(:aasm_state, title: :shipping_status)
end
visit admin_invoice_path(create_invoice)
end
it "shows title" do
expect(page).to have_selector('span[title="stock"]')
end
end
context "passing title as proc" do
before do
register_show(Invoice) do
state_row(:aasm_state, title: lambda { |invoice|
invoice.shipping_status && "Shipping: #{invoice.shipping_status.humanize}"
})
end
visit admin_invoice_path(create_invoice)
end
it "shows title" do
expect(page).to have_selector('span[title="Shipping: Stock"]')
end
end
end