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); }
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"); }
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); }
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}"); } } } }
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"); } } }
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); }
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); }
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"); }
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); }