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.