CSC/ECE 517 Fall 2018/E1852 Unit Test for Participant Model
Expertiza
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.
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
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 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.