require 'rails_helper' describe CategoryPresenter do let(:category_presenter) do subcategory1 = Subcategory.create(name: 'A subcategory', subcategory_id: '1') subcategory2 = Subcategory.create(name: 'Another subcategory', subcategory_id: '2') category = Category.create(name: 'Some Category', subcategories: [subcategory1, subcategory2], description: 'A description for some Category', short_description: 'A short description for some Category', category_id: '1') return CategoryPresenter.new(category:) end let(:teachers_and_leadership_presenter) do category = create(:category, name: 'Teachers & Leadership') return CategoryPresenter.new(category:) end let(:school_culture_presenter) do category = create(:category, name: 'School Culture') return CategoryPresenter.new(category:) end let(:resources_presenter) do category = create(:category, name: 'Resources') return CategoryPresenter.new(category:) end let(:academic_learning_presenter) do category = create(:category, name: 'Academic Learning') return CategoryPresenter.new(category:) end let(:community_and_wellbeing_presenter) do category = create(:category, name: 'Community & Wellbeing') return CategoryPresenter.new(category:) end after :each do DatabaseCleaner.clean end it 'returns the name, id and description of the category' do expect(category_presenter.name).to eq 'Some Category' expect(category_presenter.description).to eq 'A description for some Category' expect(category_presenter.short_description).to eq 'A short description for some Category' expect(category_presenter.id).to eq '1' end it 'maps subcategories to subcategory presenters' do expect(category_presenter.subcategories(academic_year: AcademicYear.new, school: School.new).map(&:name)).to eq [ 'A subcategory', 'Another subcategory' ] end it 'returns the correct icon for the given category' do expect(teachers_and_leadership_presenter.icon_class).to eq 'fas fa-apple-alt' expect(school_culture_presenter.icon_class).to eq 'fas fa-school' expect(resources_presenter.icon_class).to eq 'fas fa-users-cog' expect(academic_learning_presenter.icon_class).to eq 'fas fa-graduation-cap' expect(community_and_wellbeing_presenter.icon_class).to eq 'fas fa-heart' end it 'returns the correct color for the given category' do expect(teachers_and_leadership_presenter.icon_color_class).to eq 'color-blue' expect(school_culture_presenter.icon_color_class).to eq 'color-red' expect(resources_presenter.icon_color_class).to eq 'color-black' expect(academic_learning_presenter.icon_color_class).to eq 'color-lime' expect(community_and_wellbeing_presenter.icon_color_class).to eq 'color-teal' end end