16 changed files with 526 additions and 118 deletions
@ -0,0 +1,66 @@
|
||||
.app-data-box-group { |
||||
@include govuk-font($size: 19); |
||||
font-weight: bold; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box-group-one-third { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
column-gap: govuk-spacing(4); |
||||
width: 100%; |
||||
min-width: 733.33px; |
||||
} |
||||
} |
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box-one-third { |
||||
width: 33.3333%; |
||||
float: left; |
||||
} |
||||
} |
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box__underline { |
||||
min-width: 733.33px; |
||||
} |
||||
} |
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box-group-one-half { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
column-gap: govuk-spacing(4); |
||||
width: 100%; |
||||
min-width: 733.33px; |
||||
} |
||||
} |
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box-one-half { |
||||
width: 50%; |
||||
float: left; |
||||
} |
||||
} |
||||
@media (min-width: 54.0625em) { |
||||
.app-data-box-one-half__underline { |
||||
min-width: 733.33px; |
||||
} |
||||
} |
||||
|
||||
.app-data-box__upper { |
||||
@include govuk-responsive-margin(2, "bottom"); |
||||
@include govuk-responsive-padding(4); |
||||
|
||||
background-color: govuk-colour("light-grey"); |
||||
color: govuk-colour("blue"); |
||||
} |
||||
|
||||
.app-data-box__lower { |
||||
@include govuk-responsive-margin(4, "bottom"); |
||||
@include govuk-responsive-padding(4); |
||||
|
||||
background-color: govuk-colour("blue"); |
||||
} |
||||
|
||||
.app-data-box__count { |
||||
font-size: 48px; |
||||
color: govuk-colour("blue"); |
||||
} |
||||
@ -0,0 +1,71 @@
|
||||
module HomeHelper |
||||
def data_count(user, type) |
||||
if user.data_provider? |
||||
case type |
||||
when "lettings" then user.lettings_logs.in_progress.where(created_by: user).count |
||||
when "sales" then user.sales_logs.in_progress.where(created_by: user).count |
||||
when "misc" then user.lettings_logs.completed.where(created_by: user).count |
||||
end |
||||
else |
||||
case type |
||||
when "lettings" then user.lettings_logs.in_progress.count |
||||
when "sales" then user.sales_logs.in_progress.count |
||||
when "schemes" then user.schemes.incomplete.count |
||||
end |
||||
end |
||||
end |
||||
|
||||
def heading_for_user_role(user) |
||||
ROLE_HEADINGS[user.role] |
||||
end |
||||
|
||||
def data_subheading(user, type) |
||||
case type |
||||
when "schemes" |
||||
"Incomplete schemes" |
||||
when "misc" |
||||
"Your completed lettings" |
||||
else |
||||
"#{user.role == 'data_provider' ? :"Your " : nil}#{type} in progress".capitalize |
||||
end |
||||
end |
||||
|
||||
def data_path(user, type) |
||||
if user.data_provider? |
||||
case type |
||||
when "lettings" then lettings_logs_path(status: [:in_progress], assigned_to: "you") |
||||
when "sales" then sales_logs_path(status: [:in_progress], assigned_to: "you") |
||||
when "misc" then lettings_logs_path(status: [:completed], assigned_to: "you") |
||||
end |
||||
else |
||||
case type |
||||
when "lettings" then lettings_logs_path(status: [:in_progress]) |
||||
when "sales" then sales_logs_path(status: [:in_progress]) |
||||
when "schemes" then schemes_path(status: [:incomplete]) |
||||
end |
||||
end |
||||
end |
||||
|
||||
def view_all_path(type) |
||||
case type |
||||
when "lettings" then clear_filters_path(filter_type: "lettings_logs") |
||||
when "sales" then clear_filters_path(filter_type: "sales_logs") |
||||
when "schemes" then clear_filters_path(filter_type: "schemes") |
||||
when "misc" then clear_filters_path(filter_type: "schemes") |
||||
end |
||||
end |
||||
|
||||
def view_all_text(type) |
||||
if type == "misc" |
||||
"View all schemes" |
||||
else |
||||
"View all #{type}" |
||||
end |
||||
end |
||||
|
||||
ROLE_HEADINGS = { |
||||
"data_provider" => "Complete your logs", |
||||
"data_coordinator" => "Manage your data", |
||||
"support" => "Manage all data", |
||||
}.freeze |
||||
end |
||||
@ -0,0 +1,9 @@
|
||||
<div class="app-data-box__upper"> |
||||
<div class="app-data-box__count"> |
||||
<%= govuk_link_to data_count(@current_user, type), data_path(@current_user, type), class: "govuk-link--no-visited-state govuk-link--no-underline" %> |
||||
</div> |
||||
<%= govuk_link_to data_subheading(@current_user, type), data_path(@current_user, type), class: "govuk-link--no-visited-state" %> |
||||
</div> |
||||
<div class="app-data-box__lower"> |
||||
<%= govuk_link_to view_all_text(type), view_all_path(type), class: "govuk-link--inverse" %> |
||||
</div> |
||||
@ -0,0 +1,35 @@
|
||||
<h1 class="govuk-heading-l">Upcoming deadlines</h1> |
||||
|
||||
<% current_lettings_form = FormHandler.instance.in_crossover_period? ? FormHandler.instance.previous_lettings_form : FormHandler.instance.current_lettings_form %> |
||||
<% formatted_deadline = "#{current_lettings_form.submission_deadline.strftime('%A')} #{current_lettings_form.submission_deadline.to_formatted_s(:govuk_date)}" %> |
||||
<% if FormHandler.instance.in_crossover_period? %> |
||||
<p class="govuk-body govuk-body-m"><strong>End of year deadline - <%= formatted_deadline %>:</strong> Deadline to submit logs for tenancies starting between <%= collection_start_date(Time.zone.now).to_formatted_s(:govuk_date) %> to <%= collection_end_date(Time.zone.now).to_formatted_s(:govuk_date) %></p> |
||||
<% end %> |
||||
|
||||
<% current_quarter = quarter_for_date(date: Time.zone.now) %> |
||||
<% if current_quarter.present? %> |
||||
<p class="govuk-body govuk-body-m"><strong><%= "#{current_quarter.quarter} - #{current_quarter.cutoff_date.strftime('%A')} #{current_quarter.cutoff_date.to_formatted_s(:govuk_date)}" %>:</strong> Quarterly cut off date for tenancies and sales starting between <%= current_quarter.quarter_start_date.to_formatted_s(:govuk_date) %> and <%= current_quarter.quarter_end_date.to_formatted_s(:govuk_date) %>.</p> |
||||
<% end %> |
||||
|
||||
<% if !FormHandler.instance.in_crossover_period? %> |
||||
<p class="govuk-body govuk-body-m">Try to complete your logs for each quarter by the cut-off date.</p> |
||||
<p class="govuk-body govuk-body-m">You can still create logs for a previous quarter after its cut-off date, as long as you complete them by the <strong>end-of-year deadline: <%= formatted_deadline %>.</strong></p> |
||||
<% end %> |
||||
|
||||
<% if FormHandler.instance.in_crossover_period? %> |
||||
<% previous_lettings_form = FormHandler.instance.previous_lettings_form %> |
||||
<p class="govuk-body govuk-body-m">Prioritise completing logs for the closing collection year. You must complete all <%= previous_lettings_form.start_date.year %> to <%= previous_lettings_form.submission_deadline.year %> logs must by the end-of-year deadline. You can still create <%= current_lettings_form.start_date.year %> to <%= current_lettings_form.submission_deadline.year %> logs for this quarter after the quarterly cut-off date.</p> |
||||
<% end %> |
||||
|
||||
<%= govuk_details(summary_text: "Quarterly cut-off dates for 2023 to 2024") do %> |
||||
<p class="govuk-body govuk-body-m">The 2023 to 2024 quarterly cut-off dates are:</p> |
||||
<ul class="govuk-list govuk-list--bullet"> |
||||
<li class="govuk-!-padding-bottom-4"><strong>Q1 - Friday 14 July 2023:</strong> Quarterly cut-off date for tenancies and sales starting between 1 April 2023 and 30 June 2023.</li> |
||||
<li class="govuk-!-padding-bottom-4"><strong>Q2 - Friday 13 October 2023:</strong> Quarterly cut-off date for tenancies and sales starting between 1 July 2023 and 30 September 2023.</li> |
||||
<li class="govuk-!-padding-bottom-4"><strong>Q3 - Friday 12 January 2024:</strong> Quarterly cut-off date for tenancies and sales starting between 1 October 2023 and 31 December 2023.</li> |
||||
<li class="govuk-!-padding-bottom-4"><strong>End of year deadline - Friday 7 June 2024:</strong> Deadline for tenancies and sales starting between 1 January 2024 and 31 March 2024, plus any late submissions for the 2023 to 2024 collection year.</li> |
||||
</ul> |
||||
<p class="govuk-body govuk-body-m">It is important that you meet these cut-off dates because we submit data to the Office for National Statistics quarterly, helping them create essential inflation statistics.</p> |
||||
<p class="govuk-body govuk-body-m">Meeting these cut-off dates also gives you more accurate data for your own analysis, and reduces the burden at the end of the year.</p> |
||||
<p class="govuk-body govuk-body-m">If you are not able to meet these quarterly dates, submit your logs as soon as you can so that they can be included in the annual data.</p> |
||||
<% end %> |
||||
@ -1 +1,56 @@
|
||||
<p class="govuk-body-l"><%= "Welcome back, #{@current_user.name}" %></p> |
||||
<div class="govuk-grid-row"> |
||||
<div class="govuk-width-container"> |
||||
<div class="govuk-grid-column-two-thirds"> |
||||
<div class="govuk-grid-row govuk-!-margin-bottom-7"> |
||||
<span class="govuk-body-l"><%= "Welcome back, #{@current_user.name}" %></span> |
||||
<h1 class="govuk-heading-l"><%= heading_for_user_role(@current_user) %></h1> |
||||
</div> |
||||
<div class="govuk-grid-row"> |
||||
<div class="app-data-box-group"> |
||||
<% if @current_user.support? || (@current_user.data_coordinator? && @current_user.sales_logs.present?) %> |
||||
<div class="app-data-box-group-one-third"> |
||||
<div class="app-data-box-one-third"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "lettings" } %></span> |
||||
</div> |
||||
<div class="app-data-box-one-third"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "sales" } %></span> |
||||
</div> |
||||
<div class="app-data-box-one-third"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "schemes" } %></span> |
||||
</div> |
||||
</div> |
||||
<% else %> |
||||
<div class="app-data-box-group-one-half"> |
||||
<div class="app-data-box-one-half"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "lettings" } %></span> |
||||
</div> |
||||
<% if @current_user.data_coordinator? %> |
||||
<div class="app-data-box-one-half"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "schemes" } %></span> |
||||
</div> |
||||
<% elsif @current_user.sales_logs.present? %> |
||||
<div class="app-data-box-one-half"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "sales" } %></span> |
||||
</div> |
||||
<% else %> |
||||
<div class="app-data-box-one-half"> |
||||
<span><%= render partial: "home/data_box", locals: { type: "misc" } %></span> |
||||
</div> |
||||
<% end %> |
||||
</div> |
||||
<% end %> |
||||
</div> |
||||
</div> |
||||
<div class="govuk-grid-row"> |
||||
<div class="app-data-box__underline"> |
||||
<hr class="govuk-section-break govuk-section-break--visible govuk-section-break--m"> |
||||
</div> |
||||
</div> |
||||
<div class="govuk-grid-row"> |
||||
<%= render partial: "layouts/collection_resources" %> |
||||
<hr class="govuk-section-break govuk-section-break--visible govuk-section-break--m"> |
||||
<%= render partial: "home/upcoming_deadlines" %> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
@ -1,94 +1,59 @@
|
||||
<div class="app-card"> |
||||
<% if current_user %> |
||||
<h1 class="govuk-heading-l">Collection resources</h1> |
||||
<p class="govuk-body"><strong><%= govuk_link_to "Guidance for submitting social housing lettings and sales data (CORE)", guidance_path %></strong></p> |
||||
<% else %> |
||||
<h2 class="govuk-heading-m">Collection resources</h2> |
||||
<p class="govuk-body-s">For lettings starting during 1 April 2023 to 31 March 2024 and sales completing during the same period, use the 2023/24 forms.</p> |
||||
|
||||
<% end %> |
||||
<p class="govuk-body">Use the 2023 to 2024 forms for lettings that start and sales that complete between 1 April 2023 and 31 March 2024.</p> |
||||
<%= govuk_tabs(title: "Collection resources") do |c| %> |
||||
<% if FormHandler.instance.lettings_form_for_start_year(2023) && FormHandler.instance.lettings_form_for_start_year(2023).edit_end_date > Time.zone.today %> |
||||
<h3 class="govuk-heading-s">Lettings 2023/24</h3> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
<% c.with_tab(label: "Lettings 2023/24") do %> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
{ |
||||
name: "Lettings log for tenants (2023/24)", |
||||
name: "Download the lettings log for tenants (2023 to 2024)", |
||||
href: download_23_24_lettings_form_path, |
||||
metadata: file_type_size_and_pages("2023_24_lettings_paper_form.pdf", number_of_pages: 8), |
||||
}, |
||||
{ |
||||
name: "Lettings bulk upload template (2023/24) – New question ordering", |
||||
name: "Download the lettings bulk upload template (2023 to 2024) – New question ordering", |
||||
href: download_23_24_lettings_bulk_upload_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-lettings-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Lettings bulk upload template (2023/24)", |
||||
name: "Download the lettings bulk upload template (2023 to 2024) – Legacy version", |
||||
href: download_23_24_lettings_bulk_upload_legacy_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-lettings-legacy-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Lettings bulk upload specification (2023/24)", |
||||
name: "Download the lettings bulk upload specification (2023 to 2024)", |
||||
href: download_23_24_lettings_bulk_upload_specification_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-lettings-specification-2023-24.xlsx"), |
||||
}, |
||||
]) %> |
||||
|
||||
<h3 class="govuk-heading-s">Sales 2023/24</h3> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
{ |
||||
name: "Sales log for buyers (2023/24)", |
||||
href: download_23_24_sales_form_path, |
||||
metadata: file_type_size_and_pages("2023_24_sales_paper_form.pdf", number_of_pages: 8), |
||||
}, |
||||
{ |
||||
name: "Sales bulk upload template (2023/24) – New question ordering", |
||||
href: download_23_24_sales_bulk_upload_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Sales bulk upload template (2023/24)", |
||||
href: download_23_24_sales_bulk_upload_legacy_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-legacy-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Sales bulk upload specification (2023/24)", |
||||
href: download_23_24_sales_bulk_upload_specification_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-specification-2023-24.xlsx"), |
||||
}, |
||||
]) %> |
||||
<% end %> |
||||
|
||||
<% if FormHandler.instance.lettings_form_for_start_year(2022) && FormHandler.instance.lettings_form_for_start_year(2022).edit_end_date > Time.zone.today %> |
||||
<h3 class="govuk-heading-s">Lettings 2022/23</h3> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
{ |
||||
name: "Lettings log for tenants (2022/23)", |
||||
href: download_22_23_lettings_form_path, |
||||
metadata: file_type_size_and_pages("2022_23_lettings_paper_form.pdf", number_of_pages: 4), |
||||
}, |
||||
{ |
||||
name: "Lettings bulk upload template (2022/23)", |
||||
href: download_22_23_lettings_bulk_upload_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-lettings-template-2022-23.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Lettings bulk upload specification (2022/23)", |
||||
href: download_22_23_lettings_bulk_upload_specification_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-lettings-specification-2022-23.xlsx"), |
||||
}, |
||||
]) %> |
||||
|
||||
<h3 class="govuk-heading-s">Sales 2022/23</h3> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
{ |
||||
name: "Sales log for buyers (2022/23)", |
||||
href: download_22_23_sales_form_path, |
||||
metadata: file_type_size_and_pages("2022_23_sales_paper_form.pdf", number_of_pages: 5), |
||||
}, |
||||
{ |
||||
name: "Sales bulk upload template (2022/23)", |
||||
href: download_22_23_sales_bulk_upload_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-template-2022-23.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Sales bulk upload specification (2022/23)", |
||||
href: download_22_23_sales_bulk_upload_specification_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-template-2022-23.xlsx"), |
||||
}, |
||||
]) %> |
||||
]) %> |
||||
<% end %> |
||||
<% c.with_tab(label: "Sales 2023/24") do %> |
||||
<%= render DocumentListComponent.new(items: [ |
||||
{ |
||||
name: "Download the sales log for buyers (2023 to 2024)", |
||||
href: download_23_24_sales_form_path, |
||||
metadata: file_type_size_and_pages("2023_24_sales_paper_form.pdf", number_of_pages: 8), |
||||
}, |
||||
{ |
||||
name: "Download the sales bulk upload template (2023 to 2024) – New question ordering", |
||||
href: download_23_24_sales_bulk_upload_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Download the sales bulk upload template (2023 to 2024) – Legacy version", |
||||
href: download_23_24_sales_bulk_upload_legacy_template_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-legacy-template-2023-24.xlsx"), |
||||
}, |
||||
{ |
||||
name: "Download the sales bulk upload specification (2023 to 2024)", |
||||
href: download_23_24_sales_bulk_upload_specification_path, |
||||
metadata: file_type_size_and_pages("bulk-upload-sales-specification-2023-24.xlsx"), |
||||
}, |
||||
]) %> |
||||
<% end %> |
||||
<% end %> |
||||
</div> |
||||
<% end %> |
||||
|
||||
@ -0,0 +1,158 @@
|
||||
require "rails_helper" |
||||
require_relative "form/helpers" |
||||
|
||||
RSpec.describe "Home Page Features" do |
||||
include Helpers |
||||
|
||||
context "when the user is a data provider" do |
||||
let(:user) { FactoryBot.create(:user, name: "Provider") } |
||||
|
||||
before do |
||||
create_list(:lettings_log, 6, :in_progress, owning_organisation: user.organisation, created_by: user) |
||||
create_list(:lettings_log, 2, :in_progress, owning_organisation: user.organisation) |
||||
create_list(:lettings_log, 4, :completed, owning_organisation: user.organisation, created_by: user) |
||||
create_list(:lettings_log, 2, :completed) |
||||
sign_in user |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays the correct welcome text" do |
||||
expect(page).to have_current_path("/") |
||||
expect(page).to have_content("Welcome back, Provider") |
||||
expect(page).to have_content("Complete your logs") |
||||
end |
||||
|
||||
context "when their organisation has submitted sales logs" do |
||||
before do |
||||
create_list(:sales_log, 5, :in_progress, owning_organisation: user.organisation, created_by: user) |
||||
create_list(:sales_log, 3, :completed, owning_organisation: user.organisation, created_by: user) |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays correct data boxes, counts and links" do |
||||
data_boxes = page.find_all(class: "app-data-box-one-half") |
||||
expect(data_boxes.count).to eq(2) |
||||
expect(data_boxes[0].all("a").map(&:text)).to eq(["6", "Your lettings in progress", "View all lettings"]) |
||||
expect(data_boxes[0].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:in_progress], assigned_to: "you"), lettings_logs_path(status: [:in_progress], assigned_to: "you"), clear_filters_path(filter_type: "lettings_logs")]) |
||||
expect(data_boxes[1].all("a").map(&:text)).to eq(["5", "Your sales in progress", "View all sales"]) |
||||
expect(data_boxes[1].all("a").map { |line| line["href"] }).to eq([sales_logs_path(status: [:in_progress], assigned_to: "you"), sales_logs_path(status: [:in_progress], assigned_to: "you"), clear_filters_path(filter_type: "sales_logs")]) |
||||
end |
||||
end |
||||
|
||||
context "when their organisation has never submitted sales logs" do |
||||
before do |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays correct data boxes, counts and links" do |
||||
data_boxes = page.find_all(class: "app-data-box-one-half") |
||||
expect(data_boxes.count).to eq(2) |
||||
expect(data_boxes[0].all("a").map(&:text)).to eq(["6", "Your lettings in progress", "View all lettings"]) |
||||
expect(data_boxes[0].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:in_progress], assigned_to: "you"), lettings_logs_path(status: [:in_progress], assigned_to: "you"), clear_filters_path(filter_type: "lettings_logs")]) |
||||
expect(data_boxes[1].all("a").map(&:text)).to eq(["4", "Your completed lettings", "View all schemes"]) |
||||
expect(data_boxes[1].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:completed], assigned_to: "you"), lettings_logs_path(status: [:completed], assigned_to: "you"), clear_filters_path(filter_type: "schemes")]) |
||||
end |
||||
end |
||||
end |
||||
|
||||
context "when the user is a data coordinator" do |
||||
before do |
||||
create_list(:lettings_log, 6, :in_progress, owning_organisation: user.organisation) |
||||
create_list(:lettings_log, 2, :in_progress, owning_organisation: user.organisation, created_by: user) |
||||
create_list(:lettings_log, 4, :completed, owning_organisation: user.organisation) |
||||
create_list(:lettings_log, 2, :completed) |
||||
create_list(:scheme, 1, :incomplete, owning_organisation: user.organisation) |
||||
sign_in user |
||||
visit("/") |
||||
end |
||||
|
||||
let(:user) { FactoryBot.create(:user, :data_coordinator, name: "Coordinator") } |
||||
|
||||
it "displays the correct welcome text" do |
||||
expect(page).to have_current_path("/") |
||||
expect(page).to have_content("Welcome back, Coordinator") |
||||
expect(page).to have_content("Manage your data") |
||||
end |
||||
|
||||
context "when their organisation has submitted sales logs" do |
||||
before do |
||||
create_list(:sales_log, 5, :in_progress, owning_organisation: user.organisation) |
||||
create_list(:sales_log, 3, :completed, owning_organisation: user.organisation) |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays correct data boxes, counts and links" do |
||||
data_boxes = page.find_all(class: "app-data-box-one-third") |
||||
expect(data_boxes.count).to eq(3) |
||||
expect(data_boxes[0].all("a").map(&:text)).to eq(["8", "Lettings in progress", "View all lettings"]) |
||||
expect(data_boxes[0].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:in_progress]), lettings_logs_path(status: [:in_progress]), clear_filters_path(filter_type: "lettings_logs")]) |
||||
expect(data_boxes[1].all("a").map(&:text)).to eq(["5", "Sales in progress", "View all sales"]) |
||||
expect(data_boxes[1].all("a").map { |line| line["href"] }).to eq([sales_logs_path(status: [:in_progress]), sales_logs_path(status: [:in_progress]), clear_filters_path(filter_type: "sales_logs")]) |
||||
expect(data_boxes[2].all("a").map(&:text)).to eq(["1", "Incomplete schemes", "View all schemes"]) |
||||
expect(data_boxes[2].all("a").map { |line| line["href"] }).to eq([schemes_path(status: [:incomplete]), schemes_path(status: [:incomplete]), clear_filters_path(filter_type: "schemes")]) |
||||
end |
||||
end |
||||
|
||||
context "when their organisation has never submitted sales logs" do |
||||
before do |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays correct data boxes, counts and links" do |
||||
data_boxes = page.find_all(class: "app-data-box-one-half") |
||||
expect(data_boxes.count).to eq(2) |
||||
expect(data_boxes[0].all("a").map(&:text)).to eq(["8", "Lettings in progress", "View all lettings"]) |
||||
expect(data_boxes[0].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:in_progress]), lettings_logs_path(status: [:in_progress]), clear_filters_path(filter_type: "lettings_logs")]) |
||||
expect(data_boxes[1].all("a").map(&:text)).to eq(["1", "Incomplete schemes", "View all schemes"]) |
||||
expect(data_boxes[1].all("a").map { |line| line["href"] }).to eq([schemes_path(status: [:incomplete]), schemes_path(status: [:incomplete]), clear_filters_path(filter_type: "schemes")]) |
||||
end |
||||
end |
||||
end |
||||
|
||||
context "when the user is a support user" do |
||||
let(:support_user) { FactoryBot.create(:user, :support, name: "Support") } |
||||
let(:notify_client) { instance_double(Notifications::Client) } |
||||
let(:confirmation_token) { "MCDH5y6Km-U7CFPgAMVS" } |
||||
let(:devise_notify_mailer) { DeviseNotifyMailer.new } |
||||
let(:otp) { "999111" } |
||||
|
||||
before do |
||||
create_list(:lettings_log, 2, :in_progress) |
||||
create_list(:lettings_log, 1, :completed) |
||||
create_list(:sales_log, 3, :in_progress) |
||||
create_list(:sales_log, 1, :completed) |
||||
create_list(:scheme, 1, :incomplete) |
||||
completed_scheme = create(:scheme) |
||||
create(:location, scheme: completed_scheme) |
||||
allow(DeviseNotifyMailer).to receive(:new).and_return(devise_notify_mailer) |
||||
allow(devise_notify_mailer).to receive(:notify_client).and_return(notify_client) |
||||
allow(Devise).to receive(:friendly_token).and_return(confirmation_token) |
||||
allow(notify_client).to receive(:send_email).and_return(true) |
||||
allow(SecureRandom).to receive(:random_number).and_return(otp) |
||||
visit("/lettings-logs") |
||||
fill_in("user[email]", with: support_user.email) |
||||
fill_in("user[password]", with: support_user.password) |
||||
click_button("Sign in") |
||||
fill_in("code", with: otp) |
||||
click_button("Submit") |
||||
visit("/") |
||||
end |
||||
|
||||
it "displays the correct welcome text" do |
||||
expect(page).to have_current_path("/") |
||||
expect(page).to have_content("Welcome back, Support") |
||||
expect(page).to have_content("Manage all data") |
||||
end |
||||
|
||||
it "displays correct data boxes, counts and links" do |
||||
data_boxes = page.find_all(class: "app-data-box-one-third") |
||||
expect(data_boxes.count).to eq(3) |
||||
expect(data_boxes[0].all("a").map(&:text)).to eq(["2", "Lettings in progress", "View all lettings"]) |
||||
expect(data_boxes[0].all("a").map { |line| line["href"] }).to eq([lettings_logs_path(status: [:in_progress]), lettings_logs_path(status: [:in_progress]), clear_filters_path(filter_type: "lettings_logs")]) |
||||
expect(data_boxes[1].all("a").map(&:text)).to eq(["3", "Sales in progress", "View all sales"]) |
||||
expect(data_boxes[1].all("a").map { |line| line["href"] }).to eq([sales_logs_path(status: [:in_progress]), sales_logs_path(status: [:in_progress]), clear_filters_path(filter_type: "sales_logs")]) |
||||
expect(data_boxes[2].all("a").map(&:text)).to eq(["1", "Incomplete schemes", "View all schemes"]) |
||||
expect(data_boxes[2].all("a").map { |line| line["href"] }).to eq([schemes_path(status: [:incomplete]), schemes_path(status: [:incomplete]), clear_filters_path(filter_type: "schemes")]) |
||||
end |
||||
end |
||||
end |
||||
Loading…
Reference in new issue