InstructorsController.java

1
package edu.ucsb.cs156.frontiers.controllers;
2
3
import edu.ucsb.cs156.frontiers.entities.Instructor;
4
import edu.ucsb.cs156.frontiers.errors.EntityNotFoundException;
5
import edu.ucsb.cs156.frontiers.repositories.InstructorRepository;
6
import io.swagger.v3.oas.annotations.Operation;
7
import io.swagger.v3.oas.annotations.Parameter;
8
import io.swagger.v3.oas.annotations.tags.Tag;
9
import lombok.extern.slf4j.Slf4j;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.security.access.prepost.PreAuthorize;
12
import org.springframework.web.bind.annotation.*;
13
14
@Tag(name = "Instructors")
15
@RequestMapping("/api/instructors")
16
@RestController
17
@Slf4j
18
public class InstructorsController extends ApiController {
19
20
    @Autowired
21
    private InstructorRepository instructorRepository;
22
23
    // POST
24
    @Operation(summary = "Create a new instructor")
25
    @PreAuthorize("hasRole('ROLE_ADMIN')")
26
    @PostMapping("/post")
27
    public Instructor postInstructor(
28
            @Parameter(name = "email") @RequestParam String email) {
29
30
        Instructor instructor = Instructor.builder().email(email).build();
31 1 1. postInstructor : replaced return value with null for edu/ucsb/cs156/frontiers/controllers/InstructorsController::postInstructor → KILLED
        return instructorRepository.save(instructor);
32
    }
33
34
    // GET
35
    @Operation(summary = "Get all instructors")
36
    @PreAuthorize("hasRole('ROLE_ADMIN')")
37
    @GetMapping("/all")
38
    public Iterable<Instructor> allInstructors() {
39 1 1. allInstructors : replaced return value with Collections.emptyList for edu/ucsb/cs156/frontiers/controllers/InstructorsController::allInstructors → KILLED
        return instructorRepository.findAll();
40
    }
41
42
    // DELETE
43
    @Operation(summary = "Delete instructor by email")
44
    @PreAuthorize("hasRole('ROLE_ADMIN')")
45
    @DeleteMapping("")
46
    public String deleteInstructor(
47
            @Parameter(name = "email") @RequestParam String email) {
48
49
        Instructor instructor = instructorRepository.findById(email)
50 1 1. lambda$deleteInstructor$0 : replaced return value with null for edu/ucsb/cs156/frontiers/controllers/InstructorsController::lambda$deleteInstructor$0 → KILLED
                .orElseThrow(() -> new EntityNotFoundException(Instructor.class, email));
51 1 1. deleteInstructor : removed call to edu/ucsb/cs156/frontiers/repositories/InstructorRepository::delete → KILLED
        instructorRepository.delete(instructor);
52 1 1. deleteInstructor : replaced return value with "" for edu/ucsb/cs156/frontiers/controllers/InstructorsController::deleteInstructor → KILLED
        return String.format("Instructor with email %s deleted", email);
53
    }
54
}

Mutations

31

1.1
Location : postInstructor
Killed by : edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests]/[method:testPostInstructor()]
replaced return value with null for edu/ucsb/cs156/frontiers/controllers/InstructorsController::postInstructor → KILLED

39

1.1
Location : allInstructors
Killed by : edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests]/[method:testAllInstructors()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/frontiers/controllers/InstructorsController::allInstructors → KILLED

50

1.1
Location : lambda$deleteInstructor$0
Killed by : edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests]/[method:testDeleteInstructor_NotFound()]
replaced return value with null for edu/ucsb/cs156/frontiers/controllers/InstructorsController::lambda$deleteInstructor$0 → KILLED

51

1.1
Location : deleteInstructor
Killed by : edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests]/[method:testDeleteInstructor()]
removed call to edu/ucsb/cs156/frontiers/repositories/InstructorRepository::delete → KILLED

52

1.1
Location : deleteInstructor
Killed by : edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.InstructorsControllerTests]/[method:testDeleteInstructor()]
replaced return value with "" for edu/ucsb/cs156/frontiers/controllers/InstructorsController::deleteInstructor → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0