Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OTSWithFeign
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
Siva Naga Someswara Jatla
OTSWithFeign
Commits
86a9dc0a
Commit
86a9dc0a
authored
May 08, 2020
by
Amar Bogari
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added unit test cases and commented integration test cases code.
parent
50f10b71
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
504 additions
and
579 deletions
+504
-579
ClientService.java
...m/nisum/offertransactionservice/client/ClientService.java
+0
-81
StoreProducerFeignClient.java
...ertransactionservice/client/StoreProducerFeignClient.java
+2
-1
EndOfTransactionService.java
...ertransactionservice/service/EndOfTransactionService.java
+0
-1
OfferCallingPEService.java
...ffertransactionservice/service/OfferCallingPEService.java
+1
-4
ClientServiceTest.java
...sum/offertransactionservice/client/ClientServiceTest.java
+89
-89
AbstractTestBase.java
.../offertransactionservice/controller/AbstractTestBase.java
+0
-27
OfferTransactionControllerIntegrationTest.java
...controller/OfferTransactionControllerIntegrationTest.java
+178
-160
OfferTransactionControllerTest.java
...ionservice/controller/OfferTransactionControllerTest.java
+195
-195
EndOfTransactionTest.java
...offertransactionservice/service/EndOfTransactionTest.java
+11
-8
OfferServiceTest.java
...sum/offertransactionservice/service/OfferServiceTest.java
+9
-7
application.properties
src/test/resources/application.properties
+19
-6
No files found.
src/main/java/com/nisum/offertransactionservice/client/ClientService.java
deleted
100644 → 0
View file @
50f10b71
package
com
.
nisum
.
offertransactionservice
.
client
;
import
com.nisum.offertransactionservice.config.OfferTransactionConfig
;
import
com.nisum.offertransactionservice.dto.PERequest
;
import
com.nisum.offertransactionservice.dto.PEResponse
;
import
com.nisum.offertransactionservice.util.ExceptionUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.reactive.function.client.ExchangeFilterFunction
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
javax.annotation.PostConstruct
;
@Component
@Slf4j
public
class
ClientService
{
private
WebClient
webClient
;
@Autowired
OfferTransactionConfig
offerTransactionConfig
;
@PostConstruct
public
void
init
()
{
webClient
=
WebClient
.
builder
().
baseUrl
(
offerTransactionConfig
.
getPeBaseUrl
()).
defaultHeader
(
HttpHeaders
.
CONTENT_TYPE
,
MediaType
.
APPLICATION_JSON_VALUE
).
filter
(
logRequest
()).
filter
(
logResponse
()).
build
();
}
private
ExchangeFilterFunction
logRequest
()
{
return
ExchangeFilterFunction
.
ofRequestProcessor
(
clientRequest
->
{
log
.
info
(
"Store Consumer Request {}"
,
clientRequest
);
return
Mono
.
just
(
clientRequest
);
});
}
private
ExchangeFilterFunction
logResponse
()
{
return
ExchangeFilterFunction
.
ofResponseProcessor
(
clientResponse
->
{
log
.
info
(
"Store Consumer Request {}"
,
clientResponse
);
return
Mono
.
just
(
clientResponse
);
});
}
public
Mono
<
String
>
getStringMono
(
String
uuid
)
{
WebClient
build
=
WebClient
.
builder
().
baseUrl
(
offerTransactionConfig
.
getSpBaseUrl
()).
build
();
return
build
.
post
().
uri
(
offerTransactionConfig
.
getStoreProducerUrl
()).
accept
(
MediaType
.
APPLICATION_JSON
).
body
(
Mono
.
just
(
uuid
),
String
.
class
).
retrieve
().
onStatus
(
HttpStatus:
:
is4xxClientError
,
ExceptionUtil:
:
handleError
).
onStatus
(
HttpStatus:
:
is5xxServerError
,
ExceptionUtil:
:
handleError
).
bodyToMono
(
String
.
class
);
}
public
PEResponse
getPeResponseFlux
(
PERequest
peRequest
)
{
return
webClient
.
post
().
uri
(
offerTransactionConfig
.
getPromotionEngineUrl
()).
accept
(
MediaType
.
APPLICATION_JSON
).
contentType
(
MediaType
.
APPLICATION_JSON
).
body
(
Mono
.
just
(
peRequest
),
PERequest
.
class
).
retrieve
().
onStatus
(
HttpStatus:
:
is4xxClientError
,
ExceptionUtil:
:
handleError
).
onStatus
(
HttpStatus:
:
is5xxServerError
,
ExceptionUtil:
:
handleError
).
bodyToFlux
(
PEResponse
.
class
).
blockFirst
();
}
}
src/main/java/com/nisum/offertransactionservice/client/StoreProducerFeignClient.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
client
;
import
com.nisum.offertransactionservice.config.FeignClientConfig
;
import
com.nisum.offertransactionservice.dto.PERequest
;
import
com.nisum.offertransactionservice.dto.PEResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.PostMapping
;
@FeignClient
(
name
=
"${storeproducer.application.name}"
)
@FeignClient
(
name
=
"${storeproducer.application.name}"
,
configuration
=
FeignClientConfig
.
class
)
public
interface
StoreProducerFeignClient
{
@PostMapping
(
value
=
"${endpoint.url.storeProducerUrl}"
)
...
...
src/main/java/com/nisum/offertransactionservice/service/EndOfTransactionService.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.client.ClientService
;
import
com.nisum.offertransactionservice.client.StoreProducerFeignClient
;
import
com.nisum.offertransactionservice.genericexception.GlobalApiGenericException
;
import
lombok.extern.slf4j.Slf4j
;
...
...
src/main/java/com/nisum/offertransactionservice/service/OfferCallingPEService.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.client.ClientService
;
import
com.nisum.offertransactionservice.client.PromotionEngineFeignClient
;
import
com.nisum.offertransactionservice.client.StoreProducerFeignClient
;
import
com.nisum.offertransactionservice.converter.OfferConvertion
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.dao.OfferMetaDataRepo
;
...
...
@@ -34,9 +34,6 @@ public class OfferCallingPEService {
@Autowired
private
OfferLookupRepo
offerLookupRepo
;
@Autowired
private
ClientService
clientService
;
@Autowired
private
OfferMetaDataRepo
offerMetaDataRepo
;
...
...
src/test/java/com/nisum/offertransactionservice/client/ClientServiceTest.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
client
;
import
com.nisum.offertransactionservice.config.OfferTransactionConfig
;
import
com.nisum.offertransactionservice.dto.Item
;
import
com.nisum.offertransactionservice.dto.PERequest
;
import
com.nisum.offertransactionservice.dto.PEResponse
;
import
org.junit.jupiter.api.Assertions
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.MockitoAnnotations
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ClientServiceTest
{
@InjectMocks
ClientService
clientService
;
@Mock
private
WebClient
webClientMock
;
@Mock
private
WebClient
.
RequestHeadersSpec
requestHeadersMock
;
@Mock
private
WebClient
.
RequestBodySpec
requestBodyMock
;
@Mock
private
WebClient
.
RequestBodyUriSpec
requestBodyUriMock
;
@Mock
private
WebClient
.
ResponseSpec
responseMock
;
@Mock
OfferTransactionConfig
offerTransactionConfig
;
@BeforeEach
public
void
setUp
()
throws
Exception
{
MockitoAnnotations
.
initMocks
(
this
);
}
@Test
void
getStringMonoTest
(){
String
uuid
=
"86fd4146-0540-405b-b621-a95f4ccdfa0d"
;
//when(offerTransactionConfig.getPeBaseUrl()).thenReturn("http://localhost:8089");
//when(offerTransactionConfig.getSpBaseUrl()).thenReturn("http://localhost:8081");
// when(webClientMock.post()).thenReturn(requestBodyUriMock);
// when(requestBodyUriMock.uri("/store/producer")).thenReturn(requestBodyMock);
// when(requestBodyMock.bodyValue(Mono.just(uuid))).thenReturn(requestHeadersMock);
// when(requestHeadersMock.retrieve()).thenReturn(responseMock);
// when(responseMock.bodyToMono(String.class)).thenReturn(Mono.just(uuid));
Mono
<
String
>
stringMono
=
clientService
.
getStringMono
(
uuid
);
Assertions
.
assertNotNull
(
stringMono
);
}
private
PERequest
getPEReq
()
{
PERequest
peRequest
=
new
PERequest
();
peRequest
.
setHhId
(
123L
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
13.05
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
14.05
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
peRequest
.
setItemList
(
itemList
);
return
peRequest
;
}
private
PEResponse
getPeResponse
()
{
PEResponse
peResponse
=
new
PEResponse
();
peResponse
.
setHhid
(
123L
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
peResponse
.
setDiscountedItemList
(
itemList
);
return
peResponse
;
}
}
//
package com.nisum.offertransactionservice.client;
//
//
//
import com.nisum.offertransactionservice.config.OfferTransactionConfig;
//
import com.nisum.offertransactionservice.dto.Item;
//
import com.nisum.offertransactionservice.dto.PERequest;
//
import com.nisum.offertransactionservice.dto.PEResponse;
//
import org.junit.jupiter.api.Assertions;
//
import org.junit.jupiter.api.BeforeEach;
//
import org.junit.jupiter.api.Test;
//
import org.mockito.InjectMocks;
//
import org.mockito.Mock;
//
import org.mockito.MockitoAnnotations;
//
import org.springframework.web.reactive.function.client.WebClient;
//
import reactor.core.publisher.Mono;
//
//
import java.util.ArrayList;
//
import java.util.List;
//
//
public class ClientServiceTest {
//
//
//
@InjectMocks
//
ClientService clientService;
//
//
@Mock
//
private WebClient webClientMock;
//
//
@Mock
//
private WebClient.RequestHeadersSpec requestHeadersMock;
//
//
@Mock
//
private WebClient.RequestBodySpec requestBodyMock;
//
//
@Mock
//
private WebClient.RequestBodyUriSpec requestBodyUriMock;
//
//
@Mock
//
private WebClient.ResponseSpec responseMock;
//
//
@Mock
//
OfferTransactionConfig offerTransactionConfig;
//
//
//
@BeforeEach
//
public void setUp() throws Exception {
//
MockitoAnnotations.initMocks(this);
//
}
//
//
@Test
//
void getStringMonoTest(){
//
String uuid = "86fd4146-0540-405b-b621-a95f4ccdfa0d";
//
//when(offerTransactionConfig.getPeBaseUrl()).thenReturn("http://localhost:8089");
//
//when(offerTransactionConfig.getSpBaseUrl()).thenReturn("http://localhost:8081");
//
//
when(webClientMock.post()).thenReturn(requestBodyUriMock);
//
//
when(requestBodyUriMock.uri("/store/producer")).thenReturn(requestBodyMock);
//
//
when(requestBodyMock.bodyValue(Mono.just(uuid))).thenReturn(requestHeadersMock);
//
//
when(requestHeadersMock.retrieve()).thenReturn(responseMock);
//
//
when(responseMock.bodyToMono(String.class)).thenReturn(Mono.just(uuid));
//
Mono<String> stringMono = clientService.getStringMono(uuid);
//
Assertions.assertNotNull(stringMono);
//
}
//
//
//
private PERequest getPEReq() {
//
PERequest peRequest = new PERequest();
//
peRequest.setHhId(123L);
//
List<Item> itemList = new ArrayList<>();
//
Item item1 = new Item("Coke", "12", 13.05);
//
Item item2 = new Item("Thumpsup", "11", 14.05);
//
itemList.add(item1);
//
itemList.add(item2);
//
peRequest.setItemList(itemList);
//
return peRequest;
//
}
//
//
private PEResponse getPeResponse() {
//
PEResponse peResponse = new PEResponse();
//
peResponse.setHhid(123L);
//
List<Item> itemList = new ArrayList<>();
//
Item item1 = new Item("Coke", "12", 6.05);
//
Item item2 = new Item("Thumpsup", "11", 12.32);
//
itemList.add(item1);
//
itemList.add(item2);
//
peResponse.setDiscountedItemList(itemList);
//
return peResponse;
//
}
//
//
}
src/test/java/com/nisum/offertransactionservice/controller/AbstractTestBase.java
deleted
100644 → 0
View file @
50f10b71
package
com
.
nisum
.
offertransactionservice
.
controller
;
import
com.github.tomakehurst.wiremock.WireMockServer
;
import
org.junit.jupiter.api.AfterAll
;
import
org.junit.jupiter.api.BeforeAll
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
abstract
class
AbstractTestBase
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AbstractTestBase
.
class
);
protected
final
static
int
HTTP_ENDPOINT_PORT
=
9090
;
protected
static
WireMockServer
mWireMockServer
=
new
WireMockServer
(
HTTP_ENDPOINT_PORT
);
@BeforeAll
public
static
void
setup
()
{
mWireMockServer
.
start
();
}
@AfterAll
public
static
void
tearDown
()
{
/* Stop the WireMock server. */
mWireMockServer
.
stop
();
}
}
src/test/java/com/nisum/offertransactionservice/controller/OfferTransactionControllerIntegrationTest.java
View file @
86a9dc0a
This diff is collapsed.
Click to expand it.
src/test/java/com/nisum/offertransactionservice/controller/OfferTransactionControllerTest.java
View file @
86a9dc0a
This diff is collapsed.
Click to expand it.
src/test/java/com/nisum/offertransactionservice/service/EndOfTransactionTest.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.client.
ClientService
;
import
com.nisum.offertransactionservice.client.
StoreProducerFeignClient
;
import
com.nisum.offertransactionservice.genericexception.GlobalApiGenericException
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.DisplayName
;
...
...
@@ -11,10 +11,11 @@ import org.mockito.ArgumentMatchers;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.MockitoAnnotations
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
reactor.core.publisher.Mono
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNotNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertThrows
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
import
static
org
.
mockito
.
Mockito
.
when
;
public
class
EndOfTransactionTest
{
...
...
@@ -23,7 +24,8 @@ public class EndOfTransactionTest {
private
EndOfTransactionService
endOfTransactionService
;
@Mock
private
ClientService
clientService
;
@Autowired
private
StoreProducerFeignClient
storeProducerFeignClient
;
@BeforeEach
public
void
setUp
()
throws
Exception
{
...
...
@@ -35,10 +37,11 @@ public class EndOfTransactionTest {
@ParameterizedTest
@ValueSource
(
strings
={
"86fd4146-0540-405b-b621-a95f4ccdfa0d"
})
public
void
endOfTransactionTest
(
String
uuid
)
{
when
(
clientService
.
getStringMono
(
ArgumentMatchers
.
any
())).
thenReturn
(
Mono
.
just
(
"test"
));
assertNotNull
(
endOfTransactionService
.
endOfTransaction
(
uuid
));
ResponseEntity
<
String
>
responseEntity
=
ResponseEntity
.
ok
(
"test"
);
when
(
storeProducerFeignClient
.
callStoreProducer
(
ArgumentMatchers
.
any
())).
thenReturn
(
responseEntity
);
String
storeResponse
=
endOfTransactionService
.
endOfTransaction
(
uuid
);
assertNotNull
(
storeResponse
);
assertEquals
(
"test"
,
storeResponse
);
}
...
...
src/test/java/com/nisum/offertransactionservice/service/OfferServiceTest.java
View file @
86a9dc0a
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.client.
ClientService
;
import
com.nisum.offertransactionservice.client.
PromotionEngineFeignClient
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.dao.OfferMetaDataRepo
;
import
com.nisum.offertransactionservice.dto.*
;
...
...
@@ -17,6 +17,8 @@ import org.mockito.ArgumentMatchers;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.MockitoAnnotations
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
...
...
@@ -42,21 +44,21 @@ public class OfferServiceTest {
@Mock
private
OfferMetaDataRepo
offerMetaDataRepo
;
@Mock
private
PromotionEngineFeignClient
feignClientService
;
@BeforeEach
public
void
setUp
()
throws
Exception
{
MockitoAnnotations
.
initMocks
(
this
);
}
@Mock
ClientService
clientService
;
@DisplayName
(
"testing the getDiscountedItemList method"
)
@ParameterizedTest
@MethodSource
(
"getOfferTransactionRequestSource"
)
public
void
testGetDiscountedItemList
(
OfferTransactionRequest
offerTransactionRequest
)
{
when
(
offerLookupRepo
.
findByHhId
(
ArgumentMatchers
.
any
(),
ArgumentMatchers
.
any
())).
thenReturn
(
returnOffers
());
when
(
clientService
.
getPeResponseFlux
(
ArgumentMatchers
.
any
())).
thenReturn
(
getPeResponse
());
when
(
feignClientService
.
callPEService
(
ArgumentMatchers
.
any
())).
thenReturn
(
getPeResponse
());
doReturn
(
getOfferMeta
()).
when
(
offerMetaDataRepo
).
findByOfferIdAndOfferStatusIgnoreCase
(
ArgumentMatchers
.
any
(),
ArgumentMatchers
.
any
());
OfferTransactionResponse
offerTransactionResponse
=
offerCallingPEService
.
getDiscountedItemList
(
offerTransactionRequest
);
assertNotNull
(
offerTransactionResponse
,
()->
"response should not be null"
);
...
...
@@ -95,7 +97,7 @@ public class OfferServiceTest {
return
offerTransactionResponse
;
}
private
PEResponse
getPeResponse
()
{
private
ResponseEntity
<
PEResponse
>
getPeResponse
()
{
PEResponse
peResponse
=
new
PEResponse
();
peResponse
.
setHhid
(
123L
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
...
...
@@ -104,7 +106,7 @@ public class OfferServiceTest {
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
peResponse
.
setDiscountedItemList
(
itemList
);
return
peResponse
;
return
ResponseEntity
.
ok
(
peResponse
)
;
}
private
PERequest
getPEReq
()
{
...
...
src/test/resources/application.properties
View file @
86a9dc0a
spring.datasource.url
=
jdbc:postgresql://127.0.0.1:5432/storedb
spring.datasource.username
=
postgres
spring.datasource.password
=
dbpwd
server.port
=
7072
spring.application.name
=
ots
# PE Application properties
pe.application.name
=
pe
pe.application.url
=
http://localhost:9090
endpoint.url.promotionEngineUrl
=
/promotionEngine/calculateDiscount
endpoint.url.peBaseUrl
=
http://localhost:7073
# Store Producer Application properties
storeproducer.application.name
=
storeproducer
endpoint.url.storeProducerUrl
=
/store/producer
endpoint.url.spBaseUrl
=
http://localhost:7070
server.port
=
7072
#Eureka server url
eureka.client.serviceUrl.defaultZone
=
http://localhost:8761/eureka
endpoints.restart.enabled
=
true
endpoints.shutdown.enabled
=
true
endpoints.health.sensitive
=
false
maxattempts
=
3
backoff
=
2000
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