Commit d88f6361 authored by Simhadri Guntreddi's avatar Simhadri Guntreddi

Added Unit and Component test cases

parent cc96837e
File added
This diff is collapsed.
spring:
application:
name: store-producer
datasource:
url: jdbc:postgresql://127.0.0.1:5432/epe
username: postgres
password: welcome
driver-class-name: org.postgresql.Driver
jpa:
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
server:
port: 8200
kafka:
producer:
offer-transaction-record-topic : transactionRecord
schema:
api:
baseurl: http://localhost:8082
{
"name": "TransactionRecorder",
"type": "record",
"namespace": "com.safeway.epe.domain",
"fields": [
{
"name": "uuid",
"type": "string"
},
{
"name": "offertransactionresponse",
"type": "string"
},
{
"name": "offers",
"type": "string"
}
]
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ plugins {
group = 'com.safeway.epe'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
sourceCompatibility = '1.8'
configurations {
developmentOnly
......
File added
package com.safeway.epe.Config;
package com.safeway.epe.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
......
package com.safeway.epe.Config;
package com.safeway.epe.config;
import com.safeway.epe.domain.ConsumerPayload;
......
......@@ -17,7 +17,7 @@ public class TransactionController
private TransactionService service;
@GetMapping("transaction/{uuid}")
public ResponseEntity<List<Offsets>> getTransaction(@PathVariable("uuid") String uuid)
public ResponseEntity<List<Offsets>> produce(@PathVariable("uuid") String uuid)
{
return service.produceMessage(uuid);
}
......
package com.safeway.epe.service;
import com.safeway.epe.Config.ProducerServiceProxy;
import com.safeway.epe.config.ProducerServiceProxy;
import com.safeway.epe.domain.ConsumerPayload;
import com.safeway.epe.domain.Offsets;
import com.safeway.epe.domain.TransactionPayload;
......
......@@ -9,5 +9,5 @@ import java.util.List;
public interface TransactionService
{
ResponseEntity<List<Offsets>> produceMessage(String uuid);
ResponseEntity<String> errorResponse(TransactionRecorder transactionRecorder, java.lang.String exceptionMessage, boolean isReprocesed);
ResponseEntity<String> errorResponse(TransactionRecorder transactionRecorder, String exceptionMessage, boolean isReprocesed);
}
package com.safeway.epe.service;
import com.safeway.epe.Config.ConfigProps;
import com.safeway.epe.config.ConfigProps;
import com.safeway.epe.domain.Offsets;
import com.safeway.epe.domain.Record;
import com.safeway.epe.domain.TransactionPayload;
......
package com.safeway.epe.controller;
import com.safeway.epe.domain.Offsets;
import com.safeway.epe.domain.TransactionPayload;
import com.safeway.epe.domain.TransactionRecorder;
import com.safeway.epe.repository.TransactionRepository;
import com.safeway.epe.service.ProducerService;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
import java.util.*;
@SpringBootTest
public class TransactionControllerTest {
@Autowired
private TransactionController transactionController;
@MockBean
private ProducerService producerService;
@MockBean
private TransactionRepository transactionRepository;
private static String transactionId = "0ed78832-ea04-4062-b7dd-35c6c903c44c";
private List<Offsets> listOfOffest;
@Test
public void testProducer_Success() {
listOfOffest=new ArrayList<>();
Offsets offsets=new Offsets();
offsets.setPartition("0");
offsets.setOffset("1");
listOfOffest.add(offsets);
UUID uuid = UUID.fromString(transactionId);
Optional<TransactionRecorder> optionalOfferTransaction = Optional.of(createTransactionRecorder(uuid));
Mockito.when(transactionRepository.findById(Mockito.any(UUID.class))).thenReturn(optionalOfferTransaction);
Mockito.when(producerService.produce(Mockito.any(TransactionPayload.class), Mockito.anyString(),
Mockito.any(TransactionRecorder.class),Mockito.anyBoolean()
)).thenReturn(listOfOffest);
ResponseEntity<List<Offsets>> responseEntity = transactionController.produce(transactionId);
Assertions.assertEquals(responseEntity.getStatusCode(), HttpStatus.OK);
}
@Test
public void testProducer_Failure() {
Optional<TransactionRecorder> optionalOfferTransaction = Optional.empty();
Mockito.when(transactionRepository.findById(Mockito.any(UUID.class))).thenReturn(optionalOfferTransaction);
ResponseEntity<List<Offsets>> responseEntity = transactionController.produce(transactionId);
Assertions.assertEquals(responseEntity.getStatusCode(), HttpStatus.NOT_FOUND);
Assertions.assertEquals(responseEntity.getBody(), Arrays.asList(new Offsets()));
}
private TransactionRecorder createTransactionRecorder(UUID uuid) {
TransactionRecorder transactionRecorder = new TransactionRecorder();
transactionRecorder.setUuid(uuid);
transactionRecorder.setProcessed(true);
transactionRecorder.setOffers("offers");
transactionRecorder.setOfferTransactionResponse("TransactionResponse");
return transactionRecorder;
}
}
package com.safeway.epe.service;
import com.safeway.epe.config.ConfigProps;
import com.safeway.epe.domain.Offsets;
import com.safeway.epe.domain.TransactionRecorder;
import com.safeway.epe.repository.TransactionRepository;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.util.*;
public class TransactionServiceImplTest {
@InjectMocks
TransactionServiceImpl transactionServiceImpl;
@Mock
private TransactionRepository mockTransactionRepository;
@Mock
private ProducerService testProducerService;
@Mock
private ConfigProps configProps;
@BeforeEach
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
@DisplayName("Produce Message to Kafka Topic")
public void testProduceMessage(){
String transactionId = "997a9ed1-fb45-46d6-baee-0230f1da93dd";
UUID uuid = UUID.fromString(transactionId);
Optional<TransactionRecorder> testTransactionRecord = Optional.of(createTransactionRecorder(uuid));
Mockito.when(mockTransactionRepository.findById(uuid)).thenReturn(testTransactionRecord);
ResponseEntity<List<Offsets>> offsetsList = transactionServiceImpl.produceMessage(transactionId);
Assertions.assertEquals(offsetsList.getStatusCode(), HttpStatus.OK);
}
@Test
public void testProduceMessage_Exception(){
String transactionId = "997a9ed1-fb45-46d6-baee-0230f1da93dd";
UUID uuid = UUID.fromString(transactionId);
Optional<TransactionRecorder> testTransactionRecord = Optional.empty();
Mockito.when(mockTransactionRepository.findById(uuid)).thenReturn(testTransactionRecord);
ResponseEntity<List<Offsets>> responseOffsetsList = transactionServiceImpl.produceMessage(transactionId);
Assertions.assertEquals(responseOffsetsList.getStatusCode(), HttpStatus.NOT_FOUND);
Assertions.assertEquals(responseOffsetsList.getBody(), Arrays.asList(new Offsets()));
}
private TransactionRecorder createTransactionRecorder(UUID uuid) {
TransactionRecorder transactionRecorder = new TransactionRecorder();
transactionRecorder.setUuid(uuid);
transactionRecorder.setProcessed(true);
transactionRecorder.setOffers("offers");
transactionRecorder.setOfferTransactionResponse("OfferTransactionResponse");
return transactionRecorder;
}
}
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