AddTeamMemberToGithubJob.java

1
package edu.ucsb.cs156.frontiers.jobs;
2
3
import edu.ucsb.cs156.frontiers.entities.Course;
4
import edu.ucsb.cs156.frontiers.entities.TeamMember;
5
import edu.ucsb.cs156.frontiers.enums.TeamStatus;
6
import edu.ucsb.cs156.frontiers.repositories.TeamMemberRepository;
7
import edu.ucsb.cs156.frontiers.services.GithubTeamService;
8
import edu.ucsb.cs156.frontiers.services.jobs.JobContext;
9
import edu.ucsb.cs156.frontiers.services.jobs.JobContextConsumer;
10
import lombok.Builder;
11
12
@Builder
13
public class AddTeamMemberToGithubJob implements JobContextConsumer {
14
  String memberGithubLogin;
15
  Integer githubTeamId;
16
  Long teamMemberId;
17
  Course course;
18
  GithubTeamService githubTeamService;
19
  TeamMemberRepository teamMemberRepository;
20
21
  @Override
22
  public Course getCourse() {
23 1 1. getCourse : replaced return value with null for edu/ucsb/cs156/frontiers/jobs/AddTeamMemberToGithubJob::getCourse → KILLED
    return course;
24
  }
25
26
  @Override
27
  public void accept(JobContext ctx) throws Exception {
28
    ctx.log(
29
        "Starting add team member to GitHub job for team ID "
30
            + githubTeamId
31
            + " member "
32
            + memberGithubLogin);
33
34 1 1. accept : negated conditional → KILLED
    if (githubTeamId == null) {
35
      ctx.log("ERROR: Team has no GitHub team ID");
36
      return;
37
    }
38
39 1 1. accept : negated conditional → KILLED
    if (memberGithubLogin == null) {
40
      ctx.log("ERROR: Team member has no GitHub login");
41
      return;
42
    }
43
44 2 1. accept : negated conditional → KILLED
2. accept : negated conditional → KILLED
    if (course.getOrgName() == null || course.getInstallationId() == null) {
45
      ctx.log("ERROR: Course has no linked GitHub organization");
46
      return;
47
    }
48
49
    Integer orgId = null;
50
    try {
51
      orgId = githubTeamService.getOrgId(course.getOrgName(), course);
52
53
    } catch (Exception e) {
54
      ctx.log(
55
          "ERROR: Failed to get organization ID for org: "
56
              + course.getOrgName()
57
              + " - "
58
              + e.getMessage());
59
      return;
60
    }
61
62
    try {
63
      TeamStatus newStatus =
64
          githubTeamService.addMemberToGithubTeam(
65
              memberGithubLogin, githubTeamId, "member", course, orgId);
66
      ctx.log(
67
          "Successfully added " + memberGithubLogin + " to Github team with status: " + newStatus);
68
69
      TeamMember teamMember = teamMemberRepository.findById(teamMemberId).orElse(null);
70 1 1. accept : negated conditional → KILLED
      if (teamMember != null) {
71 1 1. accept : removed call to edu/ucsb/cs156/frontiers/entities/TeamMember::setTeamStatus → KILLED
        teamMember.setTeamStatus(newStatus);
72
        teamMemberRepository.save(teamMember);
73
        ctx.log("Updated team member status in database");
74
      } else {
75
        ctx.log("ERROR: Could not find team member in database with ID: " + teamMemberId);
76
      }
77
    } catch (Exception e) {
78
      ctx.log("ERROR: Failed to add user to GitHub team: " + e.getMessage());
79
    }
80
81
    ctx.log("Done");
82
  }
83
}

Mutations

23

1.1
Location : getCourse
Killed by : edu.ucsb.cs156.frontiers.jobs.AddTeamMemberToGithubJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.AddTeamMemberToGithubJobTests]/[method:test_getCourse_returnsCourse()]
replaced return value with null for edu/ucsb/cs156/frontiers/jobs/AddTeamMemberToGithubJob::getCourse → KILLED

34

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

39

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

44

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

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

70

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

71

1.1
Location : accept
Killed by : edu.ucsb.cs156.frontiers.jobs.AddTeamMemberToGithubJobTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.jobs.AddTeamMemberToGithubJobTests]/[method:test_successfully_add_team_member_and_update_status()]
removed call to edu/ucsb/cs156/frontiers/entities/TeamMember::setTeamStatus → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0