RecommendationRequestController.java

1
package edu.ucsb.cs156.example.controllers;
2
3
import java.time.LocalDateTime;
4
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.format.annotation.DateTimeFormat;
7
import org.springframework.security.access.prepost.PreAuthorize;
8
import org.springframework.web.bind.annotation.DeleteMapping;
9
import org.springframework.web.bind.annotation.GetMapping;
10
import org.springframework.web.bind.annotation.PostMapping;
11
import org.springframework.web.bind.annotation.PutMapping;
12
import org.springframework.web.bind.annotation.RequestBody;
13
import org.springframework.web.bind.annotation.RequestMapping;
14
import org.springframework.web.bind.annotation.RequestParam;
15
import org.springframework.web.bind.annotation.RestController;
16
17
import com.fasterxml.jackson.core.JsonProcessingException;
18
19
import edu.ucsb.cs156.example.entities.RecommendationRequest;
20
import edu.ucsb.cs156.example.repositories.RecommendationRequestRepository;
21
import edu.ucsb.cs156.example.errors.EntityNotFoundException;
22
import io.swagger.v3.oas.annotations.Operation;
23
import io.swagger.v3.oas.annotations.Parameter;
24
import io.swagger.v3.oas.annotations.tags.Tag;
25
import jakarta.validation.Valid;
26
import io.swagger.v3.oas.annotations.Parameter;
27
import io.swagger.v3.oas.annotations.tags.Tag;
28
import jakarta.validation.Valid;
29
import lombok.extern.slf4j.Slf4j;
30
31
/**
32
 * REST Controller for RecommendationRequest
33
 */
34
@Tag(name = "RecommendationRequest")
35
@RequestMapping("/api/recommendationrequests")
36
@RestController
37
@Slf4j
38
public class RecommendationRequestController extends ApiController {
39
40
  @Autowired
41
  RecommendationRequestRepository recommendationRequestRepository;
42
43
  /**
44
   * List all recommendation requests
45
   * 
46
   * @return a list of all recommendation requests
47
   */
48
  @Operation(summary = "List all recommendation requests")
49
  @PreAuthorize("hasRole('ROLE_USER')")
50
  @GetMapping("/all")
51
  public Iterable<RecommendationRequest> allRecommendationRequests() {
52
    Iterable<RecommendationRequest> recommendationRequests = recommendationRequestRepository.findAll();
53 1 1. allRecommendationRequests : replaced return value with Collections.emptyList for edu/ucsb/cs156/example/controllers/RecommendationRequestController::allRecommendationRequests → KILLED
    return recommendationRequests;
54
  }
55
56
  /**
57
   * Get a single recommendation request by id
58
   * 
59
   * @param id the id of the recommendation request
60
   * @return a RecommendationRequest
61
   */
62
  @Operation(summary = "Get a single recommendation request")
63
  @PreAuthorize("hasRole('ROLE_USER')")
64
  @GetMapping("")
65
  public RecommendationRequest getById(
66
      @Parameter(name = "id") @RequestParam Long id) {
67
    RecommendationRequest recommendationRequest = recommendationRequestRepository.findById(id)
68 1 1. lambda$getById$0 : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::lambda$getById$0 → KILLED
        .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
69
70 1 1. getById : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::getById → KILLED
    return recommendationRequest;
71
  }
72
73
  /**
74
   * Create a new recommendation request
75
   * 
76
   * @param requesterEmail the email of the requester
77
   * @param professorEmail the email of the professor
78
   * @param explanation    the explanation of the recommendation request
79
   * @param dateRequested  the date requested
80
   * @return the saved recommendation request
81
   */
82
  @Operation(summary = "Create a new Recommendation Request")
83
  @PreAuthorize("hasRole('ROLE_ADMIN')")
84
  @PostMapping("/post")
85
  public RecommendationRequest postRecommendationRequest(
86
      @Parameter(name = "requesterEmail") @RequestParam String requesterEmail,
87
      @Parameter(name = "professorEmail") @RequestParam String professorEmail,
88
      @Parameter(name = "explanation") @RequestParam String explanation,
89
      @Parameter(name = "dateRequested", description = "date (in iso format, e.g. YYYY-mm-ddTHH:MM:SS; see https://en.wikipedia.org/wiki/ISO_8601)") @RequestParam("dateRequested") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime dateRequested)
90
      throws JsonProcessingException {
91
92
    log.info("dateRequested={}", dateRequested);
93
94
    RecommendationRequest recommendationRequest = new RecommendationRequest();
95 1 1. postRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setRequesterEmail → KILLED
    recommendationRequest.setRequesterEmail(requesterEmail);
96 1 1. postRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setProfessorEmail → KILLED
    recommendationRequest.setProfessorEmail(professorEmail);
97 1 1. postRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setExplanation → KILLED
    recommendationRequest.setExplanation(explanation);
98 1 1. postRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setDateRequested → KILLED
    recommendationRequest.setDateRequested(dateRequested);
99
100
    RecommendationRequest savedRecommendationRequest = recommendationRequestRepository.save(recommendationRequest);
101
102 1 1. postRecommendationRequest : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::postRecommendationRequest → KILLED
    return savedRecommendationRequest;
103
  }
104
105
  /**
106
   * Update a single recommendation request
107
   * 
108
   * @param id       id of the recommendation request to update
109
   * @param incoming the new recommendation request
110
   * @return the updated recommendation request
111
   */
112
  @Operation(summary = "Update a single recommendation request")
113
  @PreAuthorize("hasRole('ROLE_ADMIN')")
114
  @PutMapping("")
115
  public RecommendationRequest updateRecommendationRequest(
116
      @Parameter(name = "id") @RequestParam Long id,
117
      @RequestBody @Valid RecommendationRequest incoming) {
118
119
    RecommendationRequest recommendationRequest = recommendationRequestRepository.findById(id)
120 1 1. lambda$updateRecommendationRequest$1 : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::lambda$updateRecommendationRequest$1 → KILLED
        .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
121
122 1 1. updateRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setRequesterEmail → KILLED
    recommendationRequest.setRequesterEmail(incoming.getRequesterEmail());
123 1 1. updateRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setProfessorEmail → KILLED
    recommendationRequest.setProfessorEmail(incoming.getProfessorEmail());
124 1 1. updateRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setExplanation → KILLED
    recommendationRequest.setExplanation(incoming.getExplanation());
125 1 1. updateRecommendationRequest : removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setDateRequested → KILLED
    recommendationRequest.setDateRequested(incoming.getDateRequested());
126
127
    recommendationRequestRepository.save(recommendationRequest);
128
129 1 1. updateRecommendationRequest : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::updateRecommendationRequest → KILLED
    return recommendationRequest;
130
  }
131
132
  /**
133
   * Delete a recommendation request
134
   * 
135
   * @param id the id of the recommendation request to delete
136
   * @return a message indicating the recommendation request was deleted
137
   */
138
  @Operation(summary = "Delete a recommendation request")
139
  @PreAuthorize("hasRole('ROLE_ADMIN')")
140
  @DeleteMapping("")
141
  public Object deleteRecommendationRequest(
142
      @Parameter(name = "id") @RequestParam Long id) {
143
    RecommendationRequest recommendationRequest = recommendationRequestRepository.findById(id)
144 1 1. lambda$deleteRecommendationRequest$2 : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::lambda$deleteRecommendationRequest$2 → KILLED
        .orElseThrow(() -> new EntityNotFoundException(RecommendationRequest.class, id));
145
146 1 1. deleteRecommendationRequest : removed call to edu/ucsb/cs156/example/repositories/RecommendationRequestRepository::delete → KILLED
    recommendationRequestRepository.delete(recommendationRequest);
147 1 1. deleteRecommendationRequest : replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::deleteRecommendationRequest → KILLED
    return genericMessage("RecommendationRequest with id %s deleted".formatted(id));
148
  }
149
}

Mutations

53

1.1
Location : allRecommendationRequests
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:logged_in_users_can_get_all()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/example/controllers/RecommendationRequestController::allRecommendationRequests → KILLED

68

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

70

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

95

1.1
Location : postRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_postRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setRequesterEmail → KILLED

96

1.1
Location : postRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_postRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setProfessorEmail → KILLED

97

1.1
Location : postRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_postRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setExplanation → KILLED

98

1.1
Location : postRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_postRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setDateRequested → KILLED

102

1.1
Location : postRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_postRecommendationRequest_returns_saved_request()]
replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::postRecommendationRequest → KILLED

120

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

122

1.1
Location : updateRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_updateRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setRequesterEmail → KILLED

123

1.1
Location : updateRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_updateRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setProfessorEmail → KILLED

124

1.1
Location : updateRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_updateRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setExplanation → KILLED

125

1.1
Location : updateRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:test_updateRecommendationRequest_sets_all_fields()]
removed call to edu/ucsb/cs156/example/entities/RecommendationRequest::setDateRequested → KILLED

129

1.1
Location : updateRecommendationRequest
Killed by : edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.example.controllers.RecommendationRequestControllerTests]/[method:admin_can_update_recommendation_request()]
replaced return value with null for edu/ucsb/cs156/example/controllers/RecommendationRequestController::updateRecommendationRequest → KILLED

144

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

146

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

147

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

Active mutators

Tests examined


Report generated by PIT 1.17.0