Commit edf374b6 authored by Kali Padhi's avatar Kali Padhi

Modified For Metadata Table

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