public void When_a_user_updates_an_upsell_record_with_a_malformed_billing_order_number_an_error_is_received()
        {
            using (ShimsContext.Create())
            {
                // Setup

                SIMPLTestContext myContext = new SIMPLTestContext();
                var session = GetShimmedSession();

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;
                ShimHttpContext.AllInstances.SessionGet = (o) => session;

                // Given a user
                // And the user can resolve upsell records
                var fakeUserDto = myContext.GetFakeUserDtoObject();
                ShimCurrentUser.AsUserDto = () => fakeUserDto;
                ShimCurrentUser.GetInstance = () => new ShimCurrentUser
                {
                    UniqueIdGet = () => "abc123"
                };

                // And a known upsell record id
                const int upsellRecordId = 111111;

                // And a complete upsell status
                const int upsellStatus = (int)UpsellStatus.Complete;

                // And a malformed billing order number

                var billingOrderNumber = Convert.ToString(TestContext.DataRow["billingOrderNumber"]);

                //And a known billing region
                ShimBusinessFacade.AllInstances.GetDpiRegionFromStateNonStaticString = delegate { return "CT"; };

                // And a known subscriber
                const string subscriberId = "KnownSubId";

                //And the order number validation is turned on
                ShimFeatureFlags.IsEnabledString = delegate { return true; };

                // When updating the upsell record var currentSubscriber = new ShimCurrentSubscriber();
                var fakeAccountDto = myContext.GetFakeAccountDtoObject();
                fakeAccountDto.Location = myContext.GetFakeLocationDtoObject("111111111");
                var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto();
                var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberId, "TEST", "TEST", "555-555-1212", fakeCustomFieldDto, fakeAccountDto);

                var findOrderResponse = new retrieveCustomerAccountOrderDetailsResponse1()
                {
                    retrieveCustomerAccountOrderDetailsResponse = new retrieveCustomerAccountOrderDetailsResponse()
                    {
                        retrieveCustomerAccountOrderDetailsOutput = new msg_Customer()
                        {

                            Header = new Header
                            {
                                HeaderExtension = new HeaderExtension { ExecutionStatusMessage = new ExecutionStatusMessage() }
                            },
                            Payload = new[]
                            {
                                new Customer()
                            }
                        }
                    }
                };
                ShimCustomerOrderInformationClient.AllInstances.SIMPLDALCustomerOrderInformationCustomerOrderInformationretrieveCustomerAccountOrderDetailsretrieveCustomerAccountOrderDetailsRequest = delegate { return findOrderResponse; };
                ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = delegate { return fakeSubscriberDto; };
                SIMPL.DAL.Implementation.Fakes.ShimUpsellRepository.AllInstances.UpdateRecordInt32Int32StringString = delegate { };
                var result = UpsellControllerForTests.UpdateUpsellRecord(upsellRecordId, subscriberId, upsellStatus, billingOrderNumber) as HttpStatusCodeResult;

                // Then the record is not updated
                Assert.IsNotNull(result, "Update Upsell Record returned null");
                Assert.IsNotNull(result.StatusDescription, "No Error Message was found in the response.");

                // And an error is received
                Assert.AreEqual(500, result.StatusCode, "An error status code was not returned to the user.");

                // And the error says Please enter a valid Billing Order Number. Billing Order Numbers are 9 digits or less.
                const string expectedErrorMessage = "Please enter a valid Billing Order Number. Billing Order Numbers are 9 digits or less.";
                Assert.IsTrue(result.StatusDescription.Contains(expectedErrorMessage), string.Format("The error message for billing order number {0} received was {1}, it should have been {2}", billingOrderNumber, result.StatusDescription, expectedErrorMessage));
            }
        }
        public void An_upsell_records_with_a_known_billing_order_number_and_complete_status_is_successfully_updated()
        {
            using (ShimsContext.Create())
            {
                // Setup
                var myContext = new SIMPLTestContext();
                var session = GetShimmedSession();

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;
                ShimHttpContext.AllInstances.SessionGet = (o) => session;

                // Given a user
                // And the user can resolve upsell records
                var fakeUserDto = myContext.GetFakeUserDtoObject();
                ShimCurrentUser.AsUserDto = () => fakeUserDto;
                ShimCurrentUser.GetInstance = () => new ShimCurrentUser
                {
                    UniqueIdGet = () => "abc123"
                };

                // And a known upsell record id
                const int upsellRecordId = 111111;

                // And a complete upsell status
                const int upsellStatus = (int)UpsellStatus.Complete;

                // And a known billing order number
                const string billingOrderNumber = "999999999";

                //And a known billing region
                ShimBusinessFacade.AllInstances.GetDpiRegionFromStateNonStaticString = delegate { return "CT"; };

                // And an known subscriber
                const string subscriberId = "KnownSubId";

                //And the order number validation is turned on
                ShimFeatureFlags.IsEnabledString = delegate { return true; };

                // When updating the upsell record
                var fakeAccountDto = myContext.GetFakeAccountDtoObject();
                fakeAccountDto.Location = myContext.GetFakeLocationDtoObject("111111111");
                var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto();
                var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberId, "TEST", "TEST", "555-555-1212", fakeCustomFieldDto, fakeAccountDto);
                var findOrderResponse = new retrieveCustomerAccountOrderDetailsResponse1
                {
                    retrieveCustomerAccountOrderDetailsResponse = new retrieveCustomerAccountOrderDetailsResponse
                    {
                        retrieveCustomerAccountOrderDetailsOutput = new msg_Customer
                        {
                            Payload = new[]
                            {
                                new Customer
                                {
                                    CustomerAccount = new[]
                                    {
                                        new CustomerAccount
                                        {
                                            CustomerOrder = new[]
                                            {
                                                new CustomerOrder
                                                {
                                                    CustomerOrderItem = new[]
                                                    {
                                                        new CustomerOrderItem()
                            }
                        }
                    }
                                        }
                                    }
                                }
                            }
                        }
                    }
                };
                ShimCustomerOrderInformationClient.AllInstances.SIMPLDALCustomerOrderInformationCustomerOrderInformationretrieveCustomerAccountOrderDetailsretrieveCustomerAccountOrderDetailsRequest = delegate { return findOrderResponse; };
                ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = delegate { return fakeSubscriberDto; };

                DAL.Implementation.Fakes.ShimUpsellRepository.AllInstances.UpdateRecordInt32Int32StringString = delegate { };
                var result = UpsellControllerForTests.UpdateUpsellRecord(upsellRecordId, subscriberId, upsellStatus, billingOrderNumber) as HttpStatusCodeResult;

                //Was data returned
                Assert.IsNotNull(result, "No result returned from UpdateUpsellRecord");

                // Then the record is updated

                // And the status indicates the update was successful
                Assert.IsNotNull(result, "Update Upsell Record returned null");
                Assert.AreEqual(200, result.StatusCode, string.Format("The status code returned was not success. It was {0}", result.StatusCode));

            }
        }
示例#3
0
 private bool OrderNumberExists(retrieveCustomerAccountOrderDetailsResponse1 response)
 {
     return (response != null && response.retrieveCustomerAccountOrderDetailsResponse != null
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput != null
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload != null
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload.Any()
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload.First().CustomerAccount != null
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload.First().CustomerAccount.Any()
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload.First().CustomerAccount.First().CustomerOrder != null
             && response.retrieveCustomerAccountOrderDetailsResponse.retrieveCustomerAccountOrderDetailsOutput.Payload.First().CustomerAccount.First().CustomerOrder.Any());
 }