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.
		
		
		
		
		
			
		
			
				
					
					
						
							96 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							96 lines
						
					
					
						
							2.5 KiB
						
					
					
				require "rails_helper" | 
						|
 | 
						|
RSpec.describe Form::Sales::Questions::Uprn, type: :model do | 
						|
  subject(:question) { described_class.new(question_id, question_definition, page) } | 
						|
 | 
						|
  let(:question_id) { nil } | 
						|
  let(:question_definition) { nil } | 
						|
  let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)))) } | 
						|
 | 
						|
  it "has correct page" do | 
						|
    expect(question.page).to eq(page) | 
						|
  end | 
						|
 | 
						|
  it "has the correct id" do | 
						|
    expect(question.id).to eq("uprn") | 
						|
  end | 
						|
 | 
						|
  it "has the correct type" do | 
						|
    expect(question.type).to eq("text") | 
						|
  end | 
						|
 | 
						|
  it "is not marked as derived" do | 
						|
    expect(question.derived?(nil)).to be false | 
						|
  end | 
						|
 | 
						|
  it "has the correct question_number" do | 
						|
    expect(question.question_number).to eq(14) | 
						|
  end | 
						|
 | 
						|
  it "has the correct unanswered_error_message" do | 
						|
    expect(question.unanswered_error_message).to eq("UPRN must be 12 digits or less.") | 
						|
  end | 
						|
 | 
						|
  describe "get_extra_check_answer_value" do | 
						|
    context "when address is not present" do | 
						|
      let(:log) { build(:sales_log) } | 
						|
 | 
						|
      it "returns nil" do | 
						|
        expect(question.get_extra_check_answer_value(log)).to be_nil | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    context "when address is present" do | 
						|
      let(:log) do | 
						|
        build( | 
						|
          :sales_log, | 
						|
          :completed, | 
						|
          address_line1: "1, Test Street", | 
						|
          town_or_city: "Test Town", | 
						|
          postcode_full: "AA1 1AA", | 
						|
          la: "E09000003", | 
						|
          uprn_known:, | 
						|
          uprn:, | 
						|
        ) | 
						|
      end | 
						|
 | 
						|
      context "when uprn known nil" do | 
						|
        let(:uprn_known) { nil } | 
						|
        let(:uprn) { nil } | 
						|
 | 
						|
        it "returns formatted value" do | 
						|
          expect(question.get_extra_check_answer_value(log)).to be_nil | 
						|
        end | 
						|
      end | 
						|
 | 
						|
      context "when uprn known" do | 
						|
        let(:uprn_known) { 1 } | 
						|
        let(:uprn) { 1 } | 
						|
 | 
						|
        it "returns formatted value" do | 
						|
          expect(question.get_extra_check_answer_value(log)).to eq( | 
						|
            "\n\n1, Test Street\nTest Town\nAA1 1AA\nBarnet", | 
						|
          ) | 
						|
        end | 
						|
      end | 
						|
 | 
						|
      context "when uprn not known" do | 
						|
        let(:uprn_known) { 0 } | 
						|
        let(:uprn) { nil } | 
						|
 | 
						|
        it "returns formatted value" do | 
						|
          expect(question.get_extra_check_answer_value(log)).to be_nil | 
						|
        end | 
						|
      end | 
						|
    end | 
						|
  end | 
						|
 | 
						|
  it "has the correct inferred_check_answers_value" do | 
						|
    expect(question.inferred_check_answers_value).to eq([{ | 
						|
      "condition" => { | 
						|
        "uprn_known" => 0, | 
						|
      }, | 
						|
      "value" => "Not known", | 
						|
    }]) | 
						|
  end | 
						|
end
 | 
						|
 |