Commit 19c74fb6 authored by Sarika Sama's avatar Sarika Sama

mongodb service integration tests with dynamic mongodb port

parent b57dc664
...@@ -18,6 +18,6 @@ public class User { ...@@ -18,6 +18,6 @@ public class User {
private String userId; private String userId;
private String userName; private String userName;
private String emailId; private String emailId;
private String orderId; // private String orderId;
} }
...@@ -15,7 +15,7 @@ import reactor.core.publisher.Flux; ...@@ -15,7 +15,7 @@ import reactor.core.publisher.Flux;
public class UserOrdersService { public class UserOrdersService {
@Autowired @Autowired
private ReactiveMongoTemplate reactiveMongoTemplate; ReactiveMongoTemplate reactiveMongoTemplate;
public Flux<UserOrders> getAllUsersWithOrders() { public Flux<UserOrders> getAllUsersWithOrders() {
LookupOperation lookupOperation = LookupOperation.newLookup(). LookupOperation lookupOperation = LookupOperation.newLookup().
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
#spring.data.mongodb.user-orders-db.database=user-orders-db #spring.data.mongodb.user-orders-db.database=user-orders-db
server.port=9090 server.port=9090
spring.data.mongodb.host=localhost #spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017 #spring.data.mongodb.port=27017
spring.data.mongodb.database=user-orders-db spring.data.mongodb.database=user-orders-db
#spring.data.mongodb.orders-db.uri=mongodb://localhost:27017/orders-db #spring.data.mongodb.orders-db.uri=mongodb://localhost:27017/orders-db
......
package com.nisum.webfluxmongodbordermanagement.service; package com.nisum.webfluxmongodbordermanagement.controller;
import com.nisum.webfluxmongodbordermanagement.entity.Order; import com.nisum.webfluxmongodbordermanagement.entity.Order;
import com.nisum.webfluxmongodbordermanagement.service.OrdersService; import com.nisum.webfluxmongodbordermanagement.service.OrdersService;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -10,13 +11,16 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; ...@@ -10,13 +11,16 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.reactive.server.WebTestClient;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.test.StepVerifier; import reactor.test.StepVerifier;
import java.io.IOException; import java.io.IOException;
@DataMongoTest @DataMongoTest
@ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class)
@ActiveProfiles("test") @ActiveProfiles("test")
@Disabled
public class OrderControllerIntTest { public class OrderControllerIntTest {
static { static {
...@@ -24,28 +28,44 @@ public class OrderControllerIntTest { ...@@ -24,28 +28,44 @@ public class OrderControllerIntTest {
} }
@Autowired @Autowired
MongoTemplate mongoTemplate; WebTestClient webTestClient;
@Autowired(required=true) @Autowired(required=true)
OrdersService orderService; OrdersService orderService;
@BeforeEach @BeforeEach
public void setup() throws IOException { public void setup() throws IOException {
mongoTemplate.getCollection("orders").drop(); // mongoTemplate.getCollection("orders").drop();
//mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1")); // //mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1"));
mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess")); // mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess"));
} }
@Test @Test
public void getOrderControllerTest(@Autowired MongoTemplate mongoTemplate) { public void getOrderControllerTest(@Autowired MongoTemplate mongoTemplate) {
mongoTemplate.getCollection("orders").drop();
// Flux<Order> result = orderService.getOrders();
//
// StepVerifier.create(result)
// .expectNextMatches(order -> order.getOrderId().equals("01"))
// .expectComplete()
// .verify();
// }
mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess"));
Flux<Order> result = orderService.getOrders(); Flux<Order> result = orderService.getOrders();
Flux<Order> responseBody = webTestClient.get().uri("/orders")
.exchange()
.expectStatus().isOk()
.returnResult(Order.class)
.getResponseBody();
//
StepVerifier.create(responseBody)
.expectSubscription()
.expectNextMatches(order -> order.getUserId().equals("1"))
.verifyComplete();
}
StepVerifier.create(result)
.expectNextMatches(order -> order.getOrderId().equals("01"))
.expectComplete()
.verify();
}
} }
...@@ -49,16 +49,16 @@ public class OrderControllerTest { ...@@ -49,16 +49,16 @@ public class OrderControllerTest {
when(ordersService.getOrders()).thenReturn(order); when(ordersService.getOrders()).thenReturn(order);
Flux<Order> responseBody = webTestClient.get().uri("/orders") Flux<Order> responseBody = webTestClient.get().uri("/orders")
.exchange() .exchange()
.expectStatus().isOk() .expectStatus().isOk()
.returnResult(Order.class) .returnResult(Order.class)
.getResponseBody(); .getResponseBody();
// //
StepVerifier.create(responseBody) StepVerifier.create(responseBody)
.expectSubscription() .expectSubscription()
.expectNextMatches(p -> p.getUserId().equals("01")) .expectNextMatches(p -> p.getUserId().equals("01"))
.verifyComplete(); .verifyComplete();
} }
} }
...@@ -6,9 +6,6 @@ import org.junit.jupiter.api.AfterEach; ...@@ -6,9 +6,6 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
...@@ -47,7 +44,7 @@ public class UserControllerTest { ...@@ -47,7 +44,7 @@ public class UserControllerTest {
public void testGetUsers() { public void testGetUsers() {
// Mock data // Mock data
Flux<User> user = Flux.just(new User("1", "1", "sama", "sama@gmail.com","01")); Flux<User> user = Flux.just(new User("1", "1", "sama", "sama@gmail.com"));
when(userService.getUsers()).thenReturn(user); when(userService.getUsers()).thenReturn(user);
Flux<User> responseBody = webTestClient.get().uri("/users") Flux<User> responseBody = webTestClient.get().uri("/users")
......
...@@ -38,10 +38,6 @@ public class UserOrderControllerTest { ...@@ -38,10 +38,6 @@ public class UserOrderControllerTest {
void setUp() { void setUp() {
} }
@AfterEach
void tearDown() {
}
@Test @Test
void getAllUsers() { void getAllUsers() {
} }
......
package com.nisum.webfluxmongodbordermanagement.service; package com.nisum.webfluxmongodbordermanagement.service;
import com.nisum.webfluxmongodbordermanagement.entity.Order; import com.nisum.webfluxmongodbordermanagement.entity.Order;
import com.nisum.webfluxmongodbordermanagement.entity.User;
import com.nisum.webfluxmongodbordermanagement.repository.OrderRepository; import com.nisum.webfluxmongodbordermanagement.repository.OrderRepository;
import com.nisum.webfluxmongodbordermanagement.repository.UserRepository;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
...@@ -25,27 +23,29 @@ public class OrdersServiceIntTest { ...@@ -25,27 +23,29 @@ public class OrdersServiceIntTest {
System.setProperty("spring.mongodb.embedded.version","5.0.0"); System.setProperty("spring.mongodb.embedded.version","5.0.0");
} }
@Autowired /*@Autowired
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;*/
@Autowired @Autowired
OrderRepository orderRepository; OrderRepository orderRepository;
@BeforeEach @BeforeEach
public void setup() throws IOException { public void setup() throws IOException {
mongoTemplate.getCollection("orders").drop(); // mongoTemplate.getCollection("orders").drop();
//mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1")); //mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1"));
mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess")); //mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess"));
} }
@Test @Test
public void testGetOrders(@Autowired MongoTemplate mongoTemplate) { public void testGetOrders(@Autowired MongoTemplate mongoTemplate) {
mongoTemplate.getCollection("orders").drop();
Flux<Order> result = orderRepository.findAll(); Flux<Order> result = orderRepository.findAll();
mongoTemplate.insert(new Order("2356781", "01", "1","ooppo122356","oppo123456","sucess"));
mongoTemplate.insert(new Order("2356782", "02", "2","ooppo122356","oppo123456","sucess"));
StepVerifier.create(result) StepVerifier.create(result)
.expectNextMatches(order -> order.getUserId().equals("1")) .expectNextMatches(order -> order.getUserId().equals("1"))
.expectNextMatches(o -> o.getUserId().equals("2"))
.expectComplete() .expectComplete()
.verify(); .verify();
} }
......
...@@ -36,8 +36,8 @@ class UserServiceTest { ...@@ -36,8 +36,8 @@ class UserServiceTest {
@Test @Test
@DisplayName("get all users ") @DisplayName("get all users ")
void getAllUsers() { void getAllUsers() {
User user1 = new User("1","01", "John", "john@example.com", "order1"); User user1 = new User("1","01", "John", "john@example.com");
User user2 = new User("2","02","Jane", "jane@example.com", "order2"); User user2 = new User("2","02","Jane", "jane@example.com");
when(userRepository.findAll()).thenReturn(Flux.just(user1, user2)); when(userRepository.findAll()).thenReturn(Flux.just(user1, user2));
// Call the method // Call the method
......
package com.nisum.webfluxmongodbordermanagement.service;
import com.nisum.webfluxmongodbordermanagement.entity.Order;
import com.nisum.webfluxmongodbordermanagement.entity.User;
import com.nisum.webfluxmongodbordermanagement.entity.UserOrders;
import com.nisum.webfluxmongodbordermanagement.repository.UserRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
import java.io.IOException;
@DataMongoTest
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
public class UsersOrderServiceIntTest {
static {
System.setProperty("spring.mongodb.embedded.version","5.0.0");
}
UserOrdersService userOrdersService;
@Autowired
private ReactiveMongoTemplate reactiveMongoTemplate;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
UserRepository userRepository;
@BeforeEach
public void setup() throws IOException {
userOrdersService = new UserOrdersService();
userOrdersService.reactiveMongoTemplate = reactiveMongoTemplate;
mongoTemplate.getCollection("user").drop();
mongoTemplate.getCollection("orders").drop();
//mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1"));
mongoTemplate.insert(new Order("2356781", "01", "user1","ooppo122356","oppo123456","sucess"));
mongoTemplate.insert(new Order("2356782", "02", "user1","vivo122356","vivo123456","sucess"));
mongoTemplate.insert(new Order("2356783", "03", "user2","sam122356","sam123456","sucess"));
mongoTemplate.insert(new User("2356781", "user1", "sarika","sarika@123456"));
mongoTemplate.insert(new User("2356782", "user2", "sama","sama@123456"));
mongoTemplate.insert(new User("2356783", "user3", "samasarika","sama@123456"));
}
@Test
public void testGetUsers(@Autowired MongoTemplate mongoTemplate) {
// Flux<User> result = userRepository.findAll();
Flux<UserOrders> result = userOrdersService.getAllUsersWithOrders();
StepVerifier.create(result)
.expectNextMatches(uo -> uo.getUserId().equals("user1") && uo.getOrder().size()==2)
.expectNextMatches(uo -> uo.getUserId().equals("user2") && uo.getOrder().size() == 1)
.expectNextMatches(uo -> uo.getUserId().equals("user3") && uo.getOrder().size() == 0)
.expectComplete()
.verify();
}
}
...@@ -35,8 +35,8 @@ public class UsersServiceIntTest { ...@@ -35,8 +35,8 @@ public class UsersServiceIntTest {
public void setup() throws IOException { public void setup() throws IOException {
mongoTemplate.getCollection("user").drop(); mongoTemplate.getCollection("user").drop();
//mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456","1")); //mongoTemplate.insert(new User("23563456", "01", "samab12344","sarika@123456"));
mongoTemplate.insert(new User("2356781", "01", "samasarika","sama@123456","1")); mongoTemplate.insert(new User("2356781", "01", "samasarika","sama@123456"));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment