Commit edf374b6 authored by Kali Padhi's avatar Kali Padhi

Modified For Metadata Table

parent 3128d7e4
......@@ -61,8 +61,18 @@ ALTER TABLE public.offerlookup
Once you create use the below query to insert a data
INSERT INTO public.offerlookup(
offer_lookup_id, store_id, terminal, offer_type, offer_id, pre_condition)
VALUES ('1234567890','0001','002','UPC','01','AND');
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id)
VALUES ('0001','001','Customer','o1','AND','54321');
INSERT INTO public.offerlookup(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id)
VALUES ('0001','001','Customer','o2','AND','54321');
INSERT INTO public.offerlookup(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id)
VALUES ('0001','001','Customer','o3','AND','54321');
INSERT INTO public.offerlookup(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id)
VALUES ('0001','001','Customer','o4','AND','54321');
```
```bash
......@@ -90,4 +100,69 @@ INSERT INTO endofsale VALUES ( uuid_generate_v4() ,
```
## Create table offer metadata
```bash
-- Table: public.offer_meta_data
-- DROP TABLE public.offer_meta_data;
CREATE TABLE public.offer_meta_data
(
offerid text COLLATE pg_catalog."default" NOT NULL,
eligibility text COLLATE pg_catalog."default" NOT NULL,
discount_type text COLLATE pg_catalog."default" NOT NULL,
status text COLLATE pg_catalog."default" NOT NULL,
start_time timestamp with time zone NOT NULL,
end_time timestamp with time zone NOT NULL,
offer_desc text COLLATE pg_catalog."default" NOT NULL,
offer_type text COLLATE pg_catalog."default" NOT NULL,
rcpt_txt text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT offer_meta_data_pkey PRIMARY KEY (offerid)
)
TABLESPACE pg_default;
ALTER TABLE public.offer_meta_data
OWNER to "user";
```
```bash
dummy data
==========
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o1','elgibility','dicounted','Active','2020-04-14 19:10:25','2020-04-15 19:10:25',
'30 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o2','elgibility','dicounted','InActive','2020-04-14 19:10:25','2020-04-15 19:10:25',
'20 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o3','elgibility','dicounted','Active','2020-04-15 19:10:25','2020-04-16 19:10:25',
'10 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o4','elgibility','dicounted','Active','2020-04-1 19:10:25','2020-04-15 19:10:25',
'05 percent','5','RCPT TXT');
```
package com.nisum.offertransactionservice.client;
import com.nisum.offertransactionservice.config.OfferTransactionConfig;
import com.nisum.offertransactionservice.genericexception.GlobalApiGenericException;
import com.nisum.offertransactionservice.model.PERequest;
import com.nisum.offertransactionservice.model.PEResponse;
import com.safeway.epe.model.Response;
import com.nisum.offertransactionservice.dto.PERequest;
import com.nisum.offertransactionservice.dto.PEResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.ClientResponse;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import javax.annotation.PostConstruct;
......@@ -72,8 +67,6 @@ public class ClientService {
bodyToMono(String.class);
}
public PEResponse getPeResponseFlux(PERequest peRequest) {
return webClient.post().
uri(offerTransactionConfig.getPromotionEngineUrl()).
......
package com.nisum.offertransactionservice.controller;
import com.nisum.offertransactionservice.model.*;
import com.nisum.offertransactionservice.dto.EndOfSaleReq;
import com.nisum.offertransactionservice.dto.OfferTransactionRequest;
import com.nisum.offertransactionservice.dto.OfferTransactionResponse;
import com.nisum.offertransactionservice.service.EndOfSaleService;
import com.nisum.offertransactionservice.service.EndOfTransactionService;
import com.nisum.offertransactionservice.service.OfferCallingPEService;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
@RestController
@CrossOrigin
......
package com.nisum.offertransactionservice.converter;
import com.nisum.offertransactionservice.model.OfferTransactionRequest;
import com.nisum.offertransactionservice.model.OfferTransactionResponse;
import com.nisum.offertransactionservice.model.PERequest;
import com.nisum.offertransactionservice.model.PEResponse;
import com.nisum.offertransactionservice.dto.*;
import com.nisum.offertransactionservice.model.OfferLookup;
import com.nisum.offertransactionservice.model.OfferMeta;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
......@@ -15,4 +14,10 @@ public interface OfferConvertion {
OfferTransactionResponse map(PEResponse peResponse);
PERequest map(OfferTransactionRequest offerTransactionRequest);
OfferLookupDTO map(OfferLookup offerLookup);
OfferMetaDTO map(OfferMeta offerMeta);
}
package com.nisum.offertransactionservice.dao;
import com.nisum.offertransactionservice.model.OfferMeta;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface OfferMetaDataRepo extends JpaRepository<OfferMeta,String> {
public Optional<OfferMeta> findByOfferIdAndOfferStatus(String offerId,String offerStatus);
}
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.model.OfferLookup;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import lombok.AccessLevel;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
......
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.model.OfferLookupComposite;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = false)
public class OfferLookupDTO {
String id;
String idType;
String offerId;
String storeId;
String terminal;
String preCondition;
OfferMetaDTO offerMetaDTO;
}
package com.nisum.offertransactionservice.dto;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = false)
public class OfferMetaDTO {
String offerId;
LocalDateTime startTime;
LocalDateTime expiryTime;
String offerStatus;
String eligibility;
String discount;
String offerType;
String offerDesc;
String rcptTxt;
}
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.dto.Item;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.dto.Item;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.dto.Item;
import com.nisum.offertransactionservice.model.OfferLookup;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -19,5 +21,5 @@ public class PERequest {
String hhId;
List<Item> itemList;
List<OfferLookup> eligibleOffers;
List<OfferLookupDTO> eligibleOffers;
}
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
import com.nisum.offertransactionservice.dto.Item;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.nisum.offertransactionservice.model;
package com.nisum.offertransactionservice.dto;
public enum Status {
C("C"), L("L"), D("D");
......
......@@ -14,6 +14,9 @@ public class GlobalApiGenericException extends RuntimeException {
private Response response;
public GlobalApiGenericException() {
}
public GlobalApiGenericException(Response response,String statusCode){
this.response=response;
this.statusCode= statusCode;
......
......@@ -6,30 +6,36 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = false)
@Entity
@Table(name = "offer_lookup")
@Table(name = "offerlookup")
@IdClass(OfferLookupComposite.class)
public class OfferLookup {
@Id
@Column(name = "offer_lookup_id")
String id;
@Id
@Column(name ="offer_type")
String idType;
@Id
@Column(name ="offer_id")
String offerId;
@Column(name ="store_id")
String storeId;
@Column(name ="terminal")
String terminal;
@Column(name ="pre_condition")
String preCondition;
@Column(name ="offer_type")
String idType;
}
package com.nisum.offertransactionservice.model;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = false)
public class OfferLookupComposite implements Serializable {
@Column(name = "offer_lookup_id")
String id;
@Column(name ="offer_type")
String idType;
@Column(name ="offer_id")
String offerId;
}
package com.nisum.offertransactionservice.model;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = false)
@Entity
@Table(name = "offer_meta_data")
public class OfferMeta {
@Id
@Column(name="offerid")
String offerId;
@Column(name="start_time")
LocalDateTime startTime;
@Column(name="end_time")
LocalDateTime expiryTime;
Status status;
@Column(name="offer_meta_status")
String offerStatus;
@Column(name="eligibility")
String eligibility;
@Column(name="discount_type")
String discount;
@Column(name="offer_type")
String offerType;
@Column(name="offer_desc")
String offerDesc;
@Column(name="rcpt_txt")
String rcptTxt;
Integer discountThreshold;
String offerLimit;
}
package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.dao.EndOfSaleRepo;
import com.nisum.offertransactionservice.dto.EndOfSaleReq;
import com.nisum.offertransactionservice.model.*;
import lombok.extern.slf4j.Slf4j;
import org.codehaus.jackson.map.ObjectMapper;
......@@ -24,12 +25,14 @@ public class EndOfSaleService {
String offerTransactionResponseJson = mapper.writeValueAsString(endOfSaleReq.getOfferTransactionResponse());
String offersJosn = mapper.writeValueAsString(endOfSaleReq.getOffers());
EndOfSaleEntity endOfSaleEntity = new EndOfSaleEntity();
endOfSaleEntity.setUuid(UUID.randomUUID());
endOfSaleEntity.setOfferTransactionResponse(offerTransactionResponseJson);
endOfSaleEntity.setOffers(offersJosn);
endOfSaleRepo.save(endOfSaleEntity);
if(Objects.nonNull(endOfSaleReq.getOfferTransactionResponse().getTransactionId()))
return endOfSaleReq.getOfferTransactionResponse().getTransactionId();
return "";
final String toString = endOfSaleEntity.getUuid().toString();
return toString;
}
......
......@@ -4,6 +4,8 @@ package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.client.ClientService;
import com.nisum.offertransactionservice.converter.OfferConvertion;
import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.dao.OfferMetaDataRepo;
import com.nisum.offertransactionservice.dto.*;
import com.nisum.offertransactionservice.genericexception.GlobalApiGenericException;
import com.nisum.offertransactionservice.model.*;
import lombok.extern.slf4j.Slf4j;
......@@ -15,6 +17,8 @@ import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
@PropertySource("classpath:application.properties")
......@@ -28,32 +32,23 @@ public class OfferCallingPEService {
@Autowired
private ClientService clientService;
private ExchangeFilterFunction logRequest() {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
log.info("Promotional Request {}", clientRequest);
return Mono.just(clientRequest);
});
}
private ExchangeFilterFunction logResponse() {
return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
log.info("Promotional Request {}", clientResponse);
return Mono.just(clientResponse);
});
}
@Autowired
private OfferMetaDataRepo offerMetaDataRepo;
public OfferTransactionResponse getDiscountedItemList(OfferTransactionRequest offerTransactionRequest) {
log.info("Inside getDiscountedItemList Method");
List<OfferLookup> eligibleOffer = new ArrayList();
offerLookupRepo.findAll().forEach(eligibleOffer::add);
if (eligibleOffer.isEmpty()) {
List<OfferLookupDTO> offerLookupDTOList = getOfferMetaDto(eligibleOffer);
if (offerLookupDTOList.isEmpty()) {
log.error("Offer lookup Object is empty");
throw new GlobalApiGenericException("Unable to get the Offer Response ", new Exception("exception e"), "400", false);
}
log.debug("Offer lookup Object {}", offerLookupRepo);
OfferTransactionResponse offerTransactionResponse;
PERequest peRequest = OfferConvertion.INSTANCE.map(offerTransactionRequest);
peRequest.setEligibleOffers(eligibleOffer);
peRequest.setEligibleOffers(offerLookupDTOList);
log.info("Promotional Engine WebClient call Start");
PEResponse peResponseFlux = clientService.getPeResponseFlux(peRequest);
log.debug("Promotional Engine WebClient call End");
......@@ -63,5 +58,30 @@ public class OfferCallingPEService {
return offerTransactionResponse;
}
public List<OfferLookupDTO> getOfferMetaDto(List<OfferLookup> eligibleOffer){
return eligibleOffer.stream().
map(offer -> {
Optional<OfferMeta> optionalOfferMeta = offerMetaDataRepo.
findByOfferIdAndOfferStatus(offer.getOfferId(), "Active");
if(optionalOfferMeta.isPresent()){
OfferMetaDTO offerMetaDTO = OfferConvertion.INSTANCE.map(optionalOfferMeta.get());
OfferLookupDTO offerLookupDTO = OfferConvertion.INSTANCE.map(offer);
offerLookupDTO.setOfferMetaDTO(offerMetaDTO);
return offerLookupDTO;
}
return null;
})
.filter(offerLookupDTO -> offerLookupDTO!=null)
.collect(Collectors.toList());
}
}
......@@ -2,7 +2,7 @@ spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/postgres
spring.datasource.username=user
spring.datasource.password=password123
endpoint.url.promotionEngineUrl=/promotionEngine/calculateDiscount
endpoint.url.peBaseUrl=http://localhost:8081
endpoint.url.peBaseUrl=http://localhost:8089
endpoint.url.storeConsumerUrl=/store/producer
endpoint.url.scBaseUrl=http://localhost:8081
server.port = 8085
......@@ -2,10 +2,9 @@ package com.nisum.offertransactionservice.client;
import com.nisum.offertransactionservice.config.OfferTransactionConfig;
import com.nisum.offertransactionservice.model.Item;
import com.nisum.offertransactionservice.model.PERequest;
import com.nisum.offertransactionservice.model.PEResponse;
import com.safeway.epe.model.Employee;
import com.nisum.offertransactionservice.dto.Item;
import com.nisum.offertransactionservice.dto.PERequest;
import com.nisum.offertransactionservice.dto.PEResponse;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
......@@ -14,12 +13,9 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.http.MediaType;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import java.util.ArrayList;
import java.util.List;
......@@ -71,8 +67,7 @@ public class ClientServiceTest {
@Test
public void getStringMonoTest(){
String uuid = "86fd4146-0540-405b-b621-a95f4ccdfa0d";
// ReflectionTestUtils.setField(clientService,"storeConsumerUrl","/store/producer");
when(offerTransactionConfig.getPeBaseUrl()).thenReturn("http://localhost:8081");
when(offerTransactionConfig.getPeBaseUrl()).thenReturn("http://localhost:8089");
when(offerTransactionConfig.getScBaseUrl()).thenReturn("http://localhost:8081");
when(webClientMock.post()).thenReturn(requestBodyUriMock);
when(requestBodyUriMock.uri("/store/producer")).thenReturn(requestBodyMock);
......
package com.nisum.offertransactionservice.controller;
import com.nisum.offertransactionservice.model.*;
import com.nisum.offertransactionservice.service.EndOfSaleService;
import com.nisum.offertransactionservice.service.EndOfTransactionService;
import com.nisum.offertransactionservice.service.OfferCallingPEService;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
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)
@Ignore
public class OfferControllerTest {
@Mock
private OfferCallingPEService offerCallingPEService;
@Mock
private EndOfTransactionService endOfTransactionService;
@Mock
private EndOfSaleService endOfSaleService;
@Test
public void getOfferTransactionResponseTest() {
OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest();
Mockito.when(offerCallingPEService.getDiscountedItemList(offerTransactionRequest)).thenReturn(retOfferTransRes());
OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest);
Assert.assertNotNull(offerTransactionResponse);
}
@Test
public void endOfSaleTest() throws IOException {
Mockito.when(endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq())).thenReturn(UUID.randomUUID().toString());
String uuid = endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq());
Assert.assertNotNull(uuid);
}
@Test
public void endOfTransactionTest() {
Mockito.when(endOfTransactionService.endOfTransaction(UUID.randomUUID().toString())).thenReturn("End Of Transaction note from Store Producer");
String res = endOfTransactionService.endOfTransaction(UUID.randomUUID().toString());
Assert.assertEquals(res, "End Of Transaction note from Store Producer");
}
private EndOfSaleReq getEndOfSaleReq() {
EndOfSaleReq endOfSaleReq = new EndOfSaleReq();
endOfSaleReq.setOfferTransactionResponse(retOfferTransRes());
endOfSaleReq.setOffers(returnOffers());
return endOfSaleReq;
}
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());
}
private OfferTransactionResponse retOfferTransRes() {
OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
offerTransactionResponse.setHhid("123");
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);
offerTransactionResponse.setDiscountedItemList(itemList);
return offerTransactionResponse;
}
private OfferTransactionRequest getOfferTransactionRequest() {
OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
offerTransactionRequest.setHhId("123");
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);
offerTransactionRequest.setItemList(itemList);
return offerTransactionRequest;
}
}
//package com.nisum.offertransactionservice.controller;
//
//import com.nisum.offertransactionservice.dto.EndOfSaleReq;
//import com.nisum.offertransactionservice.dto.Item;
//import com.nisum.offertransactionservice.dto.OfferTransactionRequest;
//import com.nisum.offertransactionservice.dto.OfferTransactionResponse;
//import com.nisum.offertransactionservice.model.*;
//import com.nisum.offertransactionservice.service.EndOfSaleService;
//import com.nisum.offertransactionservice.service.EndOfTransactionService;
//import com.nisum.offertransactionservice.service.OfferCallingPEService;
//import org.junit.Assert;
//import org.junit.Ignore;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.mockito.Mock;
//import org.mockito.Mockito;
//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)
//@Ignore
//public class OfferControllerTest {
//
// @Mock
// private OfferCallingPEService offerCallingPEService;
//
// @Mock
// private EndOfTransactionService endOfTransactionService;
//
// @Mock
// private EndOfSaleService endOfSaleService;
//
// @Test
// public void getOfferTransactionResponseTest() {
// OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest();
// Mockito.when(offerCallingPEService.getDiscountedItemList(offerTransactionRequest)).thenReturn(retOfferTransRes());
// OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest);
// Assert.assertNotNull(offerTransactionResponse);
// }
//
// @Test
// public void endOfSaleTest() throws IOException {
// Mockito.when(endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq())).thenReturn(UUID.randomUUID().toString());
// String uuid = endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq());
// Assert.assertNotNull(uuid);
// }
//
// @Test
// public void endOfTransactionTest() {
// Mockito.when(endOfTransactionService.endOfTransaction(UUID.randomUUID().toString())).thenReturn("End Of Transaction note from Store Producer");
// String res = endOfTransactionService.endOfTransaction(UUID.randomUUID().toString());
// Assert.assertEquals(res, "End Of Transaction note from Store Producer");
// }
//
// private EndOfSaleReq getEndOfSaleReq() {
// EndOfSaleReq endOfSaleReq = new EndOfSaleReq();
// endOfSaleReq.setOfferTransactionResponse(retOfferTransRes());
// endOfSaleReq.setOffers(returnOffers());
// return endOfSaleReq;
// }
//
// 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());
// }
//
// private OfferTransactionResponse retOfferTransRes() {
// OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
// offerTransactionResponse.setHhid("123");
// 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);
// offerTransactionResponse.setDiscountedItemList(itemList);
// return offerTransactionResponse;
// }
//
// private OfferTransactionRequest getOfferTransactionRequest() {
// OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
// offerTransactionRequest.setHhId("123");
// 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);
// offerTransactionRequest.setItemList(itemList);
// return offerTransactionRequest;
// }
//
//}
package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.dao.EndOfSaleRepo;
import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.dto.EndOfSaleReq;
import com.nisum.offertransactionservice.dto.Item;
import com.nisum.offertransactionservice.dto.OfferTransactionResponse;
import com.nisum.offertransactionservice.model.*;
import org.junit.Assert;
import org.junit.Before;
......@@ -14,7 +16,6 @@ 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)
......
......@@ -3,6 +3,8 @@ package com.nisum.offertransactionservice.service;
import com.nisum.offertransactionservice.client.ClientService;
import com.nisum.offertransactionservice.dao.OfferLookupRepo;
import com.nisum.offertransactionservice.dao.OfferMetaDataRepo;
import com.nisum.offertransactionservice.dto.*;
import com.nisum.offertransactionservice.model.*;
import org.junit.Assert;
import org.junit.Before;
......@@ -11,15 +13,14 @@ import org.junit.Test;
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.test.annotation.DirtiesContext;
import org.springframework.test.web.reactive.server.WebTestClient;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@RunWith(MockitoJUnitRunner.class)
......@@ -30,6 +31,10 @@ public class OfferServiceTest {
@Mock
private OfferLookupRepo offerLookupRepo;
@Mock
private OfferMetaDataRepo offerMetaDataRepo;
@InjectMocks
private OfferCallingPEService offerCallingPEService = new OfferCallingPEService();
......@@ -46,10 +51,13 @@ public class OfferServiceTest {
OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest();
Mockito.when(offerLookupRepo.findAll()).thenReturn(returnOffers());
Mockito.when(clientService.getPeResponseFlux(ArgumentMatchers.any())).thenReturn(getPeResponse());
Mockito.doReturn(getOfferMeta()).when(offerMetaDataRepo).findByOfferIdAndOfferStatus(ArgumentMatchers.any(),ArgumentMatchers.any());
OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest);
Assert.assertEquals(offerTransactionResponse, retOfferTransRes());
Assert.assertNotNull(offerTransactionResponse);
}
private OfferTransactionResponse retOfferTransRes() {
OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
offerTransactionResponse.setHhid("123");
......@@ -106,4 +114,77 @@ public class OfferServiceTest {
offerLookups.add(offerLookup2);
return offerLookups.stream().collect(Collectors.toList());
}
private Optional<OfferMeta> getOfferMeta(){
OfferMeta offerMeta = new OfferMeta();
offerMeta.setDiscount("discount");
offerMeta.setEligibility("eligibility");
offerMeta.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMeta.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMeta.setOfferDesc("30 percent");
offerMeta.setOfferId("o1");
offerMeta.setOfferStatus("Active");
offerMeta.setRcptTxt("text");
offerMeta.setOfferType("aaa");
return Optional.of(offerMeta);
}
private List<OfferLookupDTO> getOfferLookupDto(){
OfferLookupDTO offerLookupDTO = new OfferLookupDTO();
offerLookupDTO.setId("123456");
offerLookupDTO.setIdType("1234");
offerLookupDTO.setOfferId("o1");
offerLookupDTO.setPreCondition("And");
offerLookupDTO.setStoreId("001");
offerLookupDTO.setTerminal("001");
OfferMetaDTO offerMetaDTO = new OfferMetaDTO();
offerMetaDTO.setDiscount("discount");
offerMetaDTO.setEligibility("eligibility");
offerMetaDTO.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMetaDTO.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMetaDTO.setOfferDesc("30 percent");
offerMetaDTO.setOfferId("o1");
offerMetaDTO.setOfferStatus("Active");
offerMetaDTO.setRcptTxt("text");
offerMetaDTO.setOfferType("aaa");
offerLookupDTO.setOfferMetaDTO(offerMetaDTO);
OfferLookupDTO offerLookupDTO1 = new OfferLookupDTO();
offerLookupDTO1.setId("123456");
offerLookupDTO1.setIdType("1234");
offerLookupDTO1.setOfferId("o1");
offerLookupDTO1.setPreCondition("And");
offerLookupDTO1.setStoreId("001");
offerLookupDTO1.setTerminal("001");
OfferMetaDTO offerMetaDTO1 = new OfferMetaDTO();
offerMetaDTO1.setDiscount("discount");
offerMetaDTO1.setEligibility("eligibility");
offerMetaDTO1.setExpiryTime(LocalDateTime.of(2021,01,01,01,01));
offerMetaDTO1.setStartTime(LocalDateTime.of(2020,01,01,01,01));
offerMetaDTO1.setOfferDesc("20 percent");
offerMetaDTO1.setOfferId("o1");
offerMetaDTO1.setOfferStatus("Active");
offerMetaDTO1.setRcptTxt("text");
offerMetaDTO1.setOfferType("aaa");
offerLookupDTO1.setOfferMetaDTO(offerMetaDTO);
List<OfferLookupDTO> offerLookupDTOList = Arrays.asList(offerLookupDTO1, offerLookupDTO);
return offerLookupDTOList;
}
}
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