public void CreateRefundForUnFinalizedProposedOrder() { int availableDiscountCents = ClientModuleIntegrationTestingUtilities.GetAvailableDiscountCredit(LevelUpTestConfiguration.Current.ConsumerQrData); const int giftCardAmountToUseInCents = 1000; ClientModuleIntegrationTestingUtilities.RemoveAnyGiftCardCreditOnConsumerUserAccount(); ClientModuleIntegrationTestingUtilities.AddGiftCardCreditOnConsumerUserAccount(giftCardAmountToUseInCents); const int taxAmountInCents = 100; int costOfItemInCents = availableDiscountCents + giftCardAmountToUseInCents + taxAmountInCents + 500; IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrData, costOfItemInCents, costOfItemInCents, taxAmountInCents, 0, null, null, null, null, true, null); ICreateRefund refundClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <ICreateRefund>(); refundClient.RefundOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, proposedOrder.ProposedOrderIdentifier); }
public void ProposedOrderWith10PercentTip_ShouldSucceed() { const int spendAmountCents = 10; const int tipAmountCents = 1; // 10% IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrDataWith10PercentTip, spendAmountCents, spendAmountCents, 0, 0, null, null, null, null, true, false, null); var completedOrder = orderClient.CompleteProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrDataWith10PercentTip, proposedOrder.ProposedOrderIdentifier, spendAmountCents, spendAmountCents, 0, 0, proposedOrder.DiscountAmountCents, null, null, null, null, true, false, null); Assert.AreEqual(completedOrder.TipAmount, tipAmountCents); var refundClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <ICreateRefund>(); refundClient.RefundOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, completedOrder.OrderIdentifier); }
public void ProposedOrderWithNoPartialAuth_ShouldThrow_ForInsufficientCredit() { int giftCardAmount = 1000; ClientModuleIntegrationTestingUtilities.RemoveAnyGiftCardCreditOnConsumerWithNoLinkedPaymentUserAccount(); ClientModuleIntegrationTestingUtilities.AddGiftCardCreditOnConsumerWithNoLinkedPaymentUserAccount(giftCardAmount); var discountCredit = ClientModuleIntegrationTestingUtilities.GetAvailableDiscountCredit(LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData); int spendAmount = (1000 + giftCardAmount + discountCredit); IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); Assert.Throws <LevelUpApiException>(() => { var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData, spendAmount, spendAmount, 0, 0, null, null, null, null, false, false, null); var completedOrder = orderClient.CompleteProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData, proposedOrder.ProposedOrderIdentifier, spendAmount, spendAmount, 0, 0, proposedOrder.DiscountAmountCents, null, null, null, null, false, false, null); }); }
public void ProposedOrderWithPartialAuth_ShouldSucceed() { int giftCardAmount = 1000; ClientModuleIntegrationTestingUtilities.RemoveAnyGiftCardCreditOnConsumerWithNoLinkedPaymentUserAccount(); ClientModuleIntegrationTestingUtilities.AddGiftCardCreditOnConsumerWithNoLinkedPaymentUserAccount(giftCardAmount); var credit = ClientModuleIntegrationTestingUtilities.GetAvailableDiscountCredit(LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData); int spendAmount = (1000 + giftCardAmount + credit); IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData, spendAmount, spendAmount, 0, 0, null, null, null, null, true, false, null); Assert.AreEqual(proposedOrder.DiscountAmountCents, credit); var completedOrder = orderClient.CompleteProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerWithNoLinkedPaymentQrData, proposedOrder.ProposedOrderIdentifier, spendAmount, spendAmount, 0, 0, proposedOrder.DiscountAmountCents, null, null, null, null, true, false, null); Assert.AreEqual(completedOrder.SpendAmount, credit + giftCardAmount); Assert.AreNotEqual(completedOrder.SpendAmount, spendAmount); ICreateRefund refundClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <ICreateRefund>(); refundClient.RefundOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, completedOrder.OrderIdentifier); }
public void ProposedOrderWithBadQrCode_ShouldThrow() { IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, "bad_qr_code", 10, 10, 0, 0); }
internal static int GetAvailableDiscountCredit(string qrData) { IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, qrData, int.MaxValue, int.MaxValue, 0, 0, null, null, null, null, true, false, null); return(proposedOrder.DiscountAmountCents); }
public void CompleteProposedOrderShouldSucceedForDiscountsDisabled() { string expectedRequestUrl = ClientModuleFunctionalTestingUtilities.SANDBOX_URL_PREFIX + "/v15/completed_orders"; string expectedRequest = "{" + "\"completed_order\": {" + "\"applied_discount_amount\": null," + "\"cashier\": \"Bob\"," + "\"exemption_amount\": 40," + "\"identifier_from_merchant\": \"001001\"," + "\"location_id\": 19," + "\"partial_authorization_allowed\": false," + "\"payment_token_data\": \"LU02000008ZS9OJFUBNEL6ZM030000LU\"," + "\"proposed_order_uuid\": \"1b3b3c4d5e6f7g8a9i9h8g7f6e5d4c3b2a1\"," + "\"receipt_message_html\": \"Pick up your order at <strong>counter #4</strong>\"," + "\"register\": \"3\"," + "\"spend_amount\": 200," + "\"tax_amount\": 0," + GetSampleItems().Item1 + "}" + "}"; RestResponse expectedResponse = new RestResponse { StatusCode = HttpStatusCode.OK, Content = "{ " + "\"order\": { " + "\"gift_card_total_amount\": 0, " + "\"gift_card_tip_amount\": 0, " + "\"spend_amount\": 200, " + "\"tip_amount\": 0, " + "\"total_amount\": 200, " + "\"uuid\": \"5a1z9x2h31ah7g8a9i9h8g7f6e5d4c4a21o\"" + "}" + "}" }; var items = GetSampleItems().Item2; IManageProposedOrders client = ClientModuleFunctionalTestingUtilities.GetMockedLevelUpModule <IManageProposedOrders, CompleteProposedOrderRequest>( expectedResponse, expectedRequest, expectedRequestUrl: expectedRequestUrl); var completedOrder = client.CompleteProposedOrder("not_checking_this", 19, "LU02000008ZS9OJFUBNEL6ZM030000LU", "1b3b3c4d5e6f7g8a9i9h8g7f6e5d4c3b2a1", 300, 200, 10, 130, null, "3", "Bob", "001001", "Pick up your order at <strong>counter #4</strong>", false, false, items); Assert.AreEqual(completedOrder.GiftCardTotalAmount, 0); Assert.AreEqual(completedOrder.GiftCardTipAmount, 0); Assert.AreEqual(completedOrder.SpendAmount, 200); Assert.AreEqual(completedOrder.TipAmount, 0); Assert.AreEqual(completedOrder.Total, 200); Assert.AreEqual(completedOrder.OrderIdentifier, "5a1z9x2h31ah7g8a9i9h8g7f6e5d4c4a21o"); }
public void ProposedOrderWithDiscountAndGiftCard_ShouldSucceed() { int availableDiscountCents = ClientModuleIntegrationTestingUtilities.GetAvailableDiscountCredit(LevelUpTestConfiguration.Current.ConsumerQrData); const int giftCardAmountToUseInCents = 1000; ClientModuleIntegrationTestingUtilities.RemoveAnyGiftCardCreditOnConsumerUserAccount(); ClientModuleIntegrationTestingUtilities.AddGiftCardCreditOnConsumerUserAccount(giftCardAmountToUseInCents); const int taxAmountInCents = 100; // Make sure that gift card, credit card, and discount(if available) will all be requried as part of this test payment. int costOfItemInCents = availableDiscountCents + giftCardAmountToUseInCents + taxAmountInCents + 500; IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrData, costOfItemInCents, costOfItemInCents, taxAmountInCents, 0, null, null, null, null, true, false, null); Assert.AreEqual(proposedOrder.DiscountAmountCents, availableDiscountCents); int taxAmountAfterDiscountApplied = (taxAmountInCents * (costOfItemInCents - proposedOrder.DiscountAmountCents)) / costOfItemInCents; var completedOrder = orderClient.CompleteProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrData, proposedOrder.ProposedOrderIdentifier, costOfItemInCents, costOfItemInCents, taxAmountAfterDiscountApplied, 0, proposedOrder.DiscountAmountCents, null, null, null, null, true, false, null); Assert.AreEqual(completedOrder.GiftCardTipAmount, 0); Assert.AreEqual(completedOrder.GiftCardTotalAmount, giftCardAmountToUseInCents); Assert.AreEqual(completedOrder.GiftCardTipAmount, 0); Assert.AreEqual(completedOrder.TipAmount, 0); Assert.AreEqual(completedOrder.SpendAmount, costOfItemInCents); ICreateRefund refundClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <ICreateRefund>(); refundClient.RefundOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, completedOrder.OrderIdentifier); }
internal static CompletedOrderResponse PlaceOrderAtTestMerchantWithTestConsumer(int total = 100) { ClientModuleIntegrationTestingUtilities.RemoveAnyGiftCardCreditOnConsumerUserAccount(); IManageProposedOrders orderClient = ClientModuleIntegrationTestingUtilities.GetSandboxedLevelUpModule <IManageProposedOrders>(); var proposedOrder = orderClient.CreateProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrData, total, total, 0, 0, null, null, null, null, true, false, null); return(orderClient.CompleteProposedOrder(ClientModuleIntegrationTestingUtilities.SandboxedLevelUpMerchantAccessToken, LevelUpTestConfiguration.Current.MerchantLocationId, LevelUpTestConfiguration.Current.ConsumerQrData, proposedOrder.ProposedOrderIdentifier, total, total, 0, 0, proposedOrder.DiscountAmountCents, null, null, null, null, true, false, null)); }
public void CreateProposedOrderShouldSucceedForSplitTender() { string expectedRequestUrl = ClientModuleFunctionalTestingUtilities.SANDBOX_URL_PREFIX + "/v15/proposed_orders"; string expectedRequest = "{" + "\"proposed_order\": {" + "\"payment_token_data\": \"LU02000008ZS9OJFUBNEL6ZM030000LU\"," + "\"cashier\": \"Bob\"," + "\"exemption_amount\": 40," + "\"receipt_message_html\": null," + "\"register\": \"3\"," + "\"tax_amount\": 0," + "\"identifier_from_merchant\": \"001001\"," + "\"partial_authorization_allowed\": true," + "\"location_id\": 19," + "\"spend_amount\": 100," + GetSampleItems().Item1 + "}" + "}"; RestResponse expectedResponse = new RestResponse { StatusCode = HttpStatusCode.OK, Content = "{ \"proposed_order\": { \"discount_amount\": 2578, \"uuid\": \"1b3b3c4d5e6f7g8a9i9h8g7f6e5d4c3b2a1\"}}" }; var items = GetSampleItems().Item2; IManageProposedOrders client = ClientModuleFunctionalTestingUtilities.GetMockedLevelUpModule <IManageProposedOrders, CreateProposedOrderRequest>( expectedResponse, expectedRequest, expectedRequestUrl: expectedRequestUrl); var proposedOrder = client.CreateProposedOrder("not_checking_this", 19, "LU02000008ZS9OJFUBNEL6ZM030000LU", 200, 100, 10, 130, "3", "Bob", "001001", null, true, false, items); Assert.AreEqual(proposedOrder.ProposedOrderIdentifier, "1b3b3c4d5e6f7g8a9i9h8g7f6e5d4c3b2a1"); Assert.AreEqual(proposedOrder.DiscountAmountCents, 2578); }