Skip to content

Commit 51c91b1

Browse files
committed
fix tests
1 parent b03d11e commit 51c91b1

10 files changed

Lines changed: 335 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.booking.backend.controller;
2+
3+
import com.booking.backend.entity.Organization;
4+
import com.booking.backend.entity.TypeOrganization;
5+
import com.booking.backend.repository.OrganizationRepository;
6+
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import org.junit.jupiter.api.AfterEach;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Test;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
12+
import org.springframework.boot.test.context.SpringBootTest;
13+
import org.springframework.test.web.servlet.MockMvc;
14+
15+
import java.util.List;
16+
17+
import static org.hamcrest.Matchers.hasSize;
18+
import static org.hamcrest.Matchers.is;
19+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
20+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
21+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
22+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
23+
24+
@SpringBootTest
25+
@AutoConfigureMockMvc
26+
class OrganizationControllerTest {
27+
28+
@Autowired
29+
private OrganizationRepository organizationRepository;
30+
31+
@Autowired
32+
private ObjectMapper objectMapper;
33+
34+
@Autowired
35+
private MockMvc mockMvc;
36+
37+
@BeforeEach
38+
void init() {
39+
organizationRepository.save(
40+
new Organization(null, "Al", "10-22", 1000.0, 8.9, TypeOrganization.BAR));
41+
}
42+
43+
@AfterEach
44+
void destroy() {
45+
organizationRepository.deleteAll();
46+
}
47+
48+
@Test
49+
void getAll() throws Exception {
50+
mockMvc.perform(get("/organization"))
51+
.andDo(print())
52+
.andExpect(status().isOk())
53+
.andExpect(jsonPath("$[0].name", is("Al")));
54+
}
55+
56+
@Test
57+
void getAllWithPage() throws Exception {
58+
Organization organization = new Organization(null, "Al", "10-22", 1000.0, 7.7, TypeOrganization.BAR);
59+
Organization organization1 = new Organization(null, "Al", "10-22", 1000.0, 8.0, TypeOrganization.BAR);
60+
List<Organization> list = List.of(organization, organization1);
61+
organizationRepository.saveAll(list);
62+
63+
mockMvc.perform(get("/organization").param("pageNo", "0")
64+
.param("pageSize", "2")
65+
.param("sortBy", "rate"))
66+
.andDo(print())
67+
.andExpect(status().isOk())
68+
.andExpect(jsonPath("$", hasSize(3)))
69+
.andExpect(jsonPath("$[1].rating", is(7.7)));
70+
}
71+
72+
@Test
73+
void getAllOrganization() throws Exception {
74+
Organization organization = new Organization(null, "Al", "10-22", 1000.0, 7.7, TypeOrganization.BAR);
75+
Organization organization1 = new Organization(null, "Al", "10-22", 1000.0, 8.0, TypeOrganization.BAR);
76+
List<Organization> list = List.of(organization, organization1);
77+
organizationRepository.saveAll(list);
78+
79+
mockMvc.perform(get("/organization"))
80+
.andDo(print())
81+
.andExpect(status().isOk())
82+
.andExpect(jsonPath("$", hasSize(3)));
83+
}
84+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.booking.backend.controller;
2+
3+
import com.booking.backend.entity.Person;
4+
import com.booking.backend.repository.PersonRepository;
5+
import org.junit.jupiter.api.AfterEach;
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
10+
import org.springframework.boot.test.context.SpringBootTest;
11+
import org.springframework.test.web.servlet.MockMvc;
12+
13+
import static org.hamcrest.Matchers.is;
14+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
15+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
16+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
17+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
18+
19+
@SpringBootTest
20+
@AutoConfigureMockMvc
21+
class PersonControllerTest {
22+
23+
@Autowired
24+
private MockMvc mockMvc;
25+
26+
@Autowired
27+
private PersonRepository personRepository;
28+
29+
30+
@BeforeEach
31+
void init() {
32+
personRepository.save(
33+
new Person(1L, "Alex"));
34+
}
35+
36+
@AfterEach
37+
void destroy() {
38+
personRepository.deleteAll();
39+
}
40+
41+
@Test
42+
void getPersonById() throws Exception {
43+
mockMvc.perform(get("/person").param("id", "1"))
44+
.andDo(print())
45+
.andExpect(status().isOk())
46+
.andExpect(jsonPath("$.id", is(1)));
47+
}
48+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.booking.backend.repository;
2+
3+
import com.booking.backend.entity.Organization;
4+
import com.booking.backend.entity.TypeOrganization;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
9+
10+
import java.util.List;
11+
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
import static org.junit.jupiter.api.Assertions.assertTrue;
14+
15+
@DataJpaTest
16+
class OrganizationRepositoryTest {
17+
18+
@Autowired
19+
private OrganizationRepository organizationRepository;
20+
21+
@BeforeEach
22+
void init() {
23+
organizationRepository.save(new Organization(null, "Org", "1-2", 2000.4, 8.7, TypeOrganization.BAR));
24+
organizationRepository.save(new Organization(null, "Org", "1-2", 2000.4, 8.7, TypeOrganization.BAR));
25+
26+
}
27+
28+
@Test
29+
void getAllByNameNotFound() {
30+
List<Organization> list = organizationRepository.findAllByName("Not existed");
31+
assertTrue(list.isEmpty());
32+
}
33+
34+
@Test
35+
void getAllByNameFound() {
36+
List<Organization> list = organizationRepository.findAllByName("Org");
37+
assertEquals(2, list.size());
38+
}
39+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.booking.backend.service;
2+
3+
import com.booking.backend.dto.BookingDto;
4+
import com.booking.backend.dto.PersonDto;
5+
import com.booking.backend.mapper.BookingMapper;
6+
import com.booking.backend.repository.BookingRepository;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.mockito.InjectMocks;
10+
import org.mockito.Mock;
11+
import org.mockito.junit.jupiter.MockitoExtension;
12+
13+
import static org.mockito.ArgumentMatchers.any;
14+
import static org.mockito.Mockito.times;
15+
import static org.mockito.Mockito.verify;
16+
17+
@ExtendWith(MockitoExtension.class)
18+
class BookingServiceImplTest {
19+
20+
@Mock
21+
private BookingRepository bookingRepository;
22+
@Mock
23+
private BookingMapper bookingMapper;
24+
@InjectMocks
25+
private BookingServiceImpl bookingService;
26+
27+
@Test
28+
void addNewBooking() {
29+
BookingDto bookingDto = new BookingDto(1L, new PersonDto(1L, "asd"));
30+
bookingService.addNewBooking(bookingDto);
31+
verify(bookingMapper, times(1)).convert(bookingDto);
32+
verify(bookingRepository, times(1)).save(any());
33+
}
34+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.booking.backend.service;
2+
3+
import com.booking.backend.dto.OrganizationDto;
4+
import com.booking.backend.mapper.OrganizationMapper;
5+
import com.booking.backend.repository.OrganizationRepository;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.ExtendWith;
8+
import org.mockito.InjectMocks;
9+
import org.mockito.Mock;
10+
import org.mockito.junit.jupiter.MockitoExtension;
11+
12+
import static org.mockito.ArgumentMatchers.any;
13+
import static org.mockito.Mockito.times;
14+
import static org.mockito.Mockito.verify;
15+
16+
@ExtendWith(MockitoExtension.class)
17+
class OrganizationServiceImplTest {
18+
19+
@Mock
20+
private OrganizationRepository organizationRepository;
21+
@Mock
22+
private OrganizationMapper organizationMapper;
23+
@InjectMocks
24+
private OrganizationServiceImpl organizationService;
25+
26+
@Test
27+
void findAllByName() {
28+
organizationService.findAllByName("Org");
29+
verify(organizationRepository, times(1)).findAllByName("Org");
30+
}
31+
32+
@Test
33+
void getAll() {
34+
organizationService.getAll();
35+
verify(organizationRepository, times(1)).findAll();
36+
}
37+
38+
@Test
39+
void updateOrganization() {
40+
OrganizationDto organizationDto
41+
= new OrganizationDto(1L, "Org", "10-22", 234.0, 8.7, "Bar");
42+
organizationService.updateOrganization(organizationDto);
43+
organizationMapper.convert(organizationDto);
44+
organizationRepository.save(any());
45+
}
46+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.booking.backend.service;
2+
3+
import com.booking.backend.dto.PersonDto;
4+
import com.booking.backend.mapper.PersonMapper;
5+
import com.booking.backend.repository.PersonRepository;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.ExtendWith;
8+
import org.mockito.InjectMocks;
9+
import org.mockito.Mock;
10+
import org.mockito.junit.jupiter.MockitoExtension;
11+
12+
import static org.mockito.ArgumentMatchers.any;
13+
import static org.mockito.Mockito.times;
14+
import static org.mockito.Mockito.verify;
15+
16+
@ExtendWith({MockitoExtension.class})
17+
class PersonServiceImplTest {
18+
19+
@Mock
20+
private PersonRepository personRepository;
21+
@Mock
22+
private PersonMapper mapper;
23+
24+
@InjectMocks
25+
private PersonServiceImpl personService;
26+
27+
@Test
28+
void getPersonById() {
29+
personService.getPersonById(1L);
30+
verify(personRepository, times(1)).findById(1L);
31+
}
32+
33+
@Test
34+
void updatePerson() {
35+
PersonDto personDto = new PersonDto(1L, "A");
36+
personService.updatePerson(personDto);
37+
verify(mapper, times(1)).convert(personDto);
38+
verify(personRepository, times(1)).save(any());
39+
}
40+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
spring.jpa.database=H2
2+
spring.datasource.driver-class-name=org.h2.Driver
3+
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
4+
spring.datasource.url=jdbc:h2:mem:comparator;DB_CLOSE_ON_EXIT=FALSE
5+
spring.jpa.generate-ddl=true
6+
spring.sql.init.mode=never
7+
#spring.jpa.hibernate.ddl-auto=create
8+
spring.datasource.username=sa
9+
spring.datasource.password=sa
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-- create table if not exists person
2+
-- (
3+
-- id bigint NOT NULL PRIMARY KEY,
4+
-- name varchar(20)
5+
-- );
6+
--
7+
-- create table if not exists booking
8+
-- (
9+
-- id bigint NOT NULL PRIMARY KEY,
10+
-- person_id bigint,
11+
-- foreign key (person_id) references person (id)
12+
-- );
13+
--
14+
-- create table if not exists organization
15+
-- (
16+
-- id int NOT NULL PRIMARY KEY,
17+
-- name varchar(20),
18+
-- schedule varchar(50),
19+
-- average_check double,
20+
-- rating double
21+
-- );

backend/src/test/resources/data.sql

Whitespace-only changes.

docker-compose.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
version: '3.8'
2+
services:
3+
db:
4+
image: postgres:14.1-alpine
5+
environment:
6+
- POSTGRES_USER=postgres
7+
- POSTGRES_PASSWORD=postgres
8+
ports:
9+
- '5432:5432'
10+
volumes:
11+
- db:/var/lib/postgresql/data
12+
volumes:
13+
db:
14+
driver: local

0 commit comments

Comments
 (0)