Commit 9f666188 authored by Sarika Sama's avatar Sarika Sama

added swagger and mockito junits test cases

parent 53b2ba47
......@@ -21,6 +21,16 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-webflux-ui</artifactId>
<version>1.6.14</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-webflux-core</artifactId>
<version>1.6.14</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
......
package com.nisum.webfluxmongodbordermanagement;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "APIs", version = "1.0", description = "Documentation APIs v1.0"))
public class WebfluxMongodbOrderManagementApplication {
public static void main(String[] args) {
......
......@@ -14,7 +14,8 @@ public class OrdersController {
private OrdersService ordersService;
@GetMapping("/orders")
public Flux<Order> getOrders(){return ordersService.getOrders();
public Flux<Order> getOrders(){
return ordersService.getOrders();
}
}
......@@ -18,7 +18,7 @@ public class UserController {
UserService userService;
@GetMapping("/users")
public Flux<?> getUsers() {
public Flux<User> getUsers() {
return userService.getUsers();
}
}
......
......@@ -13,13 +13,17 @@ import org.springframework.data.mongodb.core.mapping.Field;
@Document(collection = "orders")
public class Order {
@Id
private String _id;
private String orderId;
@Field("user_Id")
private String userId;
@Field("transaction_Id")
private String transactionId;
@Field("tracking_Id")
private String trackingId;
@Field("status")
private String status;
}
......@@ -13,14 +13,11 @@ import java.util.List;
@Getter
@Document(collection = "user")
public class User {
@Id
@Id
private String _id;
private String userId;
@Field("user_Name")
private String userName;
@Field("email_Id")
private String emailId;
@Field("order_Id")
private String orderId;
private List<Order> orders;
}
......@@ -13,16 +13,10 @@ import java.util.List;
@AllArgsConstructor
public class UserOrders {
@Id
private String _id;
@Field("user_Id")
private String userId;
@Field("user_Name")
private String userName;
@Field("email_Id")
private String emailId;
@Field("order_Id")
private String orderId;
private List<Order> orders;
// private String orderId;
private List<Order> order;
}
\ No newline at end of file
......@@ -19,10 +19,10 @@ public class UserOrdersService {
public Flux<UserOrders> getAllUsersWithOrders() {
LookupOperation lookupOperation = LookupOperation.newLookup().
from("Orders").
localField("user_Id").
foreignField("user_Id").
as("orders");
from("orders").
localField("userId").
foreignField("userId").
as("order");
Aggregation aggregation = Aggregation.newAggregation(lookupOperation);
return reactiveMongoTemplate.aggregate(aggregation, "user", UserOrders.class);
......@@ -30,12 +30,12 @@ public class UserOrdersService {
public Flux<UserOrders> getUsersWithOrders(String userId) {
LookupOperation lookupOperation = LookupOperation.newLookup().
from("Orders").
localField("user_Id").
foreignField("user_Id").
as("orders");
from("orders").
localField("userId").
foreignField("userId").
as("order");
AggregationOperation match = Aggregation.match(Criteria.where("user_Id").is(userId));
AggregationOperation match = Aggregation.match(Criteria.where("userId").is(userId));
Aggregation aggregation = Aggregation.newAggregation(lookupOperation, match);
......
server.port=9090
#server.port=9090
spring.data.mongodb.user-orders-db.uri=mongodb://localhost:27017/user-orders-db
spring.data.mongodb.user-orders-db.database=user-orders-db
#spring.data.mongodb.user-orders-db.uri=mongodb://localhost:27017/user-orders-db
#spring.data.mongodb.user-orders-db.database=user-orders-db
#server.port=9001
#spring.data.mongodb.host=localhost
#spring.data.mongodb.port=27017
#spring.data.mongodb.database=nisum
server.port=9090
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=user-orders-db
#spring.data.mongodb.orders-db.uri=mongodb://localhost:27017/orders-db
#spring.data.mongodb.orders-db.database=orders-db
//package com.nisum.webfluxmongodbordermanagement.controller;
//
//import com.nisum.webfluxmongodbordermanagement.entity.User;
//import com.nisum.webfluxmongodbordermanagement.service.UserService;
//import org.junit.jupiter.api.BeforeEach;
//import org.junit.jupiter.api.Test;
//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.boot.test.autoconfigure.web.reactive.WebFluxTest;
//import org.springframework.boot.test.mock.mockito.MockBean;
//import org.springframework.test.context.junit.jupiter.SpringExtension;
//import org.springframework.test.web.reactive.server.WebTestClient;
//import reactor.core.publisher.Flux;
//import reactor.test.StepVerifier;
//
//import static org.mockito.Mockito.when;
//
//@ExtendWith(SpringExtension.class)
//@WebFluxTest(UserController.class)
//public class UserControllerTest {
//
// @Mock
// private UserService userService;
//
// @InjectMocks
// private UserController userController;
//
// @BeforeEach
// public void setUp() {
// MockitoAnnotations.openMocks(this);
// }
//
// @Test
// public void testGetUsers() {
// // Mock data
// User user1 = new User("1", "01", "John", "john@example.com", "order1");
// User user2 = new User("2", "02" , "Jane", "jane@example.com", "order2");
// when(userService.getUsers()).thenReturn(Flux.just(user1, user2));
//
// // Call the endpoint method
//// Flux<User> result = userController.getUsers();
////
//// // Verify the output
//// StepVerifier.create(result)
//// .expectNext(user1, user2)
//// .expectComplete()
//// .verify();
// }
//
//
//
//}
package com.nisum.webfluxmongodbordermanagement.service;
import com.nisum.webfluxmongodbordermanagement.entity.Order;
import com.nisum.webfluxmongodbordermanagement.entity.User;
import com.nisum.webfluxmongodbordermanagement.repository.OrderRepository;
import com.nisum.webfluxmongodbordermanagement.repository.UserRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
import static org.mockito.Mockito.when;
public class OrdersServiceTest {
@Autowired
private ReactiveMongoTemplate reactiveMongoTemplate;
@Mock
OrderRepository orderRepository;
@InjectMocks
OrdersService ordersService;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
@DisplayName("get all orders ")
void getAllOrders() {
Order order1 = new Order("1123v34","1", "1","oppo123445", "oppo123", "success");
Order order2 = new Order("112345","2", "1","vivo123445", "vivo123", "success");
when(orderRepository.findAll()).thenReturn(Flux.just(order1, order2));
// Call the method
Flux<Order> result = ordersService.getOrders();
// Verify the output
StepVerifier.create(result)
.expectNext(order1)
.expectNext(order2)
.expectComplete()
.verify();
}
}
package com.nisum.webfluxmongodbordermanagement.service;
import com.nisum.webfluxmongodbordermanagement.entity.User;
import com.nisum.webfluxmongodbordermanagement.repository.UserRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
import static org.mockito.Mockito.when;
class UserServiceTest {
@Autowired
private ReactiveMongoTemplate reactiveMongoTemplate;
@Mock
UserRepository userRepository;
@InjectMocks
UserService userService;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
@DisplayName("get all users ")
void getAllUsers() {
User user1 = new User("1","01", "John", "john@example.com", "order1");
User user2 = new User("2","02","Jane", "jane@example.com", "order2");
when(userRepository.findAll()).thenReturn(Flux.just(user1, user2));
// Call the method
Flux<User> result = userService.getUsers();
// Verify the output
StepVerifier.create(result)
.expectNext(user1)
.expectNext(user2)
.expectComplete()
.verify();
}
}
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