Skip to content

Commit 79727a0

Browse files
authored
[feat] Parameter sets, part 4 (#418)
- Add parameter sets for classes I-R (Insurance - Reports) - Add overload methods for classes I-R to accept parameters - Add unit tests to test method overloads - New cassettes for new tests - Re-record all pickup cassettes due to date change
1 parent 701a4c1 commit 79727a0

File tree

96 files changed

+4912
-392
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+4912
-392
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using EasyPost.Models.API;
4+
using EasyPost.Tests._Utilities;
5+
using EasyPost.Tests._Utilities.Attributes;
6+
using EasyPost.Utilities.Internal.Attributes;
7+
using Xunit;
8+
9+
namespace EasyPost.Tests.BetaFeaturesTests.ModelsTests
10+
{
11+
public class InsuranceTests : UnitTest
12+
{
13+
public InsuranceTests() : base("insurance_with_parameters")
14+
{
15+
}
16+
17+
#region Tests
18+
19+
#region Test CRUD Operations
20+
21+
#endregion
22+
23+
#endregion
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using EasyPost.Exceptions.General;
4+
using EasyPost.Models.API;
5+
using EasyPost.Tests._Utilities;
6+
using EasyPost.Tests._Utilities.Attributes;
7+
using EasyPost.Utilities.Internal.Attributes;
8+
using Xunit;
9+
10+
namespace EasyPost.Tests.BetaFeaturesTests.ModelsTests
11+
{
12+
public class OrderTests : UnitTest
13+
{
14+
public OrderTests() : base("order_with_parameters")
15+
{
16+
}
17+
18+
#region Tests
19+
20+
#region Test CRUD Operations
21+
22+
[Fact]
23+
[CrudOperations.Update]
24+
[Testing.Function]
25+
public async Task TestBuy()
26+
{
27+
UseVCR("buy");
28+
29+
// buy with a carrier and service
30+
Dictionary<string, object> orderCreateData = Fixtures.BasicOrder;
31+
32+
BetaFeatures.Parameters.Orders.Create orderCreateParameters = Fixtures.Parameters.Orders.Create(orderCreateData);
33+
34+
Order order = await Client.Order.Create(orderCreateParameters);
35+
36+
BetaFeatures.Parameters.Orders.Buy orderBuyParameters = new BetaFeatures.Parameters.Orders.Buy(Fixtures.Usps, Fixtures.UspsService);
37+
38+
order = await order.Buy(orderBuyParameters);
39+
40+
List<Shipment> shipments = order.Shipments;
41+
42+
foreach (Shipment shipment in shipments)
43+
{
44+
Assert.IsType<Shipment>(shipment);
45+
Assert.NotNull(shipment.PostageLabel);
46+
}
47+
48+
// buy with a rate
49+
orderCreateData = Fixtures.BasicOrder;
50+
51+
orderCreateParameters = Fixtures.Parameters.Orders.Create(orderCreateData);
52+
53+
order = await Client.Order.Create(orderCreateParameters);
54+
55+
Rate rate = order.LowestRate();
56+
57+
orderBuyParameters = new BetaFeatures.Parameters.Orders.Buy(rate);
58+
59+
order = await order.Buy(rate);
60+
61+
shipments = order.Shipments;
62+
63+
foreach (Shipment shipment in shipments)
64+
{
65+
Assert.IsType<Shipment>(shipment);
66+
Assert.NotNull(shipment.PostageLabel);
67+
}
68+
}
69+
70+
#endregion
71+
72+
#endregion
73+
}
74+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using EasyPost.Exceptions.General;
4+
using EasyPost.Models.API;
5+
using EasyPost.Tests._Utilities;
6+
using EasyPost.Tests._Utilities.Attributes;
7+
using EasyPost.Utilities.Internal.Attributes;
8+
using Xunit;
9+
10+
namespace EasyPost.Tests.BetaFeaturesTests.ModelsTests
11+
{
12+
public class PickupTests : UnitTest
13+
{
14+
public PickupTests() : base("pickup_with_parameters")
15+
{
16+
}
17+
18+
#region Tests
19+
20+
#region Test CRUD Operations
21+
22+
[Fact]
23+
[CrudOperations.Update]
24+
[Testing.Function]
25+
public async Task TestBuy()
26+
{
27+
UseVCR("buy");
28+
29+
Dictionary<string, object> shipmentData = Fixtures.OneCallBuyShipment;
30+
31+
BetaFeatures.Parameters.Shipments.Create shipmentCreateParameters = Fixtures.Parameters.Shipments.Create(shipmentData);
32+
33+
Shipment shipment = await Client.Shipment.Create(shipmentCreateParameters);
34+
35+
Dictionary<string, object> pickupData = Fixtures.BasicPickup;
36+
pickupData["shipment"] = shipment;
37+
38+
BetaFeatures.Parameters.Pickups.Create pickupCreateParameters = Fixtures.Parameters.Pickups.Create(pickupData);
39+
40+
Pickup pickup = await Client.Pickup.Create(pickupCreateParameters);
41+
42+
BetaFeatures.Parameters.Pickups.Buy pickupBuyParameters = new BetaFeatures.Parameters.Pickups.Buy(Fixtures.Usps, Fixtures.PickupService);
43+
44+
pickup = await pickup.Buy(pickupBuyParameters);
45+
46+
Assert.IsType<Pickup>(pickup);
47+
Assert.StartsWith("pickup_", pickup.Id);
48+
Assert.NotNull(pickup.Confirmation);
49+
Assert.Equal("scheduled", pickup.Status);
50+
}
51+
52+
#endregion
53+
54+
#endregion
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using EasyPost.Models.API.Beta;
4+
using EasyPost.Tests._Utilities;
5+
using EasyPost.Tests._Utilities.Attributes;
6+
using Xunit;
7+
8+
namespace EasyPost.Tests.BetaFeaturesTests.ServicesTests.Beta
9+
{
10+
public class RateServiceTests : UnitTest
11+
{
12+
public RateServiceTests() : base("beta_rate_service_with_parameters")
13+
{
14+
}
15+
16+
#region Tests
17+
18+
#region Test CRUD Operations
19+
20+
#endregion
21+
22+
[Fact]
23+
[Testing.Function]
24+
public async Task TestGetRates()
25+
{
26+
UseVCR("get_rates");
27+
28+
Dictionary<string, object> data = Fixtures.BasicShipment;
29+
30+
BetaFeatures.Parameters.Beta.Rates.Retrieve parameters = Fixtures.Parameters.Rates.RetrieveBeta(data);
31+
32+
List<StatelessRate> rates = await Client.Beta.Rate.RetrieveStatelessRates(parameters);
33+
34+
Assert.NotNull(rates);
35+
Assert.NotEmpty(rates);
36+
}
37+
38+
#endregion
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
using System.Threading.Tasks;
2+
using EasyPost.Exceptions.API;
3+
using EasyPost.Models.API;
4+
using EasyPost.Models.API.Beta;
5+
using EasyPost.Tests._Utilities;
6+
using EasyPost.Tests._Utilities.Attributes;
7+
using EasyPost.Utilities.Internal.Attributes;
8+
using Xunit;
9+
10+
namespace EasyPost.Tests.BetaFeaturesTests.ServicesTests.Beta
11+
{
12+
public class ReferralServiceTests : UnitTest
13+
{
14+
public ReferralServiceTests() : base("beta_referral_service_with_parameters", TestUtils.ApiKey.Referral)
15+
{
16+
}
17+
18+
#region Tests
19+
20+
#region Test CRUD Operations
21+
22+
[Fact]
23+
[CrudOperations.Create]
24+
[Testing.Function]
25+
public async Task TestAddPaymentMethod()
26+
{
27+
UseVCR("add_payment_method");
28+
29+
try
30+
{
31+
BetaFeatures.Parameters.ReferralCustomers.AddPaymentMethod parameters = new()
32+
{
33+
StripeCustomerId = "cus_123",
34+
PaymentMethodReference = "ba_123",
35+
};
36+
37+
PaymentMethod _ = await Client.Beta.Referral.AddPaymentMethod(parameters);
38+
}
39+
catch (InvalidRequestError e)
40+
{
41+
// the data we're sending is invalid, we expect an error to be thrown
42+
Assert.Equal(422, e.StatusCode);
43+
Assert.Equal("BILLING.INVALID_PAYMENT_GATEWAY_REFERENCE", e.Code);
44+
Assert.Equal("Invalid Payment Gateway Reference.", e.Message);
45+
}
46+
}
47+
48+
[Fact]
49+
[CrudOperations.Update]
50+
[Testing.Function]
51+
public async Task TestRefundByAmount()
52+
{
53+
UseVCR("refund_by_amount");
54+
55+
try
56+
{
57+
BetaFeatures.Parameters.ReferralCustomers.RefundByAmount parameters = new()
58+
{
59+
Amount = 2000,
60+
};
61+
62+
PaymentRefund _ = await Client.Beta.Referral.RefundByAmount(parameters);
63+
}
64+
catch (InvalidRequestError e)
65+
{
66+
// the data we're sending is invalid, we expect an error to be thrown
67+
Assert.Equal(422, e.StatusCode);
68+
Assert.Equal("TRANSACTION.AMOUNT_INVALID", e.Code);
69+
Assert.Equal("Refund amount is invalid. Please use a valid amount or escalate to finance.", e.Message);
70+
}
71+
}
72+
73+
[Fact]
74+
[CrudOperations.Update]
75+
[Testing.Function]
76+
public async Task TestRefundByPaymentLog()
77+
{
78+
UseVCR("refund_by_payment_log");
79+
80+
try
81+
{
82+
BetaFeatures.Parameters.ReferralCustomers.RefundByPaymentLog parameters = new()
83+
{
84+
PaymentLogId = "paylog_123",
85+
};
86+
87+
PaymentRefund _ = await Client.Beta.Referral.RefundByPaymentLog(parameters);
88+
}
89+
catch (InvalidRequestError e)
90+
{
91+
// the data we're sending is invalid, we expect an error to be thrown
92+
Assert.Equal(422, e.StatusCode);
93+
Assert.Equal("TRANSACTION.DOES_NOT_EXIST", e.Code);
94+
Assert.Equal("We could not find a transaction with that id.", e.Message);
95+
}
96+
}
97+
98+
#endregion
99+
100+
#endregion
101+
}
102+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using EasyPost.Models.API;
4+
using EasyPost.Tests._Utilities;
5+
using EasyPost.Tests._Utilities.Attributes;
6+
using EasyPost.Utilities.Internal.Attributes;
7+
using Xunit;
8+
9+
namespace EasyPost.Tests.BetaFeaturesTests.ServicesTests
10+
{
11+
public class InsuranceServiceTests : UnitTest
12+
{
13+
public InsuranceServiceTests() : base("insurance_service_with_parameters")
14+
{
15+
}
16+
17+
#region Tests
18+
19+
#region Test CRUD Operations
20+
21+
[Fact]
22+
[CrudOperations.Create]
23+
[Testing.Function]
24+
public async Task TestCreate()
25+
{
26+
UseVCR("create");
27+
28+
Dictionary<string, object> shipmentData = Fixtures.OneCallBuyShipment;
29+
30+
BetaFeatures.Parameters.Shipments.Create shipmentParameters = Fixtures.Parameters.Shipments.Create(shipmentData);
31+
32+
Shipment shipment = await Client.Shipment.Create(shipmentParameters);
33+
34+
Dictionary<string, object> insuranceData = Fixtures.BasicInsurance;
35+
insuranceData.Add("tracking_code", shipment.TrackingCode);
36+
37+
BetaFeatures.Parameters.Insurance.Create insuranceParameters = Fixtures.Parameters.Insurance.Create(insuranceData);
38+
39+
Insurance insurance = await Client.Insurance.Create(insuranceParameters);
40+
41+
Assert.IsType<Insurance>(insurance);
42+
Assert.StartsWith("ins_", insurance.Id);
43+
Assert.Equal("100.00000", insurance.Amount);
44+
}
45+
46+
[Fact]
47+
[CrudOperations.Read]
48+
[Testing.Function]
49+
public async Task TestAll()
50+
{
51+
UseVCR("all");
52+
53+
Dictionary<string, object> data = new Dictionary<string, object>() { { "page_size", Fixtures.PageSize } };
54+
55+
BetaFeatures.Parameters.Insurance.All parameters = Fixtures.Parameters.Insurance.All(data);
56+
57+
InsuranceCollection insuranceCollection = await Client.Insurance.All(parameters);
58+
59+
List<Insurance> insurances = insuranceCollection.Insurances;
60+
61+
Assert.True(insurances.Count <= Fixtures.PageSize);
62+
foreach (Insurance item in insurances)
63+
{
64+
Assert.IsType<Insurance>(item);
65+
}
66+
}
67+
68+
#endregion
69+
70+
#endregion
71+
}
72+
}

0 commit comments

Comments
 (0)