Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-webflux-mongodb
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sarika Sama
order-management-webflux-mongodb
Commits
9f666188
Commit
9f666188
authored
Jun 14, 2023
by
Sarika Sama
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added swagger and mockito junits test cases
parent
53b2ba47
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
211 additions
and
35 deletions
+211
-35
pom.xml
pom.xml
+10
-0
WebfluxMongodbOrderManagementApplication.java
...rmanagement/WebfluxMongodbOrderManagementApplication.java
+3
-0
OrdersController.java
...uxmongodbordermanagement/controller/OrdersController.java
+2
-1
UserController.java
...fluxmongodbordermanagement/controller/UserController.java
+1
-1
Order.java
...com/nisum/webfluxmongodbordermanagement/entity/Order.java
+8
-4
User.java
.../com/nisum/webfluxmongodbordermanagement/entity/User.java
+2
-5
UserOrders.java
...isum/webfluxmongodbordermanagement/entity/UserOrders.java
+2
-8
UserOrdersService.java
...fluxmongodbordermanagement/service/UserOrdersService.java
+9
-9
application.properties
src/main/resources/application.properties
+7
-7
UserControllerTest.java
...mongodbordermanagement/controller/UserControllerTest.java
+55
-0
OrdersServiceTest.java
...fluxmongodbordermanagement/service/OrdersServiceTest.java
+58
-0
UserServiceTest.java
...ebfluxmongodbordermanagement/service/UserServiceTest.java
+54
-0
No files found.
pom.xml
View file @
9f666188
...
@@ -21,6 +21,16 @@
...
@@ -21,6 +21,16 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-mongodb-reactive
</artifactId>
<artifactId>
spring-boot-starter-data-mongodb-reactive
</artifactId>
</dependency>
</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>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-webflux
</artifactId>
<artifactId>
spring-boot-starter-webflux
</artifactId>
...
...
src/main/java/com/nisum/webfluxmongodbordermanagement/WebfluxMongodbOrderManagementApplication.java
View file @
9f666188
package
com
.
nisum
.
webfluxmongodbordermanagement
;
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.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
@SpringBootApplication
@OpenAPIDefinition
(
info
=
@Info
(
title
=
"APIs"
,
version
=
"1.0"
,
description
=
"Documentation APIs v1.0"
))
public
class
WebfluxMongodbOrderManagementApplication
{
public
class
WebfluxMongodbOrderManagementApplication
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/com/nisum/webfluxmongodbordermanagement/controller/OrdersController.java
View file @
9f666188
...
@@ -14,7 +14,8 @@ public class OrdersController {
...
@@ -14,7 +14,8 @@ public class OrdersController {
private
OrdersService
ordersService
;
private
OrdersService
ordersService
;
@GetMapping
(
"/orders"
)
@GetMapping
(
"/orders"
)
public
Flux
<
Order
>
getOrders
(){
return
ordersService
.
getOrders
();
public
Flux
<
Order
>
getOrders
(){
return
ordersService
.
getOrders
();
}
}
}
}
src/main/java/com/nisum/webfluxmongodbordermanagement/controller/UserController.java
View file @
9f666188
...
@@ -18,7 +18,7 @@ public class UserController {
...
@@ -18,7 +18,7 @@ public class UserController {
UserService
userService
;
UserService
userService
;
@GetMapping
(
"/users"
)
@GetMapping
(
"/users"
)
public
Flux
<
?
>
getUsers
()
{
public
Flux
<
User
>
getUsers
()
{
return
userService
.
getUsers
();
return
userService
.
getUsers
();
}
}
}
}
...
...
src/main/java/com/nisum/webfluxmongodbordermanagement/entity/Order.java
View file @
9f666188
...
@@ -13,13 +13,17 @@ import org.springframework.data.mongodb.core.mapping.Field;
...
@@ -13,13 +13,17 @@ import org.springframework.data.mongodb.core.mapping.Field;
@Document
(
collection
=
"orders"
)
@Document
(
collection
=
"orders"
)
public
class
Order
{
public
class
Order
{
@Id
@Id
private
String
_id
;
private
String
orderId
;
private
String
orderId
;
@Field
(
"user_Id"
)
private
String
userId
;
private
String
userId
;
@Field
(
"transaction_Id"
)
private
String
transactionId
;
private
String
transactionId
;
@Field
(
"tracking_Id"
)
private
String
trackingId
;
private
String
trackingId
;
@Field
(
"status"
)
private
String
status
;
private
String
status
;
}
}
src/main/java/com/nisum/webfluxmongodbordermanagement/entity/User.java
View file @
9f666188
...
@@ -13,14 +13,11 @@ import java.util.List;
...
@@ -13,14 +13,11 @@ import java.util.List;
@Getter
@Getter
@Document
(
collection
=
"user"
)
@Document
(
collection
=
"user"
)
public
class
User
{
public
class
User
{
@Id
@Id
private
String
_id
;
private
String
userId
;
private
String
userId
;
@Field
(
"user_Name"
)
private
String
userName
;
private
String
userName
;
@Field
(
"email_Id"
)
private
String
emailId
;
private
String
emailId
;
@Field
(
"order_Id"
)
private
String
orderId
;
private
String
orderId
;
private
List
<
Order
>
orders
;
}
}
src/main/java/com/nisum/webfluxmongodbordermanagement/entity/UserOrders.java
View file @
9f666188
...
@@ -13,16 +13,10 @@ import java.util.List;
...
@@ -13,16 +13,10 @@ import java.util.List;
@AllArgsConstructor
@AllArgsConstructor
public
class
UserOrders
{
public
class
UserOrders
{
@Id
private
String
_id
;
private
String
_id
;
@Field
(
"user_Id"
)
private
String
userId
;
private
String
userId
;
@Field
(
"user_Name"
)
private
String
userName
;
private
String
userName
;
@Field
(
"email_Id"
)
private
String
emailId
;
private
String
emailId
;
@Field
(
"order_Id"
)
// private String orderId;
private
String
orderId
;
private
List
<
Order
>
order
;
private
List
<
Order
>
orders
;
}
}
\ No newline at end of file
src/main/java/com/nisum/webfluxmongodbordermanagement/service/UserOrdersService.java
View file @
9f666188
...
@@ -19,10 +19,10 @@ public class UserOrdersService {
...
@@ -19,10 +19,10 @@ public class UserOrdersService {
public
Flux
<
UserOrders
>
getAllUsersWithOrders
()
{
public
Flux
<
UserOrders
>
getAllUsersWithOrders
()
{
LookupOperation
lookupOperation
=
LookupOperation
.
newLookup
().
LookupOperation
lookupOperation
=
LookupOperation
.
newLookup
().
from
(
"
O
rders"
).
from
(
"
o
rders"
).
localField
(
"user
_
Id"
).
localField
(
"userId"
).
foreignField
(
"user
_
Id"
).
foreignField
(
"userId"
).
as
(
"order
s
"
);
as
(
"order"
);
Aggregation
aggregation
=
Aggregation
.
newAggregation
(
lookupOperation
);
Aggregation
aggregation
=
Aggregation
.
newAggregation
(
lookupOperation
);
return
reactiveMongoTemplate
.
aggregate
(
aggregation
,
"user"
,
UserOrders
.
class
);
return
reactiveMongoTemplate
.
aggregate
(
aggregation
,
"user"
,
UserOrders
.
class
);
...
@@ -30,12 +30,12 @@ public class UserOrdersService {
...
@@ -30,12 +30,12 @@ public class UserOrdersService {
public
Flux
<
UserOrders
>
getUsersWithOrders
(
String
userId
)
{
public
Flux
<
UserOrders
>
getUsersWithOrders
(
String
userId
)
{
LookupOperation
lookupOperation
=
LookupOperation
.
newLookup
().
LookupOperation
lookupOperation
=
LookupOperation
.
newLookup
().
from
(
"
O
rders"
).
from
(
"
o
rders"
).
localField
(
"user
_
Id"
).
localField
(
"userId"
).
foreignField
(
"user
_
Id"
).
foreignField
(
"userId"
).
as
(
"order
s
"
);
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
);
Aggregation
aggregation
=
Aggregation
.
newAggregation
(
lookupOperation
,
match
);
...
...
src/main/resources/application.properties
View file @
9f666188
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.uri=mongodb://localhost:27017/user-orders-db
spring.data.mongodb.user-orders-db.database
=
user-orders-db
#
spring.data.mongodb.user-orders-db.database=user-orders-db
#server.port=9001
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=nisum
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
#spring.data.mongodb.orders-db.database=orders-db
#spring.data.mongodb.orders-db.database=orders-db
src/test/java/com/nisum/webfluxmongodbordermanagement/controller/UserControllerTest.java
0 → 100644
View file @
9f666188
//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();
// }
//
//
//
//}
src/test/java/com/nisum/webfluxmongodbordermanagement/service/OrdersServiceTest.java
0 → 100644
View file @
9f666188
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
();
}
}
src/test/java/com/nisum/webfluxmongodbordermanagement/service/UserServiceTest.java
0 → 100644
View file @
9f666188
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
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment