CSC/ECE 517 Fall 2018/E1852 Unit Test for Participant Model
Test Cases
TASKS IDENTIFIED
Test team
A Participant can be a member of a Team. When team method is called on a Participant, it should return the Team it belongs to.
describe "#team" do
  it "returns the team id for the user" do
    expect(participant.team).to eq(nil)
  end   
end
Test responses
   def responses
    response_maps.map(&:response)
   end
A Participant has many ResponseMaps that map a connection between this participant as a reviewer and as a reviewee. Each ResponseMap has many Responses associated with it. When responses method is called on a Participant, it should return an array of responses associated to this Participant.
 describe '#responses' do
     it 'returns an array of responses of the participant' do
       expect(participant.responses).to eql([])
     end
end
The above test will test a participant with no corresponding mapping. Hence the result of the responses provided by the participant is a nil list
Test name
 def name(ip_address = nil)
    self.user.name(ip_address)
end
 describe "#name" do
    it "returns the name of the user" do
      expect(participant.name).to eq "Student"
    end
end
A Participant is a User. When name method is called on a Participant, it should return the name of this User.
Link title
Test fullname
  def fullname(ip_address = nil)
    self.user.fullname(ip_address)
end
A Participant is a User. When fullname method is called on a Participant, it should return the full name of this User.
Test handle
  def handle(ip_address = nil)
    User.anonymized_view?(ip_address) ? 'handle' : self[:handle]
end
Test delete
  def delete(force = nil)
    maps = ResponseMap.where('reviewee_id = ? or reviewer_id = ?', self.id, self.id)
    if force or (maps.blank? and self.team.nil?)
      force_delete(maps)
    else
      raise "Associations exist for this participant."
    end
end
Test force_delete
 
 def force_delete(maps)
    maps and maps.each(&:destroy)
    if self.team and self.team.teams_users.length == 1
      self.team.delete
    elsif self.team
      self.team.teams_users.each {|teams_user| teams_user.destroy if teams_user.user_id == self.id }
    end
    self.destroy
end
Test topic_name
 
 describe '#topic_name' do     
     context 'when the participant has an assignment without a topic' do
       it 'returns error message' do
         expect(participant.topic_name).to eql('<center>—</center>')
       end
end
Test able_to_review
def able_to_review can_review end
When able_to_review method is called on a Participant, it should return true if it can review and false otherwise.
Test email
Test scores
When scores method is called on a Participant, it should return the total scores it received for a given number of questions.
Test get_permissions
Test get_authorization
Test sort_by_name
Participants are Users. When self.sort_by_name method is called on a Participant, it should sort a given set of participants based on their usernames.