RecommendationRequestController.java

1
package edu.ucsb.cs156.rec.controllers;
2
3
import edu.ucsb.cs156.rec.entities.RecommendationRequest;
4
import edu.ucsb.cs156.rec.entities.RequestType;
5
import edu.ucsb.cs156.rec.entities.User;
6
import edu.ucsb.cs156.rec.errors.EntityNotFoundException;
7
import edu.ucsb.cs156.rec.models.CurrentUser;
8
import edu.ucsb.cs156.rec.repositories.RecommendationRequestRepository;
9
import edu.ucsb.cs156.rec.repositories.RequestTypeRepository;
10
import edu.ucsb.cs156.rec.repositories.UserRepository;
11
import io.swagger.v3.oas.annotations.Operation;
12
import io.swagger.v3.oas.annotations.Parameter;
13
import io.swagger.v3.oas.annotations.tags.Tag;
14
15
import java.time.LocalDateTime;
16
17
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.format.annotation.DateTimeFormat;
19
import org.springframework.security.access.prepost.PreAuthorize;
20
import org.springframework.web.bind.annotation.DeleteMapping;
21
import org.springframework.web.bind.annotation.GetMapping;
22
import org.springframework.web.bind.annotation.PutMapping;
23
import org.springframework.web.bind.annotation.PostMapping;
24
import org.springframework.web.bind.annotation.RequestMapping;
25
import org.springframework.web.bind.annotation.RequestBody;
26
import org.springframework.web.bind.annotation.RequestParam;
27
import org.springframework.web.bind.annotation.RestController;
28
import jakarta.validation.Valid;
29
import lombok.extern.slf4j.Slf4j;
30
31
@Tag(name = "RecommendationRequest")
32
@RequestMapping("/api/recommendationrequest")
33
@RestController
34
@Slf4j
35
public class RecommendationRequestController extends ApiController {
36
  
37
    @Autowired
38
    RecommendationRequestRepository recommendationRequestRepository;
39
40
    @Autowired
41
    UserRepository userRepository;
42
43
    @Autowired
44
    RequestTypeRepository requestTypeRepository;
45
46
    /**
47
     * Any admin can delete a RecommendationRequest
48
     * 
49
     * @param id the id of the RecommendationRequest to delete
50
     * @return a message indicating that the RecommendationRequest was deleted
51
     */
52
    @Operation(summary = "An admin can delete a RecommendationRequest")
53
    @PreAuthorize("hasRole('ROLE_ADMIN')")
54
    @DeleteMapping("/admin")
55
    public Object deleteRecommendationRequestAsAdmin(@Parameter(name = "id") @RequestParam Long id) {
56
        RecommendationRequest recommendationRequest = 
57
        recommendationRequestRepository
58
            .findById(id)
59 1 1. lambda$deleteRecommendationRequestAsAdmin$0 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$deleteRecommendationRequestAsAdmin$0 → KILLED
            .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
60
61 1 1. deleteRecommendationRequestAsAdmin : removed call to edu/ucsb/cs156/rec/repositories/RecommendationRequestRepository::delete → KILLED
        recommendationRequestRepository.delete(recommendationRequest);
62
63 1 1. deleteRecommendationRequestAsAdmin : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::deleteRecommendationRequestAsAdmin → KILLED
        return genericMessage("RecommendationRequest with id %s deleted".formatted(id));
64
    }
65
66
    /**
67
     * The user who posted a RecommendationRequest can delete their RecommendationRequest
68
     * 
69
     * @param id the id of the RecommendationRequest to delete
70
     * @return a message indicating that the RecommendationRequest was deleted
71
     */
72
    @Operation(summary = "User can delete their RecommendationRequest")
73
    @PreAuthorize("hasRole('ROLE_USER')")
74
    @DeleteMapping("")
75
    public Object deleteRecommendationRequestAsUser(@Parameter(name = "id") @RequestParam Long id) {
76
        User currentUser = getCurrentUser().getUser(); 
77
        RecommendationRequest recommendationRequest = 
78
        recommendationRequestRepository
79
            .findByIdAndRequester(id, currentUser)
80 1 1. lambda$deleteRecommendationRequestAsUser$1 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$deleteRecommendationRequestAsUser$1 → KILLED
            .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
81
82 1 1. deleteRecommendationRequestAsUser : removed call to edu/ucsb/cs156/rec/repositories/RecommendationRequestRepository::delete → KILLED
        recommendationRequestRepository.delete(recommendationRequest);
83
84 1 1. deleteRecommendationRequestAsUser : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::deleteRecommendationRequestAsUser → KILLED
        return genericMessage("RecommendationRequest with id %s deleted".formatted(id));
85
    }
86
87
    /**
88
     * The user who posted a RecommendationRequest can update their RecommendationRequest
89
     * 
90
     * @param id       the id of the Recommendation Request to update
91
     * @param incoming the updated Recommendation Request
92
     * @return the updated Recommendation Request object
93
     */
94
    @Operation(summary = "User can update their RecommendationRequest")
95
    @PreAuthorize("hasRole('ROLE_USER')")
96
    @PutMapping("")
97
    public RecommendationRequest updateRecommendationRequestAsUser( 
98
        @Parameter(name = "id") @RequestParam Long id,
99
        @RequestBody @Valid RecommendationRequest incoming) {
100
101
        User currentUser = getCurrentUser().getUser(); 
102
        RecommendationRequest recommendationRequest = 
103
            recommendationRequestRepository
104
                .findByIdAndRequester(id, currentUser)
105 1 1. lambda$updateRecommendationRequestAsUser$2 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$updateRecommendationRequestAsUser$2 → KILLED
                .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
106
107 1 1. updateRecommendationRequestAsUser : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDetails → KILLED
        recommendationRequest.setDetails(incoming.getDetails());
108
109
        recommendationRequestRepository.save(recommendationRequest);
110
           
111 1 1. updateRecommendationRequestAsUser : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::updateRecommendationRequestAsUser → KILLED
        return recommendationRequest;    
112
    }
113
114
     /**
115
     * Prof can update a Recommendation Request's status
116
     * 
117
     * @param id       the id of the Recommendation Request to update
118
     * @param incoming the updated Recommendation Request
119
     * @return the updated Recommendation Request object
120
     */
121
    @Operation(summary = "A Professor can update a recommendation request's status")
122
    @PreAuthorize("hasRole('ROLE_PROFESSOR')")
123
    @PutMapping("/professor")
124
    public RecommendationRequest updateRecommendationRequestAsAdmin(
125
        @Parameter(name = "id") @RequestParam Long id,
126
        @RequestBody @Valid RecommendationRequest incoming) {
127
128
        RecommendationRequest recommendationRequest = 
129
            recommendationRequestRepository
130
                .findById(id)
131 1 1. lambda$updateRecommendationRequestAsAdmin$3 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$updateRecommendationRequestAsAdmin$3 → KILLED
                .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
132
133 1 1. updateRecommendationRequestAsAdmin : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setStatus → KILLED
        recommendationRequest.setStatus(incoming.getStatus());
134
135
        // set the date when professor accepts or denies request
136 2 1. updateRecommendationRequestAsAdmin : negated conditional → KILLED
2. updateRecommendationRequestAsAdmin : negated conditional → KILLED
        if (incoming.getStatus().equals("ACCEPTED") || incoming.getStatus().equals("DENIED")) {
137 1 1. updateRecommendationRequestAsAdmin : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDateAcceptedOrDenied → KILLED
            recommendationRequest.setDateAcceptedOrDenied(LocalDateTime.now());
138
        }
139
140
        // set the date when professor completes the request
141 2 1. updateRecommendationRequestAsAdmin : negated conditional → KILLED
2. updateRecommendationRequestAsAdmin : negated conditional → KILLED
        if (incoming.getStatus().equals("COMPLETED") || incoming.getStatus().equals("DENIED")) {
142 1 1. updateRecommendationRequestAsAdmin : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setCompletionDate → KILLED
            recommendationRequest.setCompletionDate(LocalDateTime.now());
143
        }
144 2 1. updateRecommendationRequestAsAdmin : negated conditional → KILLED
2. updateRecommendationRequestAsAdmin : negated conditional → KILLED
        else if (incoming.getStatus().equals("PENDING") || incoming.getStatus().equals("ACCEPTED")) {
145 1 1. updateRecommendationRequestAsAdmin : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setCompletionDate → KILLED
            recommendationRequest.setCompletionDate(null);
146
        }
147
        else {
148
            throw new IllegalArgumentException(String.format("Unknown Request Status: %s", incoming.getStatus()));
149
        }
150
151
        recommendationRequestRepository.save(recommendationRequest);
152
153 1 1. updateRecommendationRequestAsAdmin : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::updateRecommendationRequestAsAdmin → KILLED
        return recommendationRequest;
154
    }
155
156
    /**
157
     * This method returns a list of all Recommendation Requests requested by current student.
158
     * @return a list of all Recommendation Requests requested by the current user
159
     */
160
    @Operation(summary = "List all Recommendation Requests requested by current user")
161
    @PreAuthorize("hasRole('ROLE_USER')")
162
    @GetMapping("/requester/all")
163
    public Iterable<RecommendationRequest> allRequesterRecommendationRequests(
164
    ) {
165
        // toyed with having this only be ROLE_STUDENT but I think even professors should be able to submit requests so they can see which ones they have submitted too
166
        User currentUser = getCurrentUser().getUser();
167
        Iterable<RecommendationRequest> recommendationRequests = recommendationRequestRepository.findAllByRequesterId(currentUser.getId());
168 1 1. allRequesterRecommendationRequests : replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::allRequesterRecommendationRequests → KILLED
        return recommendationRequests;
169
    }
170
171
    /**
172
     * This method returns a list of all Recommendation Requests intended for current user who is a professor.
173
     * @return a list of all Recommendation Requests intended for the current user who is a professor
174
     */
175
    @Operation(summary = "List all Recommendation Requests for professor")
176
    @PreAuthorize("hasRole('ROLE_PROFESSOR')")
177
    @GetMapping("/professor/all")
178
    public Iterable<RecommendationRequest> allProfessorRecommendationRequests(
179
    ) {
180
        User currentUser = getCurrentUser().getUser();
181
        Iterable<RecommendationRequest> recommendationRequests = recommendationRequestRepository.findAllByProfessorId(currentUser.getId());
182 1 1. allProfessorRecommendationRequests : replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::allProfessorRecommendationRequests → KILLED
        return recommendationRequests;
183
    }
184
185
    /**
186
     * This method returns a single recommendation request where the current user is either the requester or the professor.
187
     * @param id id of the Recommendation Requests to get
188
     * @return a single recommendation request where the current user is either the requester or the professor
189
     */
190
    @Operation(summary = "Get a single recommendation request where the current user is either the requester or the professor")
191
    @PreAuthorize("hasRole('ROLE_USER')")
192
    @GetMapping("")
193
    public RecommendationRequest getById(
194
            @Parameter(name = "id") @RequestParam Long id) {
195
            Long currentUserId = getCurrentUser().getUser().getId();
196
            RecommendationRequest recommendationRequest = recommendationRequestRepository.findById(id)
197 1 1. lambda$getById$4 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$getById$4 → KILLED
                .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
198 2 1. getById : negated conditional → KILLED
2. getById : negated conditional → KILLED
            if (recommendationRequest.getRequester().getId() != currentUserId && recommendationRequest.getProfessor().getId() != currentUserId) {
199
                throw new EntityNotFoundException(RecommendationRequest.class, id);
200
            }
201 1 1. getById : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getById → KILLED
        return recommendationRequest;
202
    }
203
204
    /**
205
     * This method creates a new Recommendation Request. Accessible only to users with the role "ROLE_USER" so professors and students can both create.
206
     * @param professorId id from a dropdown of professors from the form in create page
207
     * @param recommendationTypeId id of the recommendation type from the RequestType table
208
     * @param details details of request
209
     * @param dueDate submission date of request
210
     * @return the save recommendationrequests (with it's id field set by the database)
211
     */
212
213
    @Operation(summary = "Create a new recommendation request")
214
    @PreAuthorize("hasRole('ROLE_USER')")
215
    @PostMapping("/post")
216
    public RecommendationRequest postRecommendationRequests(
217
            @Parameter(name = "professorId") @RequestParam Long professorId,
218
            @Parameter(name = "recommendationTypeId") @RequestParam Long recommendationTypeId,
219
            @Parameter(name = "details") @RequestParam String details,
220
            @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime dueDate)
221
            {
222
        //get current date right now and set status to pending
223
        CurrentUser currentUser = getCurrentUser();
224
        RecommendationRequest recommendationRequest = new RecommendationRequest();
225
226 1 1. lambda$postRecommendationRequests$5 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$postRecommendationRequests$5 → KILLED
        RequestType requestType = requestTypeRepository.findById(recommendationTypeId).orElseThrow(() -> new IllegalArgumentException(String.format("Unknown Request Type ID: %d", recommendationTypeId)));
227
        
228 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setRecommendationType → KILLED
        recommendationRequest.setRecommendationType(requestType);
229 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDetails → KILLED
        recommendationRequest.setDetails(details);
230 1 1. lambda$postRecommendationRequests$6 : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$postRecommendationRequests$6 → KILLED
        User professor = userRepository.findById(professorId).orElseThrow(() -> new EntityNotFoundException(User.class, professorId));
231 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setProfessor → KILLED
        recommendationRequest.setProfessor(professor);
232 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setRequester → KILLED
        recommendationRequest.setRequester(currentUser.getUser());
233 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setStatus → KILLED
        recommendationRequest.setStatus("PENDING");
234 1 1. postRecommendationRequests : removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDueDate → KILLED
        recommendationRequest.setDueDate(dueDate);
235
        RecommendationRequest savedRecommendationRequest = recommendationRequestRepository.save(recommendationRequest);
236 1 1. postRecommendationRequests : replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::postRecommendationRequests → KILLED
        return savedRecommendationRequest;
237
    }
238
239
    /**
240
     * This method returns a list of recommendation requests with specified status for a professor.
241
     * @return a list of recommendation requests with specified status for a professor.
242
     */
243
    @Operation(summary = "Get all recommendation requests with specified status for a professor")
244
    @GetMapping("/professor/filtered")
245
    @PreAuthorize("hasRole('ROLE_PROFESSOR')")
246
    public Iterable<RecommendationRequest> getRecommendationRequestByStatusForProfessor(
247
        @RequestParam String status) {
248
        User currentUser = getCurrentUser().getUser();
249
250 1 1. getRecommendationRequestByStatusForProfessor : replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getRecommendationRequestByStatusForProfessor → KILLED
        return recommendationRequestRepository.findAllByProfessorIdAndStatus(
251
            currentUser.getId(), status);
252
    }
253
254
    /**
255
     * This methods return a list of all the recommendation requests for the admin.
256
     * @return a list of all the recommendation requests.
257
     */
258
    @Operation(summary = "Get all recommendation requests for the admin")
259
    @GetMapping("/admin/all")
260
    @PreAuthorize("hasRole('ROLE_ADMIN')")
261
    public Iterable<RecommendationRequest> getAllRecommendationRequest(){
262 1 1. getAllRecommendationRequest : replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getAllRecommendationRequest → KILLED
        return recommendationRequestRepository.findAll();
263
    }
264
    
265
}

Mutations

59

1.1
Location : lambda$deleteRecommendationRequestAsAdmin$0
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:admin_can_not_delete_recommendation_request_that_does_not_exist()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$deleteRecommendationRequestAsAdmin$0 → KILLED

61

1.1
Location : deleteRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:admin_can_delete_recommendation_request()]
removed call to edu/ucsb/cs156/rec/repositories/RecommendationRequestRepository::delete → KILLED

63

1.1
Location : deleteRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:admin_can_delete_recommendation_request()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::deleteRecommendationRequestAsAdmin → KILLED

80

1.1
Location : lambda$deleteRecommendationRequestAsUser$1
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_can_not_delete_belonging_to_another_user()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$deleteRecommendationRequestAsUser$1 → KILLED

82

1.1
Location : deleteRecommendationRequestAsUser
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_can_delete_their_recommendation_request()]
removed call to edu/ucsb/cs156/rec/repositories/RecommendationRequestRepository::delete → KILLED

84

1.1
Location : deleteRecommendationRequestAsUser
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_can_delete_their_recommendation_request()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::deleteRecommendationRequestAsUser → KILLED

105

1.1
Location : lambda$updateRecommendationRequestAsUser$2
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_can_not_put_recommendation_request_that_does_not_exist()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$updateRecommendationRequestAsUser$2 → KILLED

107

1.1
Location : updateRecommendationRequestAsUser
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_logged_in_put_recommendation_request()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDetails → KILLED

111

1.1
Location : updateRecommendationRequestAsUser
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:user_logged_in_put_recommendation_request()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::updateRecommendationRequestAsUser → KILLED

131

1.1
Location : lambda$updateRecommendationRequestAsAdmin$3
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_not_put_recommendation_request_that_does_not_exist()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$updateRecommendationRequestAsAdmin$3 → KILLED

133

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setStatus → KILLED

136

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_doesnt_update_status_and_dateAcceptedOrDenied_should_not_update()]
negated conditional → KILLED

2.2
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_doesnt_update_status_and_dateAcceptedOrDenied_should_not_update()]
negated conditional → KILLED

137

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_change_status_from_pending_to_accepted_and_dateAcceptedOrDenied_is_set()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDateAcceptedOrDenied → KILLED

141

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null_2()]
negated conditional → KILLED

2.2
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null_2()]
negated conditional → KILLED

142

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setCompletionDate → KILLED

144

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null()]
negated conditional → KILLED

2.2
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null_2()]
negated conditional → KILLED

145

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null_2()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setCompletionDate → KILLED

153

1.1
Location : updateRecommendationRequestAsAdmin
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:prof_can_put_recommendation_request_back_to_pending_completion_date_sets_to_null_2()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::updateRecommendationRequestAsAdmin → KILLED

168

1.1
Location : allRequesterRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:logged_in_user_can_get_all_recommendation_requests_by_them()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::allRequesterRecommendationRequests → KILLED

182

1.1
Location : allProfessorRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:logged_in_professors_can_get_all_recommendation_requests_for_them()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::allProfessorRecommendationRequests → KILLED

197

1.1
Location : lambda$getById$4
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:test_that_logged_in_user_can_get_by_id_when_the_id_does_not_exist()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$getById$4 → KILLED

198

1.1
Location : getById
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:test_that_logged_in_user_can_get_by_id_when_the_id_exists_and_they_are_requester()]
negated conditional → KILLED

2.2
Location : getById
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:test_that_logged_in_user_can_get_by_id_when_the_id_exists_and_they_are_professor()]
negated conditional → KILLED

201

1.1
Location : getById
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:test_that_logged_in_user_can_get_by_id_when_the_id_exists_and_they_are_professor()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getById → KILLED

226

1.1
Location : lambda$postRecommendationRequests$5
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:rec_type_not_table_and_not_other()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$postRecommendationRequests$5 → KILLED

228

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setRecommendationType → KILLED

229

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDetails → KILLED

230

1.1
Location : lambda$postRecommendationRequests$6
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_without_existing_professor()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::lambda$postRecommendationRequests$6 → KILLED

231

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setProfessor → KILLED

232

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setRequester → KILLED

233

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setStatus → KILLED

234

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
removed call to edu/ucsb/cs156/rec/entities/RecommendationRequest::setDueDate → KILLED

236

1.1
Location : postRecommendationRequests
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:a_user_can_post_a_new_recommendation_request_with_existing_professor()]
replaced return value with null for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::postRecommendationRequests → KILLED

250

1.1
Location : getRecommendationRequestByStatusForProfessor
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestTests]/[method:test_professor_can_get_recommendation_request_by_type()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getRecommendationRequestByStatusForProfessor → KILLED

262

1.1
Location : getAllRecommendationRequest
Killed by : edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest.[engine:junit-jupiter]/[class:edu.ucsb.cs156.rec.controllers.RecommendationRequestControllerTest]/[method:admin_can_get_all_requests()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/rec/controllers/RecommendationRequestController::getAllRecommendationRequest → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0