RemoveStudentsJob.java

1
package edu.ucsb.cs156.frontiers.jobs;
2
3
import edu.ucsb.cs156.frontiers.entities.Course;
4
import edu.ucsb.cs156.frontiers.entities.RosterStudent;
5
import edu.ucsb.cs156.frontiers.enums.OrgStatus;
6
import edu.ucsb.cs156.frontiers.repositories.RosterStudentRepository;
7
import edu.ucsb.cs156.frontiers.services.OrganizationMemberService;
8
import edu.ucsb.cs156.frontiers.services.jobs.JobContext;
9
import edu.ucsb.cs156.frontiers.services.jobs.JobContextConsumer;
10
import java.util.List;
11
import lombok.Builder;
12
import lombok.EqualsAndHashCode;
13
import org.springframework.http.HttpStatus;
14
import org.springframework.web.client.HttpStatusCodeException;
15
16
@Builder
17
@EqualsAndHashCode
18
public class RemoveStudentsJob implements JobContextConsumer {
19
  private OrganizationMemberService organizationMemberService;
20
  private List<RosterStudent> students;
21
  private RosterStudentRepository rosterStudentRepository;
22
23
  @Override
24
  public Course getCourse() {
25
    return null;
26
  }
27
28
  @Override
29
  public void accept(JobContext c) throws Exception {
30
    for (RosterStudent student : students) {
31 1 1. accept : negated conditional → KILLED
      if (student.getCourse().getOrgName() != null
32 1 1. accept : negated conditional → KILLED
          && student.getCourse().getInstallationId() != null) {
33 2 1. accept : negated conditional → KILLED
2. accept : negated conditional → KILLED
        if (student.getGithubLogin() != null && student.getGithubId() != null) {
34
          try {
35 1 1. accept : removed call to edu/ucsb/cs156/frontiers/services/OrganizationMemberService::removeOrganizationMember → KILLED
            organizationMemberService.removeOrganizationMember(student);
36
            c.log("Removed student %s from Organization".formatted(student.getGithubLogin()));
37
          } catch (HttpStatusCodeException e) {
38 1 1. accept : negated conditional → KILLED
            if (e.getStatusCode() == HttpStatus.NOT_FOUND) {
39
              c.log("Student %s not in Organization".formatted(student.getGithubLogin()));
40
            } else {
41
              throw new RuntimeException(e);
42
            }
43
          }
44 1 1. accept : removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setGithubId → KILLED
          student.setGithubId(null);
45 1 1. accept : removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setGithubLogin → KILLED
          student.setGithubLogin(null);
46 1 1. accept : removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setOrgStatus → KILLED
          student.setOrgStatus(OrgStatus.REMOVED);
47
          rosterStudentRepository.save(student);
48
        }
49
      }
50
    }
51
  }
52
}

Mutations

31

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:spammed_stops_job()]
negated conditional → KILLED

32

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:testAccept_incompleteCourseData_doesNotCallRemoveOrganizationMember()]
negated conditional → KILLED

33

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:testAccept_incompleteGithubData_doesNotCallRemoveOrganizationMember()]
negated conditional → KILLED

2.2
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:spammed_stops_job()]
negated conditional → KILLED

35

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:spammed_stops_job()]
removed call to edu/ucsb/cs156/frontiers/services/OrganizationMemberService::removeOrganizationMember → KILLED

38

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:spammed_stops_job()]
negated conditional → KILLED

44

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:testAccept_validStudents_callsRemoveOrganizationMember()]
removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setGithubId → KILLED

45

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:testAccept_validStudents_callsRemoveOrganizationMember()]
removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setGithubLogin → KILLED

46

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.RemoveStudentsJobTests]/[method:testAccept_validStudents_callsRemoveOrganizationMember()]
removed call to edu/ucsb/cs156/frontiers/entities/RosterStudent::setOrgStatus → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0