-
-
Notifications
You must be signed in to change notification settings - Fork 573
Expand file tree
/
Copy pathprofiles_requests_spec.rb
More file actions
154 lines (134 loc) · 6.69 KB
/
profiles_requests_spec.rb
File metadata and controls
154 lines (134 loc) · 6.69 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
RSpec.describe "/partners/profiles", type: :request do
let(:partner) { create(:partner, name: "Partnerrific") }
let(:partner_user) { partner.primary_user }
before do
sign_in(partner_user)
end
describe "GET #show" do
it "displays the partner" do
get partners_profile_path(partner)
expect(response.body).to include("Partnerrific")
end
it "shows correct values for yes/no buttons" do
partner.profile.update!(currently_provide_diapers: nil, form_990: false, income_verification: true)
get partners_profile_path(partner)
expect(response.body).to include("<dt>Current Providing Diapers</dt>\n <dd>Unspecified</dd>")
expect(response.body).to include("<dt>Form 990 Filed</dt>\n <dd>No</dd>")
expect(response.body).to include("<dt>Do You Verify The Income Of Your Clients</dt>\n <dd>Yes</dd>")
end
it "renders show partner settings partial with enabled request types only" do
partner.profile.organization.update!(enable_quantity_based_requests: true, enable_child_based_requests: false)
get partners_profile_path(partner)
expect(response).to render_template(partial: "partners/profiles/show/_partner_settings")
expect(response.body).to include("<dt>Uses Quantity Based Requests</dt>")
expect(response.body).not_to include("<dt>Uses Child Based Requests</dt>")
end
end
describe "GET #edit" do
it "displays the partner" do
get edit_partners_profile_path(partner)
expect(response.body).to include("Partnerrific")
end
it "does not have default radio button value when value is nil" do
partner.profile.update!(storage_space: nil)
get edit_partners_profile_path(partner)
expect(response.body).not_to include("type=\"radio\" value=\"true\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_true\" />")
expect(response.body).not_to include("type=\"radio\" value=\"false\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_false\"")
end
it "has \"Yes\" radio button value when value is true" do
partner.profile.update!(storage_space: true)
get edit_partners_profile_path(partner)
expect(response.body).to include("type=\"radio\" value=\"true\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_true\" />")
expect(response.body).not_to include("type=\"radio\" value=\"false\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_false\"")
end
it "has \"No\" radio button value when value is false" do
partner.profile.update!(storage_space: false)
get edit_partners_profile_path(partner)
expect(response.body).not_to include("type=\"radio\" value=\"true\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_true\" />")
expect(response.body).to include("type=\"radio\" value=\"false\" checked=\"checked\" name=\"partner[profile][storage_space]\" id=\"partner_profile_storage_space_false\"")
end
it "renders edit partner settings partial with enabled request types only" do
partner.profile.organization.update!(enable_quantity_based_requests: true, enable_child_based_requests: false)
get edit_partners_profile_path(partner)
expect(response).to render_template(partial: "partners/profiles/edit/_partner_settings")
expect(response.body).to include("Enable Quantity-based Requests")
expect(response.body).not_to include("Enable Child-based Requests")
end
end
describe "PUT #update" do
it "updates the partner and profile" do
partner.profile.update!(address1: "123 Main St.", address2: "New York, New York")
put partners_profile_path(partner,
partner: {name: "Partnerdude", profile: {address1: "456 Main St.", address2: "Washington, DC"}})
expect(partner.reload.name).to eq("Partnerdude")
expect(partner.profile.reload.address1).to eq("456 Main St.")
expect(partner.profile.address2).to eq("Washington, DC")
expect(response).to redirect_to(partners_profile_path)
end
it "updates the partner program address" do
partner.profile.update!(program_address1: "123 Happy Pl.", program_address2: "suite 333", program_city: "Golden", program_state: "Colorado", program_zip_code: 80401)
put partners_profile_path(partner,
partner: {name: partner.name,
profile: {
program_address1: "123 Happy Pl.",
program_address2: "suite 333",
program_city: "Golden",
program_state: "Colorado",
program_zip_code: 80401
}})
partner.profile.reload
expect(partner.profile.program_address1).to eq("123 Happy Pl.")
expect(partner.profile.program_address2).to eq("suite 333")
expect(partner.profile.program_city).to eq("Golden")
expect(partner.profile.program_state).to eq("Colorado")
expect(partner.profile.program_zip_code).to eq(80401)
expect(response).to redirect_to(partners_profile_path)
end
context "with no social media" do
before do
partner.awaiting_review!
end
let(:params) do
{
partner: {
name: "Partnerdude", profile: {
no_social_media_presence: '0',
website: "",
twitter: "",
facebook: "",
instagram: "",
agency_type: 'OTHER',
address1: '123 Main St',
city: 'Anytown',
state: 'CA',
zip_code: '12345',
program_name: 'Test Program',
program_description: 'Test Description'
}
}
}
end
it "shows an error" do
put partners_profile_path(partner, params)
expect(response).not_to redirect_to(anything)
expect(response.body).to include("At least one social media field must be filled out or 'No social media presence' must be checked")
end
end
context "when updating an existing value to a blank value" do
before do
partner.profile.update!(city: "")
put partners_profile_path(partner,
partner: {name: "Partnerdude", profile: {city: "", website: "N/A"}})
end
it "updates the partner profile attribute to a blank value" do
expect(partner.profile.reload.city).to eq ""
end
it "does not update other partner profile attributes to blank" do
expect(partner.profile.reload.address2).to be_nil
end
it "does store N/A in the database" do
expect(partner.profile.reload.website).to eq "N/A"
end
end
end
end