require 'rails_helper'

describe TeacherSurveyPresenter do
  let(:school) { nil }
  let(:academic_year) { nil }
  let(:measure_1A_i) { create(:measure, measure_id: '1A-i') }
  let(:scale_1) { create(:teacher_scale, measure: measure_1A_i) }
  let(:survey_item_1) do
    create(:teacher_survey_item, survey_item_id: 't-1', scale: scale_1,
                                 prompt: 'Given your preparation for teaching how comfortable are you teaching at the grade-level you have been assigned?')
  end
  let(:survey_item_2) do
    create(:teacher_survey_item, survey_item_id: 't-2', scale: scale_1,
                                 prompt: 'How prepared are you for teaching the topics that you are expected to teach in your assignment?')
  end
  let(:survey_item_3) do
    create(:teacher_survey_item, survey_item_id: 't-3', scale: scale_1,
                                 prompt: 'How confident are you in working with the student body at your school?')
  end
  let(:measure_1B_i) { create(:measure, measure_id: '1B-i') }
  let(:scale_2) { create(:teacher_scale, measure: measure_1B_i) }
  let(:survey_item_4) do
    create(:teacher_survey_item, scale: scale_2,
                                 prompt: 'Some prompt that will not be shown.  Instead it will say items will be available upon request to MCIEA')
  end
  before do
    scale_1
    scale_2
    survey_item_1
    survey_item_2
    survey_item_3
    survey_item_4
  end

  describe '#descriptions_and_availability' do
    context 'When the presenter is NOT based on measure 1B-i' do
      it 'returns a list containing the survey item properties' do
        expect(
          TeacherSurveyPresenter.new(
            measure_id: measure_1A_i.measure_id,
            survey_items: measure_1A_i.teacher_survey_items,
            has_sufficient_data: true,
            school:,
            academic_year:
          ).descriptions_and_availability
        ).to eq [
          Summary.new('t-1',
                      'Given your preparation for teaching how comfortable are you teaching at the grade-level you have been assigned?', true),
          Summary.new('t-2',
                      'How prepared are you for teaching the topics that you are expected to teach in your assignment?', true),
          Summary.new('t-3',
                      'How confident are you in working with the student body at your school?', true)
        ]
      end
    end
    context 'When the presenter is based on measure 1B-i' do
      it 'returns a message hiding the actual prompts.  Instead it presents a message telling the user they can ask for more information' do
        expect(
          TeacherSurveyPresenter.new(
            measure_id: measure_1B_i.measure_id,
            survey_items: measure_1B_i.teacher_survey_items,
            has_sufficient_data: true,
            school:,
            academic_year:
          ).descriptions_and_availability
        ).to eq [
          Summary.new('1B-i', 'Items available upon request to ECP', true)
        ]
      end
    end
  end
end
