Beispiel #1
0
        protected override async Task TestScenarioSetUp(ScheduleConfigurationTestData data)
        {
            //create group
            FlatRateScheduleGroupsRequest groupsRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = "temporal request",
                Name               = "temporal name",
                ExternalIdentifier = data.GroupExtId
            };
            await Client.FlatRateScheduleGroups.Create(groupsRequest);

            //create schedule
            FlatRateScheduleRequest scheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = "temporal request",
                ExternalIdentifier = data.ScheduleExtId,
                Rate             = 10,
                OrderAmountMin   = 1,
                OrderAmountMax   = 10,
                ServiceLevelCode = (int)ServiceLevelCodesEnum.Ground
            };
            await Client.FlatRateSchedules.Create(scheduleRequest);

            //create schedule configuration
            FlatRateScheduleConfigurationRequest flatRatesSchedulesConfigurationRequest = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = "temporal request"
            };
            await Client.FlatRateScheduleConfigurations.Create(data.GroupExtId, data.ScheduleExtId, flatRatesSchedulesConfigurationRequest);
        }
Beispiel #2
0
        public async Task POST_FlatRateScheduleConfiguration_NotFound()
        {
            string groupExtId    = "notFound";
            string scheduleExtId = "notFound";

            FlatRateScheduleConfigurationRequest request = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = "automated post request"
            };

            HttpEssResponse <FlatRatesSchedulesConfigurationResponse> response = await Client.FlatRateScheduleConfigurations.Create(groupExtId, scheduleExtId, request);

            Assert.IsNotNull(response, "Response is not null");
            Assert.AreEqual(404, response.StatusCode);
            Assert.IsFalse(response.Success, "Response status is not successful");
            Assert.IsNull(response.Result, "Result object should not be null");
        }
Beispiel #3
0
        public async Task POST_FlatRateScheduleConfiguration_Success()
        {
            ScheduleConfigurationTestData testData = new ScheduleConfigurationTestData
            {
                GroupExtId    = "flatRateGroupConfigPost01",
                ScheduleExtId = "flatRateScheduleConfigPost01"
            };

            //create group
            FlatRateScheduleGroupsRequest groupsRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = "temporal request",
                Name               = "temporal name",
                ExternalIdentifier = testData.GroupExtId
            };
            await Client.FlatRateScheduleGroups.Create(groupsRequest);

            //create schedule
            FlatRateScheduleRequest scheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = "temporal request",
                ExternalIdentifier = testData.ScheduleExtId,
                Rate             = 10,
                OrderAmountMin   = 1,
                OrderAmountMax   = 10,
                ServiceLevelCode = (int)ServiceLevelCodesEnum.Ground
            };
            await Client.FlatRateSchedules.Create(scheduleRequest);


            FlatRateScheduleConfigurationRequest request = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = "automated post request"
            };

            HttpEssResponse <FlatRatesSchedulesConfigurationResponse> response = await Client
                                                                                 .FlatRateScheduleConfigurations.Create(testData.GroupExtId, testData.ScheduleExtId, request);

            Assert.IsNotNull(response, "Response is not null");
            Assert.AreEqual(200, response.StatusCode);
            Assert.IsTrue(response.Success, "Response status is not successful");
            Assert.IsNotNull(response.Result, "Result object should not be null");

            await TestScenarioCleanUp(testData);
        }
Beispiel #4
0
        public async Task AddFlatRateSchedules(string groupIdentifier, List <TestSchedule> flatRates)
        {
            if (flatRates != null)
            {
                foreach (var schedule in flatRates)
                {
                    //create each schedule
                    var flatRateScheduleRequest = new FlatRateScheduleRequest
                    {
                        CreatedBy          = "data factory tool",
                        ExternalIdentifier = schedule.ExternalIdentifier,
                        OrderAmountMax     = schedule.OrderAmountMax,
                        OrderAmountMin     = schedule.OrderAmountMin,
                        Rate             = schedule.Rate,
                        ServiceLevelCode = (int)schedule.ServiceLevelCode
                    };

                    var flatRateScheduleResponse = await Client.FlatRateSchedules.Create(flatRateScheduleRequest);

                    if (!flatRateScheduleResponse.Success)
                    {
                        throw new Exception($"Flat rate schedule ({schedule.ExternalIdentifier}) cannot be created ~> error code {flatRateScheduleResponse.StatusCode}");
                    }

                    //asociate the schedule with group
                    var configurationRequest = new FlatRateScheduleConfigurationRequest
                    {
                        CreatedBy = "data factory tool"
                    };

                    var configurationResponse = await Client.FlatRateScheduleConfigurations.Create(groupIdentifier, schedule.ExternalIdentifier, configurationRequest);

                    if (!configurationResponse.Success)
                    {
                        throw new Exception($"Flat rate group {configurationResponse.StatusCode} cannot be created error ~> {configurationResponse.StatusCode}");
                    }
                }
            }
        }
Beispiel #5
0
        public async Task AddFlatRatesToGroup(string groupExtId, List <TestSchedule> schedules)
        {
            foreach (var schedule in schedules)
            {
                //create each schedule
                var flatRateScheduleRequest = new FlatRateScheduleRequest
                {
                    CreatedBy          = "data factory tool",
                    ExternalIdentifier = schedule.ExternalIdentifier,
                    OrderAmountMax     = schedule.OrderAmountMax,
                    OrderAmountMin     = schedule.OrderAmountMin,
                    Rate             = schedule.Rate,
                    ServiceLevelCode = (int)schedule.ServiceLevelCode
                };

                var flatRateScheduleResponse = await _client.FlatRateSchedules.Create(flatRateScheduleRequest);

                if (!flatRateScheduleResponse.Success)
                {
                    throw new Exception("Flat rate schedule cannot be created, " + schedule.ExternalIdentifier);
                }

                //asociate the schedule with group
                var configurationRequest = new FlatRateScheduleConfigurationRequest
                {
                    CreatedBy = "data factory tool"
                };

                var configurationResponse = await _client.FlatRateScheduleConfigurations.Create(groupExtId, schedule.ExternalIdentifier, configurationRequest);

                if (!configurationResponse.Success)
                {
                    throw new Exception("Flat rate group request cannot be created");
                }
            }
        }
Beispiel #6
0
        public async Task GET_Shipment_FlatRateAndHandling_Success()
        {
            string identifier = "shipmentTestD104";

            ShipmentTestData testData = new ShipmentTestData
            {
                AccountMasterExtId         = identifier,
                FlatRateScheduleGroupExtId = identifier,
                HandlingScheduleGroupExtId = identifier,
                ShippingConfigExtId        = identifier,
                FlatRateScheduleExtId      = identifier,
                HandlingScheduleExtId      = identifier
            };

            //create flat rate schedule group
            FlatRateScheduleGroupsRequest flatRateScheduleGroupRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = identifier,
                ExternalIdentifier = identifier,
                Name = identifier
            };
            await Client.FlatRateScheduleGroups.Create(flatRateScheduleGroupRequest);

            //create handling schedule group
            HandlingScheduleGroupRequest handlingScheduleGroupRequest = new HandlingScheduleGroupRequest
            {
                CreatedBy          = "temporal request",
                ExternalIdentifier = testData.HandlingScheduleGroupExtId,
                Name = "free handling"
            };
            await Client.HandlingScheduleGroups.Create(handlingScheduleGroupRequest);

            //create a flat rate schedule
            FlatRateScheduleRequest flatRateScheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = "temporal test request",
                ServiceLevelCode   = (int)ServiceLevelCodesEnum.NextDay,
                ExternalIdentifier = testData.FlatRateScheduleExtId,
                Rate           = 150,
                OrderAmountMin = 100,
                OrderAmountMax = 1000
            };
            await Client.FlatRateSchedules.Create(flatRateScheduleRequest);

            //create a flat rate and group schedules
            FlatRateScheduleConfigurationRequest flatRateScheduleConfigurationRequest = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = "temporal test request"
            };
            await Client.FlatRateScheduleConfigurations.Create(testData.FlatRateScheduleGroupExtId, testData.FlatRateScheduleExtId, flatRateScheduleConfigurationRequest);

            //create handling schedule
            HandlingScheduleRequest handlingScheduleRequest = new HandlingScheduleRequest
            {
                CreatedBy          = "temporal test request",
                ExternalIdentifier = testData.HandlingScheduleExtId,
                OrderAmountMin     = 100,
                OrderAmountMax     = 1000,
                Rate             = 50,
                ServiceLevelCode = (int)ServiceLevelCodesEnum.NextDay
            };
            await Client.HandlingSchedules.Create(handlingScheduleRequest);

            //link handling schedule with group
            HandlingSchedulesConfigurationRequest handlingSchedulesConfigurationRequest = new HandlingSchedulesConfigurationRequest
            {
                CreatedBy = "temporal test request"
            };
            await Client.HandlingScheduleConfigurations.Create(handlingScheduleGroupRequest.ExternalIdentifier, handlingScheduleRequest.ExternalIdentifier, handlingSchedulesConfigurationRequest);

            //create shipping configuration
            ShippingConfigurationRequest shippingConfigurationRequest = new ShippingConfigurationRequest
            {
                CreatedBy               = "temporal test request",
                ExternalIdentifier      = testData.ShippingConfigExtId,
                DefaultServiceLevelCode = (int)ServiceLevelCodesEnum.Local,
                ServiceLevels           = new List <SCServiceLevel>
                {
                    new SCServiceLevel
                    {
                        Amount = 200,
                        CarrierRateDiscount = 0.5,
                        SortOrder           = 1,
                        Label             = "temporal label",
                        CalculationMethod = "nothing",
                        IsEnabled         = true,
                        CarrierCode       = "nothing",
                        Code = (int)ServiceLevelCodesEnum.NextDay
                    },
                    new SCServiceLevel
                    {
                        Amount = 300,
                        CarrierRateDiscount = 0.5,
                        SortOrder           = 0,
                        Label             = "temporal label",
                        CalculationMethod = "nothing",
                        IsEnabled         = true,
                        CarrierCode       = "nothing",
                        Code = (int)ServiceLevelCodesEnum.Local
                    }
                }
            };
            await Client.ShippingConfigurations.Create(shippingConfigurationRequest);

            //create shippingPreference for accountMaster
            ShippingAccountMasterPreferencesRequest shippingPreferenceRequest = new ShippingAccountMasterPreferencesRequest
            {
                CreatedBy          = "temporal test request",
                UseCustomerCarrier = false,
                ShippingConfigurationExternalId = testData.ShippingConfigExtId,
                FreeFreightRules = new List <SAMFreeFreightRule>
                {
                },
                FlatRateScheduleGroupExternalId = testData.FlatRateScheduleGroupExtId,
                HandlingScheduleGroupExternalId = testData.HandlingScheduleGroupExtId
            };
            await Client.ShippingAccountMasterPreferences.Create(testData.AccountMasterExtId, shippingPreferenceRequest);

            ShipmentRequest request = new ShipmentRequest
            {
                OrderId         = "00000000000000000002",
                ShipFromAddress = new Address
                {
                    AddressLine1        = "Denver Boulder Turnpike",
                    AddressLine2        = "",
                    City                = "Boulder",
                    Country             = "US",
                    Name                = "dfs",
                    Postal              = "80014",
                    StateProvinceRegion = "CO"
                },
                ShipToAddress = new Address
                {
                    AddressLine1        = "Denver Boulder Turnpike",
                    AddressLine2        = string.Empty,
                    City                = "Boulder",
                    Country             = "US",
                    Name                = "dfs",
                    Postal              = "1234567",
                    StateProvinceRegion = "CO"
                },
                Products = new List <ShipmentProduct>
                {
                    new ShipmentProduct
                    {
                        Quantity = 1,
                        CheckoutPriceExtended = 110,
                        Shipping = new ShipmentProductShipping
                        {
                            Width             = 12,
                            Height            = 12,
                            IsFreeShip        = false,
                            Length            = 12,
                            IsFreightOnly     = false,
                            IsQuickShip       = false,
                            WeightDimensional = 12m,
                            WeightActual      = 2,
                            FreightClass      = 2
                        }
                    }
                }
            };

            HttpEssResponse <ShipmentResponse> response = await Client.Shipments.GetSingle(testData.AccountMasterExtId, request);

            //test data clean up
            await TestScenarioCleanUp(testData);

            //validations
            Assert.IsNotNull(response);
            Assert.AreEqual(200, response.StatusCode);
            Assert.IsTrue(response.Success, "Response status is not successful");
            Assert.IsNotNull(response.Result, "Result object should not be null");

            //specific validations
            var shippingFlatRate = response.Result.ShipmentRates.FirstOrDefault(r => r.ServiceLevelCode == flatRateScheduleRequest.ServiceLevelCode);

            //this code checks all ServiceLevels, none of them is returning a handling value
            //date: 10/03/2020
            //int i = 0;
            //while(true)
            //{
            //    bool exists = Enum.IsDefined(typeof(ServiceLevelCodesEnum), i);
            //    if (exists)
            //    {
            //        flatRateScheduleRequest.ServiceLevelCode = i;
            //        shippingFlatRate = response.Result.ShipmentRates.FirstOrDefault(r => r.ServiceLevelCode == flatRateScheduleRequest.ServiceLevelCode);
            //    }
            //    i++;
            //    if (shippingFlatRate == null) continue;
            //    if (shippingFlatRate.Handling != null) break;
            //}

            //flat rate validations
            Assert.IsTrue(shippingFlatRate.IsFlatRate, $"{nameof(shippingFlatRate.IsFlatRate)} prop should be true");
            Assert.AreEqual(flatRateScheduleRequest.Rate, shippingFlatRate.Amount);

            //handling validations
            //Handlig value returned  = null
            //TO:DO  make handling don't return null
            Assert.AreEqual(null, shippingFlatRate.Handling);
            //Assert.AreEqual(handlingScheduleRequest.Rate, shippingFlatRate.Handling);
        }
Beispiel #7
0
        public async Task <HttpEssResponse <FlatRatesSchedulesConfigurationResponse> > Create(string groupId, string scheduleId, FlatRateScheduleConfigurationRequest request)
        {
            MethodUrl = $"/flatRateScheduleGroups/{groupId}/schedules/{scheduleId}";
            string stringPayload = await Task.Run(() => JsonConvert.SerializeObject(request));

            var response = await Post(stringPayload);

            return(response);
        }
Beispiel #8
0
        public async Task GET_Shipment_Success()
        {
            string identifier = TestContext.TestName + "01";

            ShipmentTestData testData = new ShipmentTestData
            {
                AccountMasterExtId         = identifier,
                FlatRateScheduleGroupExtId = identifier,
                HandlingScheduleGroupExtId = identifier,
                ShippingConfigExtId        = identifier,
                FlatRateScheduleExtId      = identifier,
                HandlingScheduleExtId      = identifier
            };

            //create flat rate schedule group
            FlatRateScheduleGroupsRequest flatRateScheduleGroupRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = "temporal request",
                ExternalIdentifier = testData.FlatRateScheduleGroupExtId,
                Name = "cheap flat rate"
            };
            await Client.FlatRateScheduleGroups.Create(flatRateScheduleGroupRequest);

            //create handling schedule group
            HandlingScheduleGroupRequest handlingScheduleGroupRequest = new HandlingScheduleGroupRequest
            {
                CreatedBy          = "temporal request",
                ExternalIdentifier = testData.HandlingScheduleGroupExtId,
                Name = "free handling"
            };
            await Client.HandlingScheduleGroups.Create(handlingScheduleGroupRequest);

            //create a flat rate schedule
            FlatRateScheduleRequest flatRateScheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = "temporal request",
                ServiceLevelCode   = (int)ServiceLevelCodesEnum.NextDay,
                ExternalIdentifier = testData.FlatRateScheduleExtId,
                Rate           = 0.5m,
                OrderAmountMin = 1,
                OrderAmountMax = 1000
            };
            await Client.FlatRateSchedules.Create(flatRateScheduleRequest);

            //create a flat rate and group schedules
            FlatRateScheduleConfigurationRequest flatRateScheduleConfigurationRequest = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = "temporal request success 200"
            };
            await Client.FlatRateScheduleConfigurations.Create(testData.FlatRateScheduleGroupExtId, testData.FlatRateScheduleExtId, flatRateScheduleConfigurationRequest);

            //create shipping configuration
            ShippingConfigurationRequest shippingConfigurationRequest = new ShippingConfigurationRequest
            {
                CreatedBy               = "temporal request",
                ExternalIdentifier      = testData.ShippingConfigExtId,
                DefaultServiceLevelCode = (int)ServiceLevelCodesEnum.Local,
                ServiceLevels           = new List <SCServiceLevel>
                {
                    new SCServiceLevel
                    {
                        Amount = 200,
                        CarrierRateDiscount = 0.5,
                        SortOrder           = 1,
                        Label     = ServiceLevelCodesEnum.NextDay.ToString(),
                        IsEnabled = true,
                        Code      = (int)ServiceLevelCodesEnum.NextDay
                    },
                    new SCServiceLevel
                    {
                        Amount = 300,
                        CarrierRateDiscount = 0.5,
                        SortOrder           = 0,
                        IsEnabled           = true,
                        Label = ServiceLevelCodesEnum.Local.ToString(),
                        Code  = (int)ServiceLevelCodesEnum.Local
                    }
                }
            };
            await Client.ShippingConfigurations.Create(shippingConfigurationRequest);

            //create shippingPreference for accountMaster
            ShippingAccountMasterPreferencesRequest shippingPreferenceRequest = new ShippingAccountMasterPreferencesRequest
            {
                CreatedBy          = "temporal request",
                UseCustomerCarrier = false,
                ShippingConfigurationExternalId = testData.ShippingConfigExtId,
                FreeFreightRules = new List <SAMFreeFreightRule>
                {
                },
                FlatRateScheduleGroupExternalId = testData.FlatRateScheduleGroupExtId,
                HandlingScheduleGroupExternalId = testData.HandlingScheduleGroupExtId
            };
            await Client.ShippingAccountMasterPreferences.Create(testData.AccountMasterExtId, shippingPreferenceRequest);

            ShipmentRequest request = new ShipmentRequest
            {
                OrderId         = "00000000000000000002",
                ShipFromAddress = new Address
                {
                    AddressLine1        = "Denver Boulder Turnpike",
                    AddressLine2        = "",
                    City                = "Boulder",
                    Country             = "US",
                    Name                = "dfs",
                    Postal              = "80014",
                    StateProvinceRegion = "CO"
                },
                ShipToAddress = new Address
                {
                    AddressLine1        = "Denver Boulder Turnpike",
                    AddressLine2        = string.Empty,
                    City                = "Boulder",
                    Country             = "US",
                    Name                = "dfs",
                    Postal              = "1234567",
                    StateProvinceRegion = "CO"
                },
                Products = new List <ShipmentProduct>
                {
                    new ShipmentProduct
                    {
                        Quantity = 1,
                        CheckoutPriceExtended = 300,
                        Shipping = new ShipmentProductShipping
                        {
                            Width             = 12,
                            Height            = 12,
                            IsFreeShip        = false,
                            Length            = 12,
                            IsFreightOnly     = false,
                            IsQuickShip       = false,
                            WeightDimensional = 12m,
                            WeightActual      = 2,
                            FreightClass      = 2
                        }
                    }
                }
            };

            HttpEssResponse <ShipmentResponse> response = await Client.Shipments.GetSingle(testData.AccountMasterExtId, request);

            //test data clean up
            await TestScenarioCleanUp(testData);

            //validations
            Assert.IsNotNull(response);
            Assert.AreEqual(200, response.StatusCode);
            Assert.IsTrue(response.Success, "Response status is not successful");
            Assert.IsNotNull(response.Result, "Result object should not be null");
        }
Beispiel #9
0
        public async Task CreateFlatScheduleConfigurationBothTenants()
        {
            string identifier = TestContext.TestName + "01";

            //create schedule groups
            var allpointsGroupRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = identifier,
                ExternalIdentifier = identifier,
                Name = identifier
            };
            var fmpGroupRequest = new FlatRateScheduleGroupsRequest
            {
                CreatedBy          = identifier,
                ExternalIdentifier = identifier,
                Name = identifier
            };

            await AllPointsClient.FlatRateScheduleGroups.Create(allpointsGroupRequest);

            await FmpClient.FlatRateScheduleGroups.Create(fmpGroupRequest);

            //create schedules
            var allpointsScheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = identifier,
                Rate               = 0,
                ExternalIdentifier = identifier,
                OrderAmountMin     = 130,
                OrderAmountMax     = 300,
                ServiceLevelCode   = (int)ServiceLevelCodesEnum.NextDay
            };
            var fmpScheduleRequest = new FlatRateScheduleRequest
            {
                CreatedBy          = identifier,
                Rate               = 0,
                ExternalIdentifier = identifier,
                OrderAmountMin     = 130,
                OrderAmountMax     = 300,
                ServiceLevelCode   = (int)ServiceLevelCodesEnum.NextDay
            };

            await AllPointsClient.FlatRateSchedules.Create(allpointsScheduleRequest);

            await FmpClient.FlatRateSchedules.Create(fmpScheduleRequest);

            //create configuration groups
            var allpointsRequest = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = identifier
            };
            var fmpRequest = new FlatRateScheduleConfigurationRequest
            {
                CreatedBy = identifier
            };

            var allpointsGroupConfigResponse = await AllPointsClient.FlatRateScheduleConfigurations.Create(identifier, identifier, allpointsRequest);

            var fmpGroupConfigResponse = await FmpClient.FlatRateScheduleConfigurations.Create(identifier, identifier, fmpRequest);

            //clear test data
            await AllPointsClient.FlatRateSchedules.Remove(identifier);

            await AllPointsClient.FlatRateScheduleGroups.Remove(identifier);

            await AllPointsClient.FlatRateScheduleConfigurations.Remove(identifier, identifier);

            await FmpClient.FlatRateSchedules.Remove(identifier);

            await FmpClient.FlatRateScheduleGroups.Remove(identifier);

            await FmpClient.FlatRateScheduleConfigurations.Remove(identifier, identifier);

            //allpoints validations
            Assert.IsNotNull(allpointsGroupConfigResponse);
            Assert.IsNotNull(allpointsGroupConfigResponse.Result);
            Assert.IsTrue(allpointsGroupConfigResponse.Success);
            Assert.AreEqual(identifier, allpointsGroupConfigResponse.Result.FlatRateSchedule.ExternalIdentifier);

            //fmp validations
            Assert.IsNotNull(fmpGroupConfigResponse);
            Assert.IsNotNull(fmpGroupConfigResponse.Result);
            Assert.IsTrue(fmpGroupConfigResponse.Success);
            Assert.AreEqual(identifier, fmpGroupConfigResponse.Result.FlatRateScheduleGroup.ExternalIdentifier);
        }