CSC/ECE 517 Fall 2018/E1852 Unit Test for Participant Model

From Expertiza_Wiki
Revision as of 21:08, 2 November 2018 by Rshakya (talk | contribs)
Jump to navigation Jump to search

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.