You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							3.4 KiB
						
					
					
				| require "rails_helper" | |
|  | |
| RSpec.describe Scheme, type: :model do | |
|   describe "#new" do | |
|     let(:scheme) { FactoryBot.create(:scheme) } | |
|  | |
|     it "belongs to an organisation" do | |
|       expect(scheme.organisation).to be_a(Organisation) | |
|     end | |
|  | |
|     describe "scopes" do | |
|       let!(:scheme_1) { FactoryBot.create(:scheme) } | |
|       let!(:scheme_2) { FactoryBot.create(:scheme) } | |
|       let!(:location) { FactoryBot.create(:location, scheme: scheme_1) } | |
|       let!(:location_2) { FactoryBot.create(:location, scheme: scheme_2) } | |
|  | |
|       context "when filtering by id" do | |
|         it "returns case insensitive matching records" do | |
|           expect(described_class.filter_by_id(scheme_1.id.to_s).count).to eq(1) | |
|           expect(described_class.filter_by_id(scheme_1.id.to_s).first.id).to eq(scheme_1.id) | |
|           expect(described_class.filter_by_id(scheme_2.id.to_s).count).to eq(1) | |
|           expect(described_class.filter_by_id(scheme_2.id.to_s).first.id).to eq(scheme_2.id) | |
|         end | |
|       end | |
|  | |
|       context "when searching by scheme name" do | |
|         it "returns case insensitive matching records" do | |
|           expect(described_class.search_by_service_name(scheme_1.service_name.upcase).count).to eq(1) | |
|           expect(described_class.search_by_service_name(scheme_1.service_name.downcase).count).to eq(1) | |
|           expect(described_class.search_by_service_name(scheme_1.service_name.downcase).first.service_name).to eq(scheme_1.service_name) | |
|           expect(described_class.search_by_service_name(scheme_2.service_name.upcase).count).to eq(1) | |
|           expect(described_class.search_by_service_name(scheme_2.service_name.downcase).count).to eq(1) | |
|           expect(described_class.search_by_service_name(scheme_2.service_name.downcase).first.service_name).to eq(scheme_2.service_name) | |
|         end | |
|       end | |
|  | |
|       context "when searching by postcode" do | |
|         it "returns case insensitive matching records" do | |
|           expect(described_class.search_by_postcode(location.postcode.upcase).count).to eq(1) | |
|           expect(described_class.search_by_postcode(location.postcode.downcase).count).to eq(1) | |
|           expect(described_class.search_by_postcode(location.postcode.downcase).first.locations.first.postcode).to eq(location.postcode) | |
|           expect(described_class.search_by_postcode(location_2.postcode.upcase).count).to eq(1) | |
|           expect(described_class.search_by_postcode(location_2.postcode.downcase).count).to eq(1) | |
|           expect(described_class.search_by_postcode(location_2.postcode.downcase).first.locations.first.postcode).to eq(location_2.postcode) | |
|         end | |
|       end | |
|  | |
|       context "when searching by all searchable fields" do | |
|         it "returns case insensitive matching records" do | |
|           expect(described_class.search_by(scheme_1.id.to_s).count).to eq(1) | |
|           expect(described_class.search_by(scheme_1.id.to_s).first.id).to eq(scheme_1.id) | |
|           expect(described_class.search_by(scheme_2.service_name.upcase).count).to eq(1) | |
|           expect(described_class.search_by(scheme_2.service_name.downcase).count).to eq(1) | |
|           expect(described_class.search_by(scheme_2.service_name.downcase).first.service_name).to eq(scheme_2.service_name) | |
|           expect(described_class.search_by(location.postcode.upcase).count).to eq(1) | |
|           expect(described_class.search_by(location.postcode.downcase).count).to eq(1) | |
|           expect(described_class.search_by(location.postcode.downcase).first.locations.first.postcode).to eq(location.postcode) | |
|         end | |
|       end | |
|     end | |
|   end | |
| end
 | |
| 
 |