Skip to content

Commit

Permalink
Merge pull request #801 from nozzlegear/2022-07
Browse files Browse the repository at this point in the history
  • Loading branch information
nozzlegear committed Jan 10, 2023
2 parents 4c15729 + d08360a commit 06e9887
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 427 deletions.
108 changes: 2 additions & 106 deletions ShopifySharp.Tests/AssignedFulfillmentOrder_Tests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using ShopifySharp.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Xunit;

Expand Down Expand Up @@ -48,20 +49,14 @@ public class AssignedFulfillmentOrder_Tests_Fixture : IAsyncLifetime

public OrderService OrderService { get; } = new OrderService(Utils.MyShopifyUrl, Utils.AccessToken);

public long LocationId => 6226758;

/// <summary>
/// Fulfillments must be part of an order and cannot be deleted.
/// </summary>
public List<Order> CreatedOrders { get; } = new List<Order>();

public List<Fulfillment> CreatedFulfillments { get; } = new List<Fulfillment>();

public async Task InitializeAsync()
{
// Fulfillment API has a stricter rate limit when on a non-paid store.
var policy = new LeakyBucketExecutionPolicy();

Service.SetExecutionPolicy(policy);
FulfillmentService.SetExecutionPolicy(policy);
OrderService.SetExecutionPolicy(policy);

Expand All @@ -84,104 +79,5 @@ public async Task DisposeAsync()
}
}
}

public async Task<Order> CreateOrder()
{
var obj = await OrderService.CreateAsync(new Order()
{
CreatedAt = DateTime.UtcNow,
BillingAddress = new Address()
{
Address1 = "123 4th Street",
City = "Minneapolis",
Province = "Minnesota",
ProvinceCode = "MN",
Zip = "55401",
Phone = "555-555-5555",
FirstName = "John",
LastName = "Doe",
Company = "Tomorrow Corporation",
Country = "United States",
CountryCode = "US",
Default = true,
},
LineItems = new List<LineItem>()
{
new LineItem()
{
Name = "Test Line Item",
Title = "Test Line Item Title",
Quantity = 2,
},
new LineItem()
{
Name = "Test Line Item 2",
Title = "Test Line Item Title 2",
Quantity = 2,
Price = 5
}
},
FinancialStatus = "paid",
TotalPrice = 5.00m,
Email = Guid.NewGuid().ToString() + "@example.com",
Note = "Test note about the customer.",
Test = true
}, new OrderCreateOptions()
{
SendReceipt = false,
SendFulfillmentReceipt = false
});

CreatedOrders.Add(obj);

return obj;
}

public async Task<Fulfillment> CreateFulfillment(long orderId, bool multipleTrackingNumbers = false, IEnumerable<LineItem> items = null)
{
Fulfillment fulfillment;

if (multipleTrackingNumbers)
{
fulfillment = new Fulfillment()
{
TrackingCompany = "Jack Black's Pack, Stack and Track",
TrackingUrls = new string[]
{
"https://example.com/da10038ee679f9afc93a785cafdd8d52",
"https://example.com/6349a40313ae3c7544331ff9fb44f28c",
"https://example.com/ca0b2d7bcccec4b58a94a24fa04101d3"
},
TrackingNumbers = new string[]
{
"da10038ee679f9afc93a785cafdd8d52",
"6349a40313ae3c7544331ff9fb44f28c",
"ca0b2d7bcccec4b58a94a24fa04101d3"
}
};
}
else
{
fulfillment = new Fulfillment()
{
TrackingCompany = "Jack Black's Pack, Stack and Track",
TrackingUrl = "https://example.com/123456789",
TrackingNumber = "123456789",
};
}

if (items != null)
{
fulfillment.LineItems = items;
}

fulfillment.NotifyCustomer = false;
fulfillment.LocationId = LocationId;
fulfillment = await FulfillmentService.CreateAsync(orderId, fulfillment);

CreatedFulfillments.Add(fulfillment);

return fulfillment;
}
}
}
2 changes: 2 additions & 0 deletions ShopifySharp.Tests/Collect_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,11 @@ public async Task InitializeAsync()
CustomCollectionService.SetExecutionPolicy(policy);

// Create a collection to use with these tests.
var collectionHandle = Guid.NewGuid().ToString();
var collection = await CustomCollectionService.CreateAsync(new CustomCollection()
{
Title = "Things",
Handle = collectionHandle,
Published = false,
Image = new CustomCollectionImage()
{
Expand Down
31 changes: 24 additions & 7 deletions ShopifySharp.Tests/FulfillmentEvents_Tests .cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ public class FulfillmentEvents_Tests_Fixture : IAsyncLifetime
public FulfillmentEventService FulfillmentEventService { get; } = new FulfillmentEventService(Utils.MyShopifyUrl, Utils.AccessToken);

public FulfillmentService FulfillmentService { get; } = new FulfillmentService(Utils.MyShopifyUrl, Utils.AccessToken);

public FulfillmentOrderService FulfillmentOrderService { get; } = new FulfillmentOrderService(Utils.MyShopifyUrl, Utils.AccessToken);

public OrderService OrderService { get; } = new OrderService(Utils.MyShopifyUrl, Utils.AccessToken);

Expand All @@ -65,6 +67,7 @@ public async Task InitializeAsync()

// Fulfillment API has a stricter rate limit when on a non-paid store.
FulfillmentService.SetExecutionPolicy(policy);
FulfillmentOrderService.SetExecutionPolicy(policy);
FulfillmentEventService.SetExecutionPolicy(policy);
OrderService.SetExecutionPolicy(policy);

Expand Down Expand Up @@ -142,16 +145,30 @@ public async Task<Order> CreateOrder()
return obj;
}

public async Task<Fulfillment> CreateFulfillment(long orderId, bool multipleTrackingNumbers = false, IEnumerable<LineItem> items = null)
public async Task<IEnumerable<FulfillmentOrder>> ListFulfillmentOrders(long orderId)
{
var fulfillment = await FulfillmentService.CreateAsync(orderId, new Fulfillment()
var orders = await FulfillmentOrderService.ListAsync(orderId);

return orders;
}

public async Task<Fulfillment> CreateFulfillment(long orderId)
{
var fulfillmentOrders = await ListFulfillmentOrders(orderId);
var fulfillment = await FulfillmentService.CreateAsync(new FulfillmentShipping
{
TrackingCompany = "Jack Black's Pack, Stack and Track",
TrackingUrl = "https://example.com/123456789",
TrackingNumber = "123456789",
LineItems = CreatedOrders.First().LineItems,
Message = "Items are shipping now!",
FulfillmentRequestOrderLineItems = fulfillmentOrders.Select(o => new LineItemsByFulfillmentOrder
{
FulfillmentOrderId = o.Id.Value
}),
NotifyCustomer = false,
LocationId = LocationId
TrackingInfo = new TrackingInfo
{
Company = "Jack Black's Pack, Stack and Track",
Url = "https://example.com/123456789",
Number = "123456789"
}
});

CreatedFulfillments.Add(fulfillment);
Expand Down
70 changes: 24 additions & 46 deletions ShopifySharp.Tests/FulfillmentRequest_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public FulfillmentRequest_Tests(FulfillmentRequest_Tests_Fixture fixture)
public async Task Accept_FulfillmentOrders()
{
var order = await Fixture.CreateOrder();
var fulfillmentOrder = await Fixture.CreateFulfillmentOrder(order.Id.Value);
var fulfillmentOrders = await Fixture.ListFulfillmentOrders(order.Id.Value);
var fulfillmentOrder = fulfillmentOrders.First();
var result = await Fixture.Service.AcceptAsync(fulfillmentOrder.Id.Value, "Unit Test: Accepted", CancellationToken.None);

Assert.NotNull(result);
Expand All @@ -32,7 +33,8 @@ public async Task Accept_FulfillmentOrders()
public async Task Reject_FulfillmentOrders()
{
var order = await Fixture.CreateOrder();
var fulfillmentOrder = await Fixture.CreateFulfillmentOrder(order.Id.Value);
var fulfillmentOrders = await Fixture.ListFulfillmentOrders(order.Id.Value);
var fulfillmentOrder = fulfillmentOrders.First();
var result = await Fixture.Service.RejectAsync(fulfillmentOrder.Id.Value, "Unit Test: Rejected", CancellationToken.None);

Assert.NotNull(result);
Expand Down Expand Up @@ -143,59 +145,35 @@ public async Task<Order> CreateOrder()
return obj;
}

async Task<Fulfillment> CreateFulfillment(long orderId, bool multipleTrackingNumbers = false, IEnumerable<LineItem> items = null)
public async Task<IEnumerable<FulfillmentOrder>> ListFulfillmentOrders(long orderId)
{
Fulfillment fulfillment;
var orders = await FulfillmentOrderService.ListAsync(orderId);

if (multipleTrackingNumbers)
return orders;
}

public async Task<Fulfillment> CreateFulfillment(long orderId)
{
var fulfillmentOrders = await ListFulfillmentOrders(orderId);
var fulfillment = await FulfillmentService.CreateAsync(new FulfillmentShipping
{
fulfillment = new Fulfillment()
Message = "Items are shipping now!",
FulfillmentRequestOrderLineItems = fulfillmentOrders.Select(o => new LineItemsByFulfillmentOrder
{
TrackingCompany = "Jack Black's Pack, Stack and Track",
TrackingUrls = new string[]
{
"https://example.com/da10038ee679f9afc93a785cafdd8d52",
"https://example.com/6349a40313ae3c7544331ff9fb44f28c",
"https://example.com/ca0b2d7bcccec4b58a94a24fa04101d3"
},
TrackingNumbers = new string[]
{
"da10038ee679f9afc93a785cafdd8d52",
"6349a40313ae3c7544331ff9fb44f28c",
"ca0b2d7bcccec4b58a94a24fa04101d3"
}
};
}
else
{
fulfillment = new Fulfillment()
FulfillmentOrderId = o.Id.Value
}),
NotifyCustomer = false,
TrackingInfo = new TrackingInfo
{
TrackingCompany = "Jack Black's Pack, Stack and Track",
TrackingUrl = "https://example.com/123456789",
TrackingNumber = "123456789",
};
}

if (items != null)
{
fulfillment.LineItems = items;
}

fulfillment.NotifyCustomer = false;
fulfillment.LocationId = LocationId;
fulfillment = await FulfillmentService.CreateAsync(orderId, fulfillment);
Company = "Jack Black's Pack, Stack and Track",
Url = "https://example.com/123456789",
Number = "123456789"
}
});

CreatedFulfillments.Add(fulfillment);

return fulfillment;
}

public async Task<FulfillmentOrder> CreateFulfillmentOrder(long orderId)
{
var fulfillment = await CreateFulfillment(orderId);
var fulfillmentOrders = await FulfillmentOrderService.ListAsync(orderId);

return fulfillmentOrders.First();
}
}
}

0 comments on commit 06e9887

Please sign in to comment.