public HertzTransferPointsResponseModel HertzTransferPoints(string loyaltyIdSource, string agent, string points, string loyaltyIdDestination, string reasoncode) { HertzTransferPointsResponseModel hertzTransferPoints = default; using (ConsoleCapture capture = new ConsoleCapture()) { try { var lwTransferPoints = lwSvc.HertzTransferPoints(loyaltyIdSource, agent, points, loyaltyIdDestination, reasoncode, String.Empty, out double time); hertzTransferPoints = LODConvert.FromLW <HertzTransferPointsResponseModel>(lwTransferPoints); } catch (LWClientException ex) { throw new LWServiceException(ex.Message, ex.ErrorCode); } catch (Exception ex) { throw new LWServiceException(ex.Message, -1); } finally { stepContext.AddAttachment(new Attachment("HertzTransferPoints", capture.Output, Attachment.Type.Text)); } } return(hertzTransferPoints); }
public void HertzTransferPoints_Positive(MemberModel memberSource, MemberModel memberDestionation, decimal points, IHertzTier tier, bool useRanum) { MemberController memController = new MemberController(Database, TestStep); try { //Generate unique LIDs for each virtual card in the member memberSource = memController.AssignUniqueLIDs(memberSource); string ranum; TestStep.Start($"Make AddMember Call", "Source Member should be added successfully"); MemberModel memberOutSource = memController.AddMember(memberSource); AssertModels.AreEqualOnly(memberSource, memberOutSource, MemberModel.BaseVerify); TestStep.Pass("Source Member was added successfully and member object was returned", memberOutSource.ReportDetail()); VirtualCardModel vcSource = memberOutSource.VirtualCards.First(); memberDestionation = memController.AssignUniqueLIDs(memberDestionation); TestStep.Start($"Make AddMember Call", "Destination Member should be added successfully"); MemberModel memberOutDestination = memController.AddMember(memberDestionation); AssertModels.AreEqualOnly(memberDestionation, memberOutDestination, MemberModel.BaseVerify); TestStep.Pass("Destination Member was added successfully and member object was returned", memberOutDestination.ReportDetail()); VirtualCardModel vcDestination = memberOutDestination.VirtualCards.First(); //Transactions are added to test the API with ranum and also to test the negative points scenario TestStep.Start($"Add Transaction to the source member", "Transactions added successfully"); vcSource.Transactions = TxnHeaderController.GenerateRandomTransactions(vcSource, tier.ParentProgram, 1, 500); if (useRanum) { ranum = vcSource.Transactions.Select(x => x.A_RANUM).First(); } else { ranum = null; } Assert.IsNotNull(vcSource.Transactions, "Expected populated transaction object, but transaction object returned was null"); TestStep.Pass("Transaction added to the source member", vcSource.Transactions.ReportDetail()); TestStep.Start("Update Existing Source Member with added transaction", "Source Member object should be returned from UpdateMember call"); MemberModel updatedMember = memController.UpdateMember(memberOutSource); Assert.IsNotNull(updatedMember, "Expected non null Member object to be returned"); TestStep.Pass("Member object returned from UpdateMember API call", updatedMember.ReportDetail()); var loyaltyIdSource = memberOutSource.VirtualCards.First().LOYALTYIDNUMBER; var loyaltyIdDestination = memberOutDestination.VirtualCards.First().LOYALTYIDNUMBER; var vckeySource = memberOutSource.VirtualCards.First().VCKEY.ToString(); var vckeyDestination = memberOutDestination.VirtualCards.First().VCKEY.ToString(); TestStep.Start("Get Account Summary from DB for Source Member", "Account Summary retrieved from DB"); MemberAccountSummaryModel memberAccountSummaryOutDbSourceInitial = memController.GetMemberAccountSummaryFromDB(vckeySource); Assert.IsNotNull(memberAccountSummaryOutDbSourceInitial, "Account Summary could not be retrieved from DB"); TestStep.Pass("Existing member was found", memberAccountSummaryOutDbSourceInitial.ReportDetail()); TestStep.Start("Get Account Summary from DB for Destination Member", "Account Summary retrieved from DB"); MemberAccountSummaryModel memberAccountSummaryOutDbDestinationInitial = memController.GetMemberAccountSummaryFromDB(vckeyDestination); Assert.IsNotNull(memberAccountSummaryOutDbDestinationInitial, "Account Summary could not be retrieved from DB"); TestStep.Pass("Existing member was found", memberAccountSummaryOutDbDestinationInitial.ReportDetail()); TestStep.Start($"Make HertzTransferPoints Call", "HertzTransferPoints call should return HertzTransferPoints object"); HertzTransferPointsResponseModel memberTransferPoints = memController.HertzTransferPoints(loyaltyIdSource, "csadmin", points.ToString(), loyaltyIdDestination, "automation"); Assert.IsNotNull(memberTransferPoints, "Expected populated HertzTransferPoints object, but HertzTransferPoints object returned was null"); TestStep.Pass("HertzTransferPoints object was returned", memberTransferPoints.ReportDetail()); TestStep.Start($"Verify CurrencyBalance of Source Member was decreased", "CurrencyBalance returned should be correct"); MemberAccountSummaryModel memberAccountSummaryOutDbSourceFinal = memController.GetMemberAccountSummaryFromDB(vckeySource); Assert.IsNotNull(memberAccountSummaryOutDbSourceFinal, "Account Summary could not be retrieved from DB"); Assert.AreEqual(memberAccountSummaryOutDbSourceInitial.CURRENCYBALANCE - points, memberAccountSummaryOutDbSourceFinal.CURRENCYBALANCE, $"CurrencyBalance wasn't decrease due TransferPoints"); TestStep.Pass("CurrencyBalance response is as expcted", memberAccountSummaryOutDbSourceFinal.ReportDetail()); TestStep.Start($"Verify CurrencyBalance of Destination Member was increased", "CurrencyBalance returned should be correct"); MemberAccountSummaryModel memberAccountSummaryOutDbDestinationFinal = memController.GetMemberAccountSummaryFromDB(vckeyDestination); Assert.IsNotNull(memberAccountSummaryOutDbDestinationFinal, "Account Summary could not be retrieved from DB"); Assert.AreEqual(memberAccountSummaryOutDbDestinationInitial.CURRENCYBALANCE + points, memberAccountSummaryOutDbDestinationFinal.CURRENCYBALANCE, $"CurrencyBalance wasn't decrease due TransferPoints"); TestStep.Pass("CurrencyBalance response is as expcted", memberAccountSummaryOutDbDestinationFinal.ReportDetail()); } catch (AssertionException ex) { TestStep.Fail(ex.Message); Assert.Fail(); } catch (LWServiceException ex) { TestStep.Fail(ex.Message, new[] { $"Error Code: {ex.ErrorCode}", $"Error Message: {ex.ErrorMessage}" }); Assert.Fail(); } catch (AssertModelEqualityException ex) { TestStep.Fail(ex.Message, ex.ComparisonFailures); Assert.Fail(); } catch (Exception ex) { TestStep.Abort(ex.Message); Assert.Fail(); } }