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
Bhaskar Katakam
OTSWithFeign
Commits
3e892827
Commit
3e892827
authored
Apr 07, 2020
by
sgandhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added test cases
parent
d373c0f8
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
185 additions
and
53 deletions
+185
-53
build.gradle
build.gradle
+1
-0
readme.md
readme.md
+2
-1
EndOfSaleEntity.java
.../nisum/offertransactionservice/model/EndOfSaleEntity.java
+2
-0
Item.java
...in/java/com/nisum/offertransactionservice/model/Item.java
+0
-2
EndOfTransactionService.java
...ertransactionservice/service/EndOfTransactionService.java
+15
-11
OfferCallingPEService.java
...ffertransactionservice/service/OfferCallingPEService.java
+13
-10
application.properties
src/main/resources/application.properties
+2
-2
EndOfSaleTest.java
.../nisum/offertransactionservice/service/EndOfSaleTest.java
+71
-0
EndOfTransactionTest.java
...offertransactionservice/service/EndOfTransactionTest.java
+46
-0
OfferServiceTest.java
...sum/offertransactionservice/service/OfferServiceTest.java
+33
-27
No files found.
build.gradle
View file @
3e892827
...
...
@@ -36,6 +36,7 @@ dependencies {
compile
group:
'org.codehaus.jackson'
,
name:
'jackson-mapper-asl'
,
version:
'1.9.0'
// https://mvnrepository.com/artifact/com.vladmihalcea/hibernate-types-parent
compile
'com.vladmihalcea:hibernate-types-52:2.0.0'
testCompile
'com.squareup.okhttp3:mockwebserver:3.8.0'
implementation
group:
'junit'
,
name:
'junit'
,
version:
'4.12'
testImplementation
(
'org.springframework.boot:spring-boot-starter-test'
)
...
...
readme.md
View file @
3e892827
...
...
@@ -65,7 +65,8 @@ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE endofsale(
uuid uuid NOT NULL DEFAULT uuid_generate_v1(),
offertransactionresponse jsonb NOT NULL,
offers jsonb NOT NULL
offers jsonb NOT NULL,
isprocessed boolean
);
...
...
src/main/java/com/nisum/offertransactionservice/model/EndOfSaleEntity.java
View file @
3e892827
...
...
@@ -35,4 +35,6 @@ public class EndOfSaleEntity {
@Type
(
type
=
"jsonb"
)
@Column
(
name
=
"offers"
)
String
offers
;
@Column
(
name
=
"isprocessed"
)
Boolean
isProcessed
=
Boolean
.
TRUE
;
}
src/main/java/com/nisum/offertransactionservice/model/Item.java
View file @
3e892827
...
...
@@ -25,6 +25,4 @@ public class Item {
@NotNull
String
cmsCoupouns
;
String
offerIdApplied
;
}
src/main/java/com/nisum/offertransactionservice/service/EndOfTransactionService.java
View file @
3e892827
...
...
@@ -25,10 +25,10 @@ public class EndOfTransactionService {
private
WebClient
webClient
;
@Value
(
"${store.
consum
er.url}"
)
@Value
(
"${store.
produc
er.url}"
)
private
String
storeConsumerUrl
;
@Value
(
"${store.
consum
er.baseUrl}"
)
@Value
(
"${store.
produc
er.baseUrl}"
)
private
String
baseUrl
;
@PostConstruct
...
...
@@ -61,7 +61,13 @@ public class EndOfTransactionService {
throw
new
GlobalApiGenericException
(
"Unable to get the Offer transaction uuid "
,
new
Exception
(
"exception e"
),
"400"
,
false
);
}
log
.
info
(
"Store Consumer WebClient call Start"
);
Mono
<
String
>
endOfTransactionRes
=
webClient
.
post
().
Mono
<
String
>
endOfTransactionRes
=
getStringMono
(
uuid
);
log
.
debug
(
"Store consumer WebClient call End"
);
return
endOfTransactionRes
.
toString
();
}
public
Mono
<
String
>
getStringMono
(
String
uuid
)
{
return
webClient
.
post
().
uri
(
storeConsumerUrl
).
accept
(
MediaType
.
APPLICATION_JSON
).
contentType
(
MediaType
.
APPLICATION_JSON
).
...
...
@@ -70,8 +76,6 @@ public class EndOfTransactionService {
onStatus
(
HttpStatus:
:
is4xxClientError
,
clientResponse
->
handleError
(
clientResponse
)).
onStatus
(
HttpStatus:
:
is5xxServerError
,
clientResponse
->
handleError
(
clientResponse
)).
bodyToMono
(
String
.
class
);
log
.
debug
(
"Store consumer WebClient call End"
);
return
endOfTransactionRes
.
toString
();
}
...
...
src/main/java/com/nisum/offertransactionservice/service/OfferCallingPEService.java
View file @
3e892827
...
...
@@ -67,7 +67,6 @@ public class OfferCallingPEService {
});
}
public
OfferTransactionResponse
getDiscountedItemList
(
OfferTransactionRequest
offerTransactionRequest
)
{
log
.
info
(
"Inside getDiscountedItemList Method"
);
List
<
OfferLookup
>
eligibleOffer
=
new
ArrayList
();
...
...
@@ -81,7 +80,15 @@ public class OfferCallingPEService {
PERequest
peRequest
=
offerConverter
.
apply
(
offerTransactionRequest
);
peRequest
.
setEligibleOffers
(
eligibleOffer
);
log
.
info
(
"Promotional Engine WebClient call Start"
);
Flux
<
PEResponse
>
peResponseFlux
=
webClient
.
post
().
Flux
<
PEResponse
>
peResponseFlux
=
getPeResponseFlux
(
peRequest
);
log
.
debug
(
"Promotional Engine WebClient call End"
);
offerTransactionResponse
=
peResponseToOfferTransactionResConverter
.
apply
(
peResponseFlux
.
toStream
().
findFirst
().
get
());
log
.
debug
(
"Offer Transaction Response {}"
,
offerTransactionResponse
);
return
offerTransactionResponse
;
}
public
Flux
<
PEResponse
>
getPeResponseFlux
(
PERequest
peRequest
)
{
return
webClient
.
post
().
uri
(
promotionEngineUrl
).
accept
(
MediaType
.
APPLICATION_JSON
).
contentType
(
MediaType
.
APPLICATION_JSON
).
...
...
@@ -90,10 +97,6 @@ public class OfferCallingPEService {
onStatus
(
HttpStatus:
:
is4xxClientError
,
clientResponse
->
handleError
(
clientResponse
)).
onStatus
(
HttpStatus:
:
is5xxServerError
,
clientResponse
->
handleError
(
clientResponse
)).
bodyToFlux
(
PEResponse
.
class
);
log
.
debug
(
"Promotional Engine WebClient call End"
);
offerTransactionResponse
=
peResponseToOfferTransactionResConverter
.
apply
(
peResponseFlux
.
toStream
().
findFirst
().
get
());
log
.
debug
(
"Offer Transaction Response {}"
,
offerTransactionResponse
);
return
offerTransactionResponse
;
}
private
Mono
<?
extends
Throwable
>
handleError
(
ClientResponse
clientResponse
)
throws
GlobalApiGenericException
{
...
...
src/main/resources/application.properties
View file @
3e892827
...
...
@@ -3,6 +3,6 @@ spring.datasource.username=user
spring.datasource.password
=
password123
promotion.engine.calculate.discount.url
=
/promotionEngine/calculateDiscount
promotion.engine.baseUrl
=
http://localhost:8081
store.
consumer.url
=
central
/producer
store.
producer.url
=
/store
/producer
//
TODO
:
change the baseUrl post confirmation from Amar
store.consumer.baseUrl
=
http://localhost:8081
\ No newline at end of file
store.producer.baseUrl
=
http://localhost:8081
\ No newline at end of file
src/test/java/com/nisum/offertransactionservice/service/EndOfSaleTest.java
0 → 100644
View file @
3e892827
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.dao.EndOfSaleRepo
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.model.*
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.ArgumentMatchers
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.MockitoAnnotations
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
EndOfSaleTest
{
@Mock
private
EndOfSaleService
endOfSaleService
;
@Mock
private
EndOfSaleRepo
endOfSaleRepo
;
@Before
public
void
setUp
()
throws
Exception
{
MockitoAnnotations
.
initMocks
(
this
);
}
@Test
public
void
putEndofSaleResInDbTest
()
throws
IOException
{
EndOfSaleReq
endOfSaleReq
=
getEndOfSaleReq
();
Mockito
.
doNothing
().
when
(
endOfSaleRepo
.
save
(
ArgumentMatchers
.
any
()));
UUID
uuid
=
endOfSaleService
.
putEndofSaleResInDb
(
endOfSaleReq
);
Assert
.
assertNotNull
(
uuid
);
}
private
EndOfSaleReq
getEndOfSaleReq
()
{
EndOfSaleReq
endOfSaleReq
=
new
EndOfSaleReq
();
endOfSaleReq
.
setOfferTransactionResponse
(
retOfferTransRes
());
endOfSaleReq
.
setOffers
(
returnOffers
());
return
endOfSaleReq
;
}
private
OfferTransactionResponse
retOfferTransRes
()
{
OfferTransactionResponse
offerTransactionResponse
=
new
OfferTransactionResponse
();
offerTransactionResponse
.
setHhid
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
,
"cmsCoupons"
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
offerTransactionResponse
.
setDiscountedItemList
(
itemList
);
return
offerTransactionResponse
;
}
public
List
<
OfferLookup
>
returnOffers
()
{
OfferLookup
offerLookup1
=
new
OfferLookup
(
"1"
,
"12"
,
"234"
,
"02"
,
"AND"
,
"BOGO"
);
OfferLookup
offerLookup2
=
new
OfferLookup
(
"2"
,
"13"
,
"234"
,
"02"
,
"OR"
,
"BXGY"
);
List
<
OfferLookup
>
offerLookups
=
new
ArrayList
<>();
offerLookups
.
add
(
offerLookup1
);
offerLookups
.
add
(
offerLookup2
);
return
offerLookups
.
stream
().
collect
(
Collectors
.
toList
());
}
}
src/test/java/com/nisum/offertransactionservice/service/EndOfTransactionTest.java
0 → 100644
View file @
3e892827
package
com
.
nisum
.
offertransactionservice
.
service
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.MockitoAnnotations
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
import
reactor.core.publisher.Mono
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
EndOfTransactionTest
{
@Mock
private
EndOfTransactionService
endOfTransactionService
;
@Mock
private
WebTestClient
webTestClient
;
@Before
public
void
setUp
()
throws
Exception
{
MockitoAnnotations
.
initMocks
(
this
);
}
@Test
public
void
getStringMonoTest
()
{
String
uuid
=
"86fd4146-0540-405b-b621-a95f4ccdfa0d"
;
webTestClient
.
post
().
uri
(
"http://localhost:8081/store/producer"
)
.
contentType
(
MediaType
.
APPLICATION_JSON
)
.
body
(
Mono
.
just
(
uuid
),
String
.
class
)
.
exchange
()
.
expectBody
().
json
(
""
);
}
@Test
public
void
endOfTransaction
()
{
String
uuid
=
"86fd4146-0540-405b-b621-a95f4ccdfa0d"
;
Mockito
.
when
(
endOfTransactionService
.
getStringMono
(
uuid
)).
thenReturn
(
Mono
.
just
(
""
));
Assert
.
assertNotNull
(
endOfTransactionService
.
endOfTransaction
(
uuid
));
}
}
src/test/java/com/nisum/offertransactionservice/service/OfferServiceTest.java
View file @
3e892827
...
...
@@ -11,25 +11,28 @@ import org.junit.runner.RunWith;
import
org.mockito.*
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.context.annotation.PropertySource
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.TestPropertySource
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.annotation.DirtiesContext
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@RunWith
(
MockitoJUnitRunner
.
class
)
@SpringBootTest
@DirtiesContext
@AutoConfigureWebTestClient
@PropertySource
(
"classpath:application-test.yml"
)
public
class
OfferServiceTest
{
@Mock
private
RestTemplate
restTemplate
;
private
WebTestClient
webTestClient
;
@Mock
private
OfferConverter
offerConverter
;
...
...
@@ -40,54 +43,57 @@ public class OfferServiceTest {
@Mock
private
PEResponseToOfferTransactionResConverter
peResponseToOfferTransactionResConverter
;
// @Spy
// private final SpringJunitService springJunitService = new SpringJunitService();
@InjectMocks
private
OfferCallingPEService
offerCallingPEService
=
new
OfferCallingPEService
();
@Value
(
"${promotion.engine.calculate.discount.url}"
)
private
String
promotionEngineUrl
;
private
String
promotionEngineUrl
;
@Before
public
void
setUp
()
throws
Exception
{
MockitoAnnotations
.
initMocks
(
this
);
}
@Test
public
void
getPeResponseFluxTest
()
{
webTestClient
.
post
().
uri
(
"hhtp://localhost:8081/"
+
promotionEngineUrl
)
.
contentType
(
MediaType
.
APPLICATION_JSON
)
.
body
(
Mono
.
just
(
getPEReq
()),
PERequest
.
class
)
.
exchange
()
.
expectBody
()
.
jsonPath
(
"$.hhid"
).
isEqualTo
(
"123"
);
}
@Test
public
void
serviceTest
()
{
//ReflectionTestUtils.setField(springJunitService, "securityKey", "it's a security key");
OfferTransactionRequest
offerTransactionRequest
=
getOfferTransactionRequest
();
Mockito
.
when
(
offerLookupRepo
.
findAll
()).
thenReturn
(
returnOffers
());
Mockito
.
when
(
offerConverter
.
apply
(
getOfferTransactionRequest
())).
thenReturn
(
getPEReq
());
Mockito
.
when
(
restTemplate
.
postForEntity
(
"http://localhost:8081"
+
promotionEngineUrl
,
getPEReq
(),
PEResponse
.
class
))
.
thenReturn
(
new
ResponseEntity
<
PEResponse
>(
getPeResponse
(),
HttpStatus
.
OK
));
Mockito
.
when
(
offerCallingPEService
.
getPeResponseFlux
(
getPEReq
()
))
.
thenReturn
(
Flux
.
just
(
getPeResponse
()
));
Mockito
.
when
(
peResponseToOfferTransactionResConverter
.
apply
(
getPeResponse
())).
thenReturn
(
retOfferTransRes
());
OfferTransactionResponse
offerTransactionResponse
=
offerCallingPEService
.
getDiscountedItemList
(
offerTransactionRequest
);
Assert
.
assertEquals
(
offerTransactionResponse
,
retOfferTransRes
());
Assert
.
assertEquals
(
offerTransactionResponse
,
retOfferTransRes
());
}
private
OfferTransactionResponse
retOfferTransRes
()
{
OfferTransactionResponse
offerTransactionResponse
=
new
OfferTransactionResponse
();
offerTransactionResponse
.
setHhid
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
,
"cmsCoupons"
);
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
,
"cmsCoupons"
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
offerTransactionResponse
.
setDiscountedItemList
(
itemList
);
return
offerTransactionResponse
;
}
private
PEResponse
getPeResponse
(){
private
PEResponse
getPeResponse
()
{
PEResponse
peResponse
=
new
PEResponse
();
peResponse
.
setHhid
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
,
"cmsCoupons"
);
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
,
"cmsCoupons"
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
peResponse
.
setDiscountedItemList
(
itemList
);
...
...
@@ -98,8 +104,8 @@ public class OfferServiceTest {
PERequest
peRequest
=
new
PERequest
();
peRequest
.
setHhId
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
13.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
14.05
,
"cmsCoupons"
);
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
13.05
,
"cmsCoupons"
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
14.05
,
"cmsCoupons"
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
peRequest
.
setItemList
(
itemList
);
...
...
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