Browse Source

added faker and refactored failing tests

pull/608/head
JG 3 years ago
parent
commit
2c28ffb3f7
  1. 1
      Gemfile
  2. 3
      Gemfile.lock
  3. 2
      spec/factories/case_log.rb
  4. 31
      spec/requests/case_logs_controller_spec.rb
  5. 4
      spec/services/exports/case_log_export_service_spec.rb

1
Gemfile

@ -87,6 +87,7 @@ group :test do
gem "capybara", require: false gem "capybara", require: false
gem "capybara-lockstep" gem "capybara-lockstep"
gem "factory_bot_rails" gem "factory_bot_rails"
gem "faker"
gem "rspec-rails", require: false gem "rspec-rails", require: false
gem "selenium-webdriver", require: false gem "selenium-webdriver", require: false
gem "simplecov", require: false gem "simplecov", require: false

3
Gemfile.lock

@ -169,6 +169,8 @@ GEM
factory_bot_rails (6.2.0) factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0) factory_bot (~> 6.2.0)
railties (>= 5.0.0) railties (>= 5.0.0)
faker (2.21.0)
i18n (>= 1.8.11, < 2)
ffi (1.15.5) ffi (1.15.5)
globalid (1.0.0) globalid (1.0.0)
activesupport (>= 5.0) activesupport (>= 5.0)
@ -437,6 +439,7 @@ DEPENDENCIES
dotenv-rails dotenv-rails
erb_lint erb_lint
factory_bot_rails factory_bot_rails
faker
govuk-components govuk-components
govuk_design_system_formbuilder govuk_design_system_formbuilder
govuk_markdown govuk_markdown

2
spec/factories/case_log.rb

@ -52,7 +52,7 @@ FactoryBot.define do
reservist { 0 } reservist { 0 }
illness { 1 } illness { 1 }
preg_occ { 2 } preg_occ { 2 }
tenancy_code { "BZ757" } tenancy_code { Faker::Alphanumeric.alphanumeric(number: 10) }
startertenancy { 0 } startertenancy { 0 }
tenancylength { 5 } tenancylength { 5 }
tenancy { 1 } tenancy { 1 }

31
spec/requests/case_logs_controller_spec.rb

@ -309,38 +309,37 @@ RSpec.describe CaseLogsController, type: :request do
end end
context "using a search bar" do context "using a search bar" do
let(:log_1) { FactoryBot.create(:case_log, tenancy_code: "111", owning_organisation: user.organisation) } let(:logs) { FactoryBot.create_list(:case_log, 3, :completed, owning_organisation: user.organisation) }
let(:log_2) { FactoryBot.create(:case_log, tenancy_code: "222", owning_organisation: user.organisation) }
let(:log_3) { FactoryBot.create(:case_log, tenancy_code: "333", owning_organisation: user.organisation) }
it "shows case logs matching the id" do it "shows case logs matching the id" do
get "/logs?search-field=#{log_1.id}", headers: headers, params: {} get "/logs?search-field=#{logs[0].id}", headers: headers, params: {}
expect(page).to have_content(log_1.id) expect(page).to have_content(logs[0].id)
expect(page).not_to have_content(log_3.id) expect(page).not_to have_content(logs[1].id)
expect(page).not_to have_content(logs[2].id)
end end
it "shows case logs matching the tenancy code" do it "shows case logs matching the tenancy code" do
get "/logs?search-field=#{log_1.tenancy_code}", headers: headers, params: {} get "/logs?search-field=#{logs[0].tenancy_code}", headers: headers, params: {}
expect(page).to have_content(log_1.id) expect(page).to have_content(logs[0].id)
expect(page).not_to have_content(log_2.id) expect(page).not_to have_content(logs[1].id)
expect(page).not_to have_content(log_3.id) expect(page).not_to have_content(logs[2].id)
end end
context "search query doesn't match any logs" do context "search query doesn't match any logs" do
it "doesn't display any logs" do it "doesn't display any logs" do
get "/logs?search-field=foobar", headers: headers, params: {} get "/logs?search-field=foobar", headers: headers, params: {}
expect(page).not_to have_content(log_1.id) expect(page).not_to have_content(logs[0].id)
expect(page).not_to have_content(log_2.id) expect(page).not_to have_content(logs[1].id)
expect(page).not_to have_content(log_3.id) expect(page).not_to have_content(logs[2].id)
end end
end end
context "search query is empty" do context "search query is empty" do
it "doesn't display any logs" do it "doesn't display any logs" do
get "/logs?search-field=", headers: headers, params: {} get "/logs?search-field=", headers: headers, params: {}
expect(page).not_to have_content(log_1.id) expect(page).not_to have_content(logs[0].id)
expect(page).not_to have_content(log_2.id) expect(page).not_to have_content(logs[1].id)
expect(page).not_to have_content(log_3.id) expect(page).not_to have_content(logs[2].id)
end end
end end
end end

4
spec/services/exports/case_log_export_service_spec.rb

@ -47,7 +47,7 @@ RSpec.describe Exports::CaseLogExportService do
end end
context "and one case log is available for export" do context "and one case log is available for export" do
let!(:case_log) { FactoryBot.create(:case_log, :completed) } let!(:case_log) { FactoryBot.create(:case_log, :completed, tenancy_code: "BZ757") }
let(:expected_data_filename) { "core_2021_2022_jan_mar_f0001_inc0001_pt001.xml" } let(:expected_data_filename) { "core_2021_2022_jan_mar_f0001_inc0001_pt001.xml" }
it "generates a ZIP export file with the expected filename" do it "generates a ZIP export file with the expected filename" do
@ -226,7 +226,7 @@ RSpec.describe Exports::CaseLogExportService do
let(:csv_export_file) { File.open("spec/fixtures/exports/case_logs.csv", "r:UTF-8") } let(:csv_export_file) { File.open("spec/fixtures/exports/case_logs.csv", "r:UTF-8") }
let(:expected_csv_filename) { "export_2022_05_01.csv" } let(:expected_csv_filename) { "export_2022_05_01.csv" }
let(:case_log) { FactoryBot.create(:case_log, :completed) } let(:case_log) { FactoryBot.create(:case_log, :completed, tenancy_code: "BZ757") }
it "generates an CSV export file with the expected content" do it "generates an CSV export file with the expected content" do
expected_content = replace_entity_ids(case_log, csv_export_file.read) expected_content = replace_entity_ids(case_log, csv_export_file.read)

Loading…
Cancel
Save