Skip to content

MockMVC test with Mockito #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: mock-mvc-config
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package guru.springframework.spring6restmvc.controller;

import guru.springframework.spring6restmvc.model.Beer;
import guru.springframework.spring6restmvc.services.BeerService;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RequiredArgsConstructor
@RestController
public class BeerController {

public static final String BEER_PATH="/api/v1/beer";
public static final String BEER_PATH_ID=BEER_PATH+ "/{beerId}";

private final BeerService beerService;

@PatchMapping(BEER_PATH_ID)
public ResponseEntity patchBeer(@RequestBody Beer beer,@PathVariable("beerId") UUID beerId) {
beerService.patchBeerById(beerId,beer);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}

@DeleteMapping(BEER_PATH_ID)
public ResponseEntity DeleteBeer(@PathVariable("beerId") UUID beerId){
beerService.deleteBeerById(beerId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@PutMapping(BEER_PATH_ID)
public ResponseEntity updateBeer(@RequestBody Beer beer,@PathVariable("beerId") UUID beerId){
beerService.updateBeer(beer,beerId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}

@PostMapping(BEER_PATH)
public ResponseEntity saveNewBeer(@RequestBody Beer beer){
Beer savedBeer=beerService.save(beer);
HttpHeaders header=new HttpHeaders();
header.add("Location",BEER_PATH + savedBeer.getId().toString());
return new ResponseEntity(header,HttpStatus.CREATED);
}

@GetMapping(BEER_PATH)
public List<Beer> listBeers(){
return beerService.listBeers();
}

@GetMapping(BEER_PATH_ID)
public Beer getById(@PathVariable("beerId")UUID beerId){

return beerService.getById(beerId);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package guru.springframework.spring6restmvc.controller;

import guru.springframework.spring6restmvc.model.Customer;
import guru.springframework.spring6restmvc.services.CustomerService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RequiredArgsConstructor
@RestController
public class CustomerController {

public static final String CUSTOMER_PATH= "/api/v1/customer";
public static final String CUSTOMER_PATH_ID= CUSTOMER_PATH+ "/{customerId}";
private final CustomerService customerService;
@DeleteMapping(CUSTOMER_PATH_ID)
public ResponseEntity deleteById(@PathVariable("customerId") UUID customerId){
customerService.deleteById(customerId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}

@PutMapping(CUSTOMER_PATH_ID)
public ResponseEntity updateCustomer(@PathVariable("customerId") UUID customerId, @RequestBody Customer customer){
customerService.updateCustomerById(customer, customerId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@PostMapping(CUSTOMER_PATH)
public ResponseEntity saveCustomer(@RequestBody Customer customer){
Customer savedCustomer= customerService.saveCustomer(customer);
HttpHeaders header=new HttpHeaders();
header.add("Location",CUSTOMER_PATH+ savedCustomer.getId().toString());
return new ResponseEntity(header, HttpStatus.CREATED);
}

@GetMapping(CUSTOMER_PATH)
public List<Customer> listCustomers(){
return customerService.listCustomers();
}
@GetMapping(CUSTOMER_PATH_ID)
public Customer getById(@PathVariable("customerId") UUID customerId){

return customerService.getById(customerId);
}


}
22 changes: 22 additions & 0 deletions src/main/java/guru/springframework/spring6restmvc/model/Beer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package guru.springframework.spring6restmvc.model;

import lombok.Builder;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.UUID;

@Builder
@Data
public class Beer {
private UUID id;
private Integer version;
private String beerName;
private BeerStyle beerStyle;
private String upc;
private Integer quantityOnHand;
private BigDecimal price;
private LocalDateTime createdDate;
private LocalDateTime updateDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package guru.springframework.spring6restmvc.model;

public enum BeerStyle {
LAGER, PILSNER, STOUT, GOSE, PORTER, ALE, WHEAT, IPA, PALE_ALE, SAISON
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package guru.springframework.spring6restmvc.model;

import lombok.Builder;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.UUID;

@Data
@Builder
public class Customer {

private UUID Id;
private String customerName;
private BigDecimal version;
private LocalDate createdDate;
private LocalDate lastModifiedDate;



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package guru.springframework.spring6restmvc.services;

import guru.springframework.spring6restmvc.model.Beer;

import java.util.List;
import java.util.UUID;

public interface BeerService {

Beer getById(UUID Id);
List <Beer> listBeers();

Beer save(Beer beer);

void updateBeer(Beer beer, UUID beerId);

void deleteBeerById(UUID beerId);

void patchBeerById(UUID beerId, Beer beer);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package guru.springframework.spring6restmvc.services;

import guru.springframework.spring6restmvc.model.Beer;
import guru.springframework.spring6restmvc.model.BeerStyle;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;

@Service
public class BeerServiceImpl implements BeerService {
private Map<UUID,Beer> beerMap;

public BeerServiceImpl(){
this.beerMap= new HashMap<>();

Beer beer1=Beer.builder()
.id(UUID.randomUUID())
.upc("h")
.price(new BigDecimal(12.3))
.version(2)
.beerName("asmara beer")
.quantityOnHand(123)
.beerStyle(BeerStyle.ALE)
.createdDate(LocalDateTime.now())
.updateDate(LocalDateTime.now())
.build();

Beer beer2=Beer.builder()
.id(UUID.randomUUID())
.upc("h")
.price(new BigDecimal(12.3))
.version(2)
.beerName("asmara beer")
.quantityOnHand(123)
.beerStyle(BeerStyle.ALE)
.createdDate(LocalDateTime.now())
.updateDate(LocalDateTime.now())
.build();

Beer beer3=Beer.builder()
.id(UUID.randomUUID())
.upc("h")
.price(new BigDecimal(12.3))
.version(2)
.beerName("asmara beer")
.quantityOnHand(123)
.beerStyle(BeerStyle.ALE)
.createdDate(LocalDateTime.now())
.updateDate(LocalDateTime.now())
.build();
beerMap.put(beer1.getId(),beer1);
beerMap.put(beer2.getId(),beer2);
beerMap.put(beer3.getId(),beer3);
}

@Override
public Beer getById(UUID Id) {
return beerMap.get(Id);
}

@Override
public List<Beer> listBeers(){
return new ArrayList<>(beerMap.values());
}

@Override
public Beer save(Beer beer) {

Beer savedBeer=Beer.builder()
.id(UUID.randomUUID())
.upc(beer.getUpc())
.price(new BigDecimal(12.3))
.version(2)
.beerName(beer.getBeerName())
.quantityOnHand(123)
.beerStyle(BeerStyle.ALE)
.createdDate(LocalDateTime.now())
.updateDate(LocalDateTime.now())
.build();
beerMap.put(savedBeer.getId(),savedBeer);
return savedBeer;
}

@Override
public void updateBeer(Beer beer, UUID beerId) {
Beer existingBeer=beerMap.get(beerId);
existingBeer.setBeerName(beer.getBeerName());
existingBeer.setPrice(beer.getPrice());
}

@Override
public void deleteBeerById(UUID beerId) {
beerMap.remove(beerId);
}

@Override
public void patchBeerById(UUID beerId, Beer beer) {
Beer existing = beerMap.get(beerId);

if (StringUtils.hasText(beer.getBeerName())) {
existing.setBeerName(beer.getBeerName());
}

if (beer.getBeerStyle() != null) {
existing.setBeerStyle(beer.getBeerStyle());
}

if (beer.getPrice() != null) {
existing.setPrice(beer.getPrice());
}

if (beer.getQuantityOnHand() != null) {
existing.setQuantityOnHand(beer.getQuantityOnHand());
}

}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package guru.springframework.spring6restmvc.services;

import guru.springframework.spring6restmvc.model.Customer;

import java.util.List;
import java.util.UUID;

public interface CustomerService {


List<Customer> listCustomers();
Customer getById(UUID Id);

Customer saveCustomer(Customer customer);

void deleteById(UUID customerId);

void patchCustomerById(UUID customerId, Customer customer);

void updateCustomerById(Customer customer,UUID customerId);
}
Loading
Oops, something went wrong.