ashirahattia/cs169-pgm

View on GitHub
spec/matches_helper_spec.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "spec_helper"

describe MatchesHelper, :type => :helper do

    it 'returns the project preference number' do
        fake_project1 = Project.create(:project_name => "Project1", :id => 1)
        fake_project2 = Project.create(:project_name => "Project2", :id => 2)
        fake_project3 = Project.create(:project_name => "Project3", :id => 3)
        fake_project4 = Project.create(:project_name => "Project4", :id => 4)
        fake_project5 = Project.create(:project_name => "Project5", :id => 5)
        fake_project6 = Project.create(:project_name => "Project6", :id => 6)
        fake_project7 = Project.create(:project_name => "Project7", :id => 7)
        fake_project8 = Project.create(:project_name => "Project8", :id => 8)

        fake_group1 = Group.create(:id => 1, :first_choice => 1, :second_choice => 2, :third_choice => 3, :fourth_choice => 4, :fifth_choice => 5, :sixth_choice => 6, :seventh_choice => 7)

        fake_match1 = Match.new(:project_id => 1, :group_id => 1)
        fake_match2 = Match.new(:project_id => 2, :group_id => 1)
        fake_match3 = Match.new(:project_id => 3, :group_id => 1)
        fake_match4 = Match.new(:project_id => 4, :group_id => 1)
        fake_match5 = Match.new(:project_id => 5, :group_id => 1)
        fake_match6 = Match.new(:project_id => 6, :group_id => 1)
        fake_match7 = Match.new(:project_id => 7, :group_id => 1)
        fake_match8 = Match.new(:project_id => 8, :group_id => 1)

        helper.choice_num(fake_match1).should eql(1)
        helper.choice_num(fake_match2).should eql(2)
        helper.choice_num(fake_match3).should eql(3)
        helper.choice_num(fake_match4).should eql(4)
        helper.choice_num(fake_match5).should eql(5)
        helper.choice_num(fake_match6).should eql(6)
        helper.choice_num(fake_match7).should eql(7)
        helper.choice_num(fake_match8).should eql(8)
        
        allow(Match).to receive(:all) { [fake_match1] }
        
        helper.num_with_preference(1).should eql(1)
    end

    it 'finds the right background color for the rank' do
        fake_project1 = Project.new(:project_name => "Project1", :id => 1)
        fake_project2 = Project.new(:project_name => "Project2", :id => 2)
        fake_project3 = Project.new(:project_name => "Project3", :id => 3)
        fake_project4 = Project.new(:project_name => "Project4", :id => 4)
        fake_project5 = Project.new(:project_name => "Project5", :id => 5)
        fake_project6 = Project.new(:project_name => "Project6", :id => 6)
        fake_project7 = Project.new(:project_name => "Project7", :id => 7)

        allow(Project).to receive(:find_by).with(:project_id => 1) { fake_project1 }
        allow(Project).to receive(:find_by).with(:project_id => 2) { fake_project2 }
        allow(Project).to receive(:find_by).with(:project_id => 3) { fake_project3 }
        allow(Project).to receive(:find_by).with(:project_id => 4) { fake_project4 }
        allow(Project).to receive(:find_by).with(:project_id => 5) { fake_project5 }
        allow(Project).to receive(:find_by).with(:project_id => 6) { fake_project6 }
        allow(Project).to receive(:find_by).with(:project_id => 7) { fake_project7 }
        
        fake_group1 = Group.new(:id => 1, :first_choice => 1, :second_choice => 2, :third_choice => 3, :fourth_choice => 4, :fifth_choice => 5, :sixth_choice => 6, :seventh_choice => 7)
        
        allow(Group).to receive(:where).with(:group_id => 1) { [fake_group1] }
        
        fake_match1 = Match.new(:project_id => 1, :group_id => 1)
        fake_match2 = Match.new(:project_id => 5, :group_id => 1)
        fake_match3 = Match.new(:project_id => 7, :group_id => 1)
        
        helper.should_receive(:choice_num).with(fake_match1).and_return(1)
        helper.should_receive(:choice_num).with(fake_match2).and_return(5)
        helper.should_receive(:choice_num).with(fake_match3).and_return(7)
        
        helper.rank_color(fake_match1).should eql("bg-green")
        helper.rank_color(fake_match2).should eql("bg-yellow")
        helper.rank_color(fake_match3).should eql("bg-red")
        
    end
    
    it 'finds unmatched projects' do
        fake_project1 = Project.new(:project_name => "Project1", :id => 1)
        fake_project2 = Project.new(:project_name => "Project2", :id => 2)
        fake_project3 = Project.new(:project_name => "Project3", :id => 3)
        fake_project4 = Project.new(:project_name => "Project4", :id => 4)
        fake_project5 = Project.new(:project_name => "Project5", :id => 5)
        fake_project6 = Project.new(:project_name => "Project6", :id => 6)
        fake_project7 = Project.new(:project_name => "Project7", :id => 7)

        allow(Project).to receive(:all) { [fake_project1, fake_project2, fake_project3, fake_project4, fake_project5, fake_project6, fake_project7] }
        allow(Project).to receive(:find_by).with(:project_id => 1) { fake_project1 }
        allow(Project).to receive(:find_by).with(:project_id => 2) { fake_project2 }
        allow(Project).to receive(:find_by).with(:project_id => 3) { fake_project3 }
        allow(Project).to receive(:find_by).with(:project_id => 4) { fake_project4 }
        allow(Project).to receive(:find_by).with(:project_id => 5) { fake_project5 }
        allow(Project).to receive(:find_by).with(:project_id => 6) { fake_project6 }
        allow(Project).to receive(:find_by).with(:project_id => 7) { fake_project7 }
        
        # fake_group1 = Group.new(:id => 1, :first_choice => 1, :second_choice => 2, :third_choice => 3, :fourth_choice => 4, :fifth_choice => 5, :sixth_choice => 6, :seventh_choice => 7)
        
        # allow(Group).to receive(:where).with(:group_id => 1) { [fake_group1] }
        
        Match.new(:project_id => 1, :group_id => 1)
        Match.new(:project_id => 5, :group_id => 1)
        Match.new(:project_id => 7, :group_id => 1)
        
        allow(Match).to receive(:pluck).with(:project_id) { [1, 5, 7] }

        helper.find_unmatched_projects.should eql([fake_project2,fake_project3,fake_project4,fake_project6])
    end

end