Skip to content
This repository has been archived by the owner on Oct 19, 2018. It is now read-only.

Commit

Permalink
CreditsServiceImplTest finish
Browse files Browse the repository at this point in the history
  • Loading branch information
atkawa7 committed May 6, 2018
1 parent edd27e4 commit ecfbe7a
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

/**
* Created by tnyamakura on 17/3/2017.
Expand Down Expand Up @@ -45,19 +46,41 @@ private static void changeSubscriberRequestStatusOnCredit(final SubscriberReques
private static SubscriberRequest populateSubscriberRequest(final AirtimeTopupRequest airtimeTopupRequest) {
final SubscriberRequest subscriberRequest = new SubscriberRequest();
subscriberRequest.setRequestType(SystemConstants.REQUEST_TYPE_AIRTIME_TOPUP);
subscriberRequest.setPartnerCode(airtimeTopupRequest.getPartnerCode());
subscriberRequest.setMsisdn(airtimeTopupRequest.getMsisdn());
subscriberRequest.setReference(airtimeTopupRequest.getReferenceNumber());
subscriberRequest.setAmount(airtimeTopupRequest.getAmount());
String partnerCode = null;
String msisdn = null;
String referenceNumber = null;
double amount = 0;

if (!ObjectUtils.isEmpty(airtimeTopupRequest)) {
partnerCode = airtimeTopupRequest.getPartnerCode();
msisdn = airtimeTopupRequest.getMsisdn();
referenceNumber = airtimeTopupRequest.getReferenceNumber();
amount = airtimeTopupRequest.getAmount();
}
subscriberRequest.setPartnerCode(partnerCode);
subscriberRequest.setMsisdn(msisdn);
subscriberRequest.setReference(referenceNumber);
subscriberRequest.setAmount(amount);
return subscriberRequest;
}

private static INCreditRequest populate(final AirtimeTopupRequest airtimeTopupRequest) {
final INCreditRequest inCreditRequest = new INCreditRequest();
inCreditRequest.setAmount(airtimeTopupRequest.getAmount());
inCreditRequest.setMsisdn(airtimeTopupRequest.getMsisdn());
inCreditRequest.setPartnerCode(airtimeTopupRequest.getPartnerCode());
inCreditRequest.setReferenceNumber(airtimeTopupRequest.getReferenceNumber());
String partnerCode = null;
String msisdn = null;
String referenceNumber = null;
double amount = 0;

if (!ObjectUtils.isEmpty(airtimeTopupRequest)) {
partnerCode = airtimeTopupRequest.getPartnerCode();
msisdn = airtimeTopupRequest.getMsisdn();
referenceNumber = airtimeTopupRequest.getReferenceNumber();
amount = airtimeTopupRequest.getAmount();
}
inCreditRequest.setAmount(amount);
inCreditRequest.setMsisdn(msisdn);
inCreditRequest.setPartnerCode(partnerCode);
inCreditRequest.setReferenceNumber(referenceNumber);
return inCreditRequest;
}

Expand Down Expand Up @@ -90,10 +113,14 @@ public AirtimeTopupResponse credit(final AirtimeTopupRequest airtimeTopupRequest
final AirtimeTopupResponse airtimeTopupResponse = new AirtimeTopupResponse();
airtimeTopupResponse.setResponseCode(inCreditResponse.getResponseCode());
airtimeTopupResponse.setNarrative(inCreditResponse.getNarrative());
airtimeTopupResponse.setMsisdn(airtimeTopupRequest.getMsisdn());

String msisdn = ObjectUtils.isEmpty(airtimeTopupRequest)?null:airtimeTopupRequest.getMsisdn();
airtimeTopupResponse.setMsisdn(msisdn);
airtimeTopupResponse.setBalance(inCreditResponse.getBalance());

LOGGER.info("Finished Airtime Credit :: Msisdn : {}, response code : {}", airtimeTopupRequest.getMsisdn(), inCreditResponse.getResponseCode());
if(!ObjectUtils.isEmpty(airtimeTopupRequest)){
LOGGER.info("Finished Airtime Credit :: Msisdn : {}, response code : {}", airtimeTopupRequest.getMsisdn(), inCreditResponse.getResponseCode());
}
return airtimeTopupResponse;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

import com.econetwireless.epay.business.integrations.api.ChargingPlatform;
import com.econetwireless.epay.business.services.api.CreditsService;
import com.econetwireless.epay.business.services.api.EnquiriesService;
import com.econetwireless.epay.business.utils.TestUtils;
import com.econetwireless.epay.dao.subscriberrequest.api.SubscriberRequestDao;
import com.econetwireless.epay.domain.SubscriberRequest;
import com.econetwireless.utils.messages.AirtimeTopupRequest;
import com.econetwireless.utils.messages.AirtimeTopupResponse;
import com.econetwireless.utils.pojo.INCreditRequest;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
Expand All @@ -28,7 +30,25 @@ public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
when(requestDao.save(any(SubscriberRequest.class))).then(TestUtils.SUBSCRIBER_REQUEST_ANSWER);
when(platform.enquireBalance(anyString(), anyString())).then(TestUtils.SUCCESSFUL_BALANCE_ENQUIRY);
when(platform.creditSubscriberAccount(any(INCreditRequest.class))).then(TestUtils.SUCCESSFUL_CREDIT_REQUEST);
this.creditsService = new CreditsServiceImpl(platform, requestDao);
}

@Test
public void testNullTopUpRequest() {
AirtimeTopupResponse topupResponse = creditsService.credit(null);
System.out.println(topupResponse.toString());
}

@Test
public void testNoneNullTopUpRequest() {
AirtimeTopupResponse topupResponse = creditsService.credit(new AirtimeTopupRequest());
}
@Test
public void testNoneNullTopUpRequestWithMsiSdnNull() {
AirtimeTopupRequest request = new AirtimeTopupRequest();
request.setMsisdn("SHOULD_SEND_NULL_STATUS");
AirtimeTopupResponse topupResponse = creditsService.credit(request);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.econetwireless.in.webservice.CreditResponse;
import com.econetwireless.utils.enums.ResponseCode;
import com.econetwireless.utils.pojo.INBalanceResponse;
import com.econetwireless.utils.pojo.INCreditRequest;
import com.econetwireless.utils.pojo.INCreditResponse;
import org.apache.commons.lang3.StringUtils;
import org.mockito.invocation.InvocationOnMock;
Expand Down Expand Up @@ -153,6 +154,33 @@ public CreditResponse answer(InvocationOnMock invocation) throws Throwable {
return null;
}
};
public static final Answer<INCreditResponse> SUCCESSFUL_CREDIT_REQUEST = new Answer<INCreditResponse>() {
@Override
public INCreditResponse answer(InvocationOnMock invocation) throws Throwable {
Object[] arguments = invocation.getArguments();
if (arguments != null && arguments.length > 0) {
INCreditRequest creditRequest = (INCreditRequest) arguments[0];
final INCreditResponse creditResponse = new INCreditResponse();
if (creditRequest == null) {
creditResponse.setResponseCode(ResponseCode.FAILED.getCode());
creditResponse.setNarrative("Invalid request, empty credit request");
return creditResponse;
}
if(StringUtils.equalsIgnoreCase(creditRequest.getMsisdn(), "SHOULD_SEND_NULL_STATUS")){
creditResponse.setResponseCode(null);
creditResponse.setNarrative("Invalid request, empty credit request");
return creditResponse;
}

creditResponse.setMsisdn(creditRequest.getMsisdn());
creditResponse.setBalance(creditRequest.getAmount() + BALANCE);
creditResponse.setNarrative("Successful credit request");
creditResponse.setResponseCode(ResponseCode.SUCCESS.getCode());
return creditResponse;
}
return null;
}
};

public static void shouldBeSame(BalanceResponse expected, BalanceResponse actual) {
assertNotNull(expected);
Expand Down

0 comments on commit ecfbe7a

Please sign in to comment.