public async Task POST_FlatRateSchedule_OrderAmountMaxIsNull_Success() { SchedulesTestData testData = new SchedulesTestData { ExternalIdentifier = "flatRatePostCase03" }; FlatRateScheduleRequest request = new FlatRateScheduleRequest { CreatedBy = "post success", ExternalIdentifier = testData.ExternalIdentifier, Rate = 1, OrderAmountMax = null, OrderAmountMin = 24, ServiceLevelCode = (int)ServiceLevelCodesEnum.Ground }; HttpEssResponse <FlatRateScheduleResponse> response = await Client.FlatRateSchedules.Create(request); //test data clean up await TestScenarioCleanUp(testData); Assert.IsNotNull(response); Assert.AreEqual(200, response.StatusCode); Assert.IsTrue(response.Success); Assert.IsNotNull(response.Result); //specific validations Assert.IsNull(response.Result.OrderAmountMax, "OrderAmountMax should be null"); }
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 PUT_FlatRateSchedule_Success() { SchedulesTestData testData = new SchedulesTestData { ExternalIdentifier = "flatRatePutCase01" }; //preconditions await TestScenarioSetUp(testData); FlatRateScheduleRequest request = new FlatRateScheduleRequest { UpdatedBy = "put success", ExternalIdentifier = testData.ExternalIdentifier, Rate = 11, OrderAmountMax = 69, OrderAmountMin = 4, ServiceLevelCode = 1 }; HttpEssResponse <FlatRateScheduleResponse> response = await Client.FlatRateSchedules.Update(testData.ExternalIdentifier, request); Assert.IsNotNull(response); Assert.AreEqual(200, response.StatusCode); Assert.IsTrue(response.Success); Assert.IsNotNull(response.Result); //test data clean up await TestScenarioCleanUp(testData); }
protected override async Task TestScenarioSetUp(SchedulesTestData data) { FlatRateScheduleRequest request = new FlatRateScheduleRequest { ExternalIdentifier = data.ExternalIdentifier, CreatedBy = "temporal request", Rate = 1, ServiceLevelCode = 0, OrderAmountMin = 1, OrderAmountMax = 10 }; await Client.FlatRateSchedules.Create(request); }
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 CreateFlatSchedulesBothTenants() { string identifier = TestContext.TestName; var allpointsRequest = new FlatRateScheduleRequest { CreatedBy = identifier, Rate = 0, ExternalIdentifier = identifier, OrderAmountMin = 130, OrderAmountMax = 300, ServiceLevelCode = (int)ServiceLevelCodesEnum.NextDay }; var fmpRequest = new FlatRateScheduleRequest { CreatedBy = identifier, Rate = 0, ExternalIdentifier = identifier, OrderAmountMin = 130, OrderAmountMax = 300, ServiceLevelCode = (int)ServiceLevelCodesEnum.NextDay }; var allpointsResponse = await AllPointsClient.FlatRateSchedules.Create(allpointsRequest); var fmpResponse = await FmpClient.FlatRateSchedules.Create(fmpRequest); //clear test data await AllPointsClient.FlatRateSchedules.Remove(identifier); await FmpClient.FlatRateSchedules.Remove(identifier); //allpoints validations Assert.IsNotNull(allpointsResponse); Assert.IsNotNull(allpointsResponse.Result); Assert.IsTrue(allpointsResponse.Success); Assert.AreEqual(identifier, allpointsResponse.Result.ExternalIdentifier); //fmp validations Assert.IsNotNull(fmpResponse); Assert.IsNotNull(fmpResponse.Result); Assert.IsTrue(fmpResponse.Success); Assert.AreEqual(identifier, fmpResponse.Result.ExternalIdentifier); }
public async Task PUT_FlatRateSchedule_Not_Found() { string externalIdentifier = "flatRatePutCase03"; FlatRateScheduleRequest request = new FlatRateScheduleRequest { UpdatedBy = "put not found", ExternalIdentifier = externalIdentifier, Rate = 1, OrderAmountMax = 90, OrderAmountMin = 24, ServiceLevelCode = 0 }; HttpEssResponse <FlatRateScheduleResponse> response = await Client.FlatRateSchedules.Update(externalIdentifier, request); Assert.IsNotNull(response); Assert.AreEqual(404, response.StatusCode); Assert.IsFalse(response.Success); Assert.IsNull(response.Result); }
public async Task PUT_FlatRateSchedule_Invalid() { string externalIdentifier = "flatRatePutCase02"; FlatRateScheduleRequest request = new FlatRateScheduleRequest { //does not have the UpadtedBy property ExternalIdentifier = externalIdentifier, Rate = 11, OrderAmountMax = 69, OrderAmountMin = 4, ServiceLevelCode = 1 }; HttpEssResponse <FlatRateScheduleResponse> response = await Client.FlatRateSchedules.Update(externalIdentifier, request); Assert.IsNotNull(response); Assert.AreEqual(422, response.StatusCode); Assert.IsFalse(response.Success); Assert.IsNull(response.Result); }
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 POST_FlatRateSchedule_Invalid() { SchedulesTestData testData = new SchedulesTestData { ExternalIdentifier = "flatRatePostCase02" }; FlatRateScheduleRequest request = new FlatRateScheduleRequest { //Does not have a CreatedBy prop ExternalIdentifier = testData.ExternalIdentifier, Rate = 1, OrderAmountMax = 29, OrderAmountMin = 24, ServiceLevelCode = (int)ServiceLevelCodesEnum.Ground }; HttpEssResponse <FlatRateScheduleResponse> response = await Client.FlatRateSchedules.Create(request); Assert.IsNotNull(response); Assert.AreEqual(422, response.StatusCode); Assert.IsFalse(response.Success); Assert.IsNull(response.Result); }
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 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"); }