Skip to content

Commit 4c37be6

Browse files
committed
Add request specs for color schemes
1 parent b3b6229 commit 4c37be6

File tree

2 files changed

+120
-3
lines changed

2 files changed

+120
-3
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
require "rails_helper"
2+
3+
RSpec.describe "Settings Color Schemes", type: :request do
4+
let(:default_color_scheme) { ColorScheme.find_or_create_default }
5+
let(:curated_colors) do
6+
curated_color_names = YAML.load_file(Rails.root.join("config", "curated_colors.yml")).sample(3)
7+
8+
curated_color_names.map do |name|
9+
FactoryBot.create(:color_scheme, name: name)
10+
end
11+
end
12+
13+
before do
14+
default_color_scheme
15+
curated_colors
16+
end
17+
18+
describe "GET color_schemes#show" do
19+
it "renders the color scheme" do
20+
get settings_color_scheme_path
21+
22+
expect(response).to have_http_status(:ok)
23+
end
24+
25+
it "renders when session color scheme is set" do
26+
patch settings_color_scheme_path(settings: {color_scheme_id: FactoryBot.create(:color_scheme).id})
27+
28+
get settings_color_scheme_path
29+
30+
expect(response).to have_http_status(:ok)
31+
end
32+
33+
it "renders when preview params are set" do
34+
get settings_color_scheme_path(settings: {color_scheme_id: FactoryBot.create(:color_scheme).id})
35+
36+
expect(response).to have_http_status(:ok)
37+
end
38+
39+
it "renders the color scheme for css format" do
40+
get settings_color_scheme_path(format: :css)
41+
42+
aggregate_failures do
43+
expect(response).to have_http_status(:ok)
44+
expect(response.body).to match(default_color_scheme.name.parameterize)
45+
end
46+
end
47+
48+
it "renders for css format when session color scheme is set" do
49+
color_scheme = FactoryBot.create(:color_scheme)
50+
patch settings_color_scheme_path(settings: {color_scheme_id: color_scheme.id})
51+
52+
get settings_color_scheme_path(format: :css)
53+
54+
aggregate_failures do
55+
expect(response).to have_http_status(:ok)
56+
expect(response.body).to match(color_scheme.name.parameterize)
57+
end
58+
end
59+
60+
it "renders for css format when preview params are set" do
61+
color_scheme = FactoryBot.create(:color_scheme)
62+
get settings_color_scheme_path(settings: {color_scheme_id: color_scheme.id}, format: :css)
63+
64+
aggregate_failures do
65+
expect(response).to have_http_status(:ok)
66+
expect(response.body).to match(color_scheme.name.parameterize)
67+
end
68+
end
69+
end
70+
71+
describe "PATCH color_schemes#update" do
72+
let(:color_scheme) { FactoryBot.create(:color_scheme) }
73+
74+
it "updates custom color scheme" do
75+
get settings_color_scheme_path(format: :css)
76+
77+
aggregate_failures do
78+
expect(response.body).not_to match(color_scheme.name.parameterize)
79+
expect(response.body).to match(default_color_scheme.name.parameterize)
80+
end
81+
82+
patch settings_color_scheme_path(settings: {color_scheme_id: color_scheme.id})
83+
84+
expect(response).to have_http_status(:see_other)
85+
86+
get settings_color_scheme_path(format: :css)
87+
88+
aggregate_failures do
89+
expect(response.body).to match(color_scheme.name.parameterize)
90+
expect(response.body).not_to match(default_color_scheme.name.parameterize)
91+
end
92+
end
93+
94+
it "deletes custom color scheme when set to default" do
95+
patch settings_color_scheme_path(settings: {color_scheme_id: color_scheme.id})
96+
97+
get settings_color_scheme_path(format: :css)
98+
99+
expect(response.body).to match(color_scheme.name.parameterize)
100+
101+
default_color_scheme = ColorScheme.find_or_create_default
102+
103+
patch settings_color_scheme_path(settings: {color_scheme_id: default_color_scheme.id})
104+
105+
get settings_color_scheme_path(format: :css)
106+
107+
aggregate_failures do
108+
expect(response.body).not_to match(color_scheme.name.parameterize)
109+
expect(response.body).to match(default_color_scheme.name.parameterize)
110+
end
111+
end
112+
end
113+
end

spec/system/settings/color_schemes_spec.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@
33
require "rails_helper"
44

55
RSpec.describe "Customize Color Scheme", type: :system do
6-
it "user can selected a curated color scheme" do
6+
let(:curated_colors) do
77
curated_color_names = YAML.load_file(Rails.root.join("config", "curated_colors.yml")).sample(3)
88

9-
curated_colors = curated_color_names.map do |name|
9+
curated_color_names.map do |name|
1010
FactoryBot.create(:color_scheme, name: name)
1111
end
12+
end
1213

14+
before { curated_colors }
15+
16+
it "user can selected a curated color scheme" do
1317
visit settings_color_scheme_path
1418

15-
chosen_color = curated_colors.second
19+
chosen_color = curated_colors.sample
1620
select chosen_color.display_name, from: "settings[color_scheme_id]"
1721

1822
click_button "Save #{chosen_color.display_name}"

0 commit comments

Comments
 (0)