Skip to content

Commit 76c4459

Browse files
authored
Merge pull request #744 from citizensadvice/add-customer-commitments
chore/Add customer commitments
2 parents 846feba + 14e86e3 commit 76c4459

File tree

6 files changed

+110
-1
lines changed

6 files changed

+110
-1
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.cads-grid-row
2+
.cads-grid-col-md-9
3+
.section-scores
4+
%h2 Customer commitments
5+
.cads-prose
6+
%p
7+
Is the supplier a member of the Energy Switch Guarantee or the Vulnerability Commitment?
8+
= render CsrTable::DescriptionListComponent.new do |c|
9+
- c.with_descriptions(descriptions)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# frozen_string_literal: true
2+
3+
module CsrTable
4+
class CustomerCommitmentsComponent < ViewComponent::Base
5+
attr_reader :supplier, :renderer
6+
7+
def initialize(supplier)
8+
super()
9+
@supplier = supplier
10+
@renderer = Renderers::RichTextRenderer.new
11+
end
12+
13+
def render?
14+
supplier.present?
15+
end
16+
17+
def descriptions
18+
[
19+
{
20+
term: content_tag(:p, "Customer commitments"),
21+
description: guarantee_list_render
22+
}
23+
]
24+
end
25+
26+
def guarantee_list_render
27+
supplier.guarantee_list ? renderer.render_without_breaks(supplier.guarantee_list) : content_tag(:p, "None")
28+
end
29+
end
30+
end

app/views/csr_table/suppliers/show.html.haml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
= render CsrTable::ComplaintsScoresComponent.new(supplier)
3636
= render CsrTable::BillingAndMeteringScoresComponent.new(supplier)
3737
= render CsrTable::ContactWaitingTimeScoresComponent.new(supplier)
38+
= render CsrTable::CustomerCommitmentsComponent.new(supplier)
3839

3940
- else
4041
= render CsrTable::OtherScoresComponent.new(supplier)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# frozen_string_literal: true
2+
3+
require "rails_helper"
4+
5+
RSpec.describe CsrTable::CustomerCommitmentsComponent, type: :component do
6+
subject { page }
7+
8+
let(:supplier) { build(:supplier, :ranked) }
9+
10+
before do
11+
render_inline described_class.new(supplier)
12+
end
13+
14+
it { is_expected.to have_text "Customer commitments" }
15+
16+
it { is_expected.to have_text "Is the supplier a member of the Energy Switch Guarantee or the Vulnerability Commitment?" }
17+
18+
context "when the supplier is signed up to both schemes" do
19+
let(:supplier) { build(:supplier, :both_guarantee_schemes) }
20+
21+
it { is_expected.to have_text "Switch Guarantee, Vulnerability Commitment" }
22+
end
23+
24+
context "when the supplier is not signed up to either scheme" do
25+
let(:supplier) { build(:supplier, :no_guarantee_schemes) }
26+
27+
it { is_expected.to have_text "None" }
28+
end
29+
30+
context "when there is no supplier" do
31+
let(:supplier) { nil }
32+
33+
it { is_expected.to have_no_css "body" }
34+
end
35+
end

spec/factories/supplier.rb

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
billing_info { { json: JSON.parse(File.read("spec/fixtures/billing_info.json")) } }
2020
opening_hours { { json: JSON.parse(File.read("spec/fixtures/opening_hours.json")) } }
2121
fuel_mix { { json: JSON.parse(File.read("spec/fixtures/fuel_mix.json")) } }
22-
guarantee_list { { json: JSON.parse(File.read("spec/fixtures/guarantee_list.json")) } }
2322

2423
trait :ranked do
2524
data_available { true }
@@ -30,6 +29,15 @@
3029
contact_time { "00:03:27" }
3130
contact_email { 89 }
3231
contact_social_media { "01:15:00" }
32+
guarantee_list { { json: JSON.parse(File.read("spec/fixtures/guarantee_list.json")) } }
33+
end
34+
35+
trait :both_guarantee_schemes do
36+
guarantee_list { { json: JSON.parse(File.read("spec/fixtures/guarantee_list_both.json")) } }
37+
end
38+
39+
trait :no_guarantee_schemes do
40+
guarantee_list { nil }
3341
end
3442

3543
trait :sync_contact do
@@ -91,6 +99,14 @@
9199
data factory: %i[supplier_data ranked]
92100
end
93101

102+
trait(:no_guarantee_schemes) do
103+
data factory: %i[supplier_data no_guarantee_schemes]
104+
end
105+
106+
trait(:both_guarantee_schemes) do
107+
data factory: %i[supplier_data both_guarantee_schemes]
108+
end
109+
94110
trait(:sync_contact) do
95111
data factory: %i[supplier_data sync_contact]
96112
end
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"data": {},
3+
"content": [
4+
{
5+
"data": {},
6+
"content": [
7+
{
8+
"data": {},
9+
"marks": [],
10+
"value": "Switch Guarantee, Vulnerability Commitment",
11+
"nodeType": "text"
12+
}
13+
],
14+
"nodeType": "paragraph"
15+
}
16+
],
17+
"nodeType": "document"
18+
}

0 commit comments

Comments
 (0)