diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb new file mode 100644 index 000000000..888639b82 --- /dev/null +++ b/spec/factories/merge_requests.rb @@ -0,0 +1,7 @@ +FactoryBot.define do + factory :merge_request do + status { "incomplete" } + merge_date { nil } + association :requesting_organisation, factory: :organisation + end +end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb new file mode 100644 index 000000000..e3bb24b46 --- /dev/null +++ b/spec/models/merge_request_spec.rb @@ -0,0 +1,26 @@ +require "rails_helper" + +RSpec.describe MergeRequest, type: :model do + describe ".visible" do + let(:open_collection_period_start_date) { 1.year.ago } + let!(:merged_recent) { create(:merge_request, status: "request_merged", merge_date: 3.months.ago) } + let!(:merged_old) { create(:merge_request, status: "request_merged", merge_date: 18.months.ago) } + let!(:not_merged) { create(:merge_request, status: "incomplete") } + + before do + allow(FormHandler.instance).to receive(:start_date_of_earliest_open_collection_period).and_return(open_collection_period_start_date) + end + + it "includes merged requests with merge dates after the open collection period start date" do + expect(described_class.visible).to include(merged_recent) + end + + it "excludes merged requests with merge dates before the open collection period start date" do + expect(described_class.visible).not_to include(merged_old) + end + + it "includes not_merged requests" do + expect(described_class.visible).to include(not_merged) + end + end +end diff --git a/spec/requests/organisations_controller_spec.rb b/spec/requests/organisations_controller_spec.rb index 13879a38c..1b7174842 100644 --- a/spec/requests/organisations_controller_spec.rb +++ b/spec/requests/organisations_controller_spec.rb @@ -1017,6 +1017,25 @@ RSpec.describe OrganisationsController, type: :request do expect(page).to have_field("search", type: "search") end + it "shows the merge request list" do + expect(page).to have_content("Merge requests") + end + + it "has a create new merge request button" do + expect(page).to have_link("Create new merge request") + end + + it "shows count of unresolved merge requests" do + total_number_of_unresolved_merge_requests = MergeRequest.visible.not_merged.count + expect(page).to have_content("#{total_number_of_unresolved_merge_requests} unresolved merge requests") + end + + it "displays 'No merge requests' when @merge_requests is empty" do + allow(MergeRequest).to receive(:visible).and_return(nil) + expect(page).to have_content("No merge requests") + end + + context "when viewing a specific organisation's lettings logs" do let(:parent_organisation) { create(:organisation) } let(:child_organisation) { create(:organisation) }