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
    } catch (Exception e) {
53
      throw new IllegalStateException(
54
          "Failed to get organization ID for org: " + course.getOrgName() + " - " + e.getMessage(),
55
          e);
56
    }
57
58
    try {
59
      TeamStatus newStatus =
60
          githubTeamService.addMemberToGithubTeam(
61
              memberGithubLogin, githubTeamId, "member", course, orgId);
62
      ctx.log(
63
          "Successfully added " + memberGithubLogin + " to Github team with status: " + newStatus);
64
65
      TeamMember teamMember = teamMemberRepository.findById(teamMemberId).orElse(null);
66 1 1. accept : negated conditional → KILLED
      if (teamMember != null) {
67 1 1. accept : removed call to edu/ucsb/cs156/frontiers/entities/TeamMember::setTeamStatus → KILLED
        teamMember.setTeamStatus(newStatus);
68
        teamMemberRepository.save(teamMember);
69
        ctx.log("Updated team member status in database");
70
      } else {
71
        ctx.log("ERROR: Could not find team member in database with ID: " + teamMemberId);
72
      }
73
    } catch (Exception e) {
74
      throw new IllegalStateException("Failed to add user to GitHub team: " + e.getMessage(), e);
75
    }
76
77
    ctx.log("Done");
78
  }
79
}

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_AddTeamMemberFailure()]
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

66

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

67

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