-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #261 from commercetools/chore/add-integration-test…
…s-00 Add Integration Tests for .NET SDK
- Loading branch information
Showing
44 changed files
with
3,747 additions
and
104 deletions.
There are no files selected for viewing
91 changes: 91 additions & 0 deletions
91
commercetools.Sdk/IntegrationTests/commercetools.Api.IntegrationTests/Cart/CartFixture.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Threading.Tasks; | ||
using commercetools.Sdk.Api.Models.Carts; | ||
using commercetools.Sdk.Api.Models.Common; | ||
using commercetools.Base.Client; | ||
using commercetools.Sdk.Api.Client; | ||
using commercetools.Sdk.Api.Extensions; | ||
using static commercetools.Api.IntegrationTests.GenericFixture; | ||
|
||
|
||
namespace commercetools.Api.IntegrationTests.Cart | ||
{ | ||
public class CartFixture | ||
{ | ||
#region DraftBuilds | ||
|
||
public static CartDraft DefaultCartDraft(CartDraft cartDraft) | ||
{ | ||
var randomInt = TestingUtility.RandomInt(); | ||
cartDraft.Country = "DE"; | ||
cartDraft.Currency = "EUR"; | ||
cartDraft.ItemShippingAddresses = new List<IBaseAddress>() | ||
{ | ||
new BaseAddress() { Country = "DE", Key = $"Key{randomInt}" } | ||
}; | ||
|
||
return cartDraft; | ||
} | ||
|
||
public static CartDraft DefaultCartDraftWithKey(CartDraft draft, string key) | ||
{ | ||
var cartDraft = DefaultCartDraft(draft); | ||
cartDraft.Key = key; | ||
|
||
return cartDraft; | ||
} | ||
|
||
#endregion | ||
|
||
public static async Task<ICart> CreateCart(ProjectApiRoot client, CartDraft cartDraft) | ||
{ | ||
return await client | ||
.Carts() | ||
.Post(cartDraft) | ||
.ExecuteAsync(); | ||
} | ||
|
||
public static async Task DeleteCart(ProjectApiRoot client, ICart cart) | ||
{ | ||
try | ||
{ | ||
await client | ||
.Carts() | ||
.WithKey(cart.Key) | ||
.Delete() | ||
.WithVersion(cart.Version) | ||
.ExecuteAsync(); | ||
} | ||
catch (Exception) | ||
{ | ||
// ignored | ||
} | ||
} | ||
|
||
#region WithCart | ||
|
||
public static async Task WithCart(ProjectApiRoot client, Func<CartDraft, CartDraft> draftAction, Action<ICart> func) | ||
{ | ||
await With(client, new CartDraft(), draftAction, func, CreateCart, DeleteCart); | ||
} | ||
|
||
public static async Task WithCart(ProjectApiRoot client, Func<CartDraft, CartDraft> draftAction, | ||
Func<ICart, Task> func) | ||
{ | ||
await WithAsync(client, new CartDraft(), draftAction, func, CreateCart, DeleteCart); | ||
} | ||
|
||
public static async Task WithCart(ProjectApiRoot client, Func<ICart, Task> func) | ||
{ | ||
await WithAsync(client, new CartDraft(), DefaultCartDraft, func, CreateCart, DeleteCart); | ||
} | ||
|
||
public static async Task WithUpdateableCart(ProjectApiRoot client, Func<ICart, Task<ICart>> func) | ||
{ | ||
await WithUpdateableAsync(client, new CartDraft(), DefaultCartDraft, func, CreateCart, DeleteCart); | ||
} | ||
|
||
#endregion | ||
} | ||
} |
188 changes: 188 additions & 0 deletions
188
...ools.Sdk/IntegrationTests/commercetools.Api.IntegrationTests/Cart/CartIntegrationTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Threading.Tasks; | ||
using commercetools.Base.Client.Error; | ||
using commercetools.Sdk.Api.Client; | ||
using commercetools.Sdk.Api.Models.Carts; | ||
using Xunit; | ||
using static commercetools.Api.IntegrationTests.Cart.CartFixture; | ||
|
||
namespace commercetools.Api.IntegrationTests.Cart | ||
{ | ||
[Collection("Integration Tests")] | ||
public class CartIntegrationTests | ||
{ | ||
private readonly ProjectApiRoot _client; | ||
|
||
public CartIntegrationTests(ServiceProviderFixture serviceProviderFixture) | ||
{ | ||
this._client = serviceProviderFixture.GetService<ProjectApiRoot>(); | ||
} | ||
|
||
[Fact] | ||
public async Task CreateCart() | ||
{ | ||
var key = $"CreateCart-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, | ||
cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
cart => { Assert.Equal(key, cart.Key); } | ||
); | ||
} | ||
|
||
[Fact] | ||
public async Task GetCartById() | ||
{ | ||
var key = $"GetCartById-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
var retrievedCart = await _client | ||
.Carts() | ||
.WithId(cart.Id) | ||
.Get() | ||
.ExecuteAsync(); | ||
|
||
Assert.NotNull(retrievedCart); | ||
Assert.Equal(key, retrievedCart.Key); | ||
}); | ||
} | ||
|
||
[Fact] | ||
public async Task GetCartByKey() | ||
{ | ||
var key = $"GetCartByKey-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
var retrievedCart = await _client | ||
.Carts() | ||
.WithKey(cart.Key) | ||
.Get() | ||
.ExecuteAsync(); | ||
|
||
Assert.NotNull(retrievedCart); | ||
Assert.Equal(key, retrievedCart.Key); | ||
} | ||
); | ||
} | ||
|
||
[Fact] | ||
public async Task QueryCarts() | ||
{ | ||
var key = $"QueryCarts-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
var returnedSet = await _client | ||
.Carts() | ||
.Get() | ||
.WithQuery(q => q.Key().Is(cart.Key)) | ||
.ExecuteAsync(); | ||
Assert.Single(returnedSet.Results); | ||
Assert.Equal(key, returnedSet.Results[0].Key); | ||
} | ||
); | ||
} | ||
|
||
[Fact] | ||
public async Task DeleteCartById() | ||
{ | ||
var key = $"DeleteCartById-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
|
||
await _client | ||
.Carts() | ||
.WithId(cart.Id) | ||
.Delete() | ||
.WithVersion(cart.Version) | ||
.ExecuteAsync(); | ||
|
||
await Assert.ThrowsAsync<NotFoundException>( | ||
() => _client | ||
.Carts().WithId(cart.Id) | ||
.Get() | ||
.ExecuteAsync() | ||
); | ||
} | ||
); | ||
} | ||
|
||
[Fact] | ||
public async Task DeleteCartByKey() | ||
{ | ||
var key = $"DeleteCartByKey-{TestingUtility.RandomString()}"; | ||
await WithCart( | ||
_client, cartDraft => DefaultCartDraftWithKey(cartDraft, key), | ||
async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
|
||
await _client | ||
.Carts() | ||
.WithKey(cart.Key) | ||
.Delete() | ||
.WithVersion(cart.Version) | ||
.ExecuteAsync(); | ||
|
||
await Assert.ThrowsAsync<NotFoundException>( | ||
() => _client | ||
.Carts() | ||
.WithId(cart.Id) | ||
.Get() | ||
.ExecuteAsync() | ||
); | ||
} | ||
); | ||
} | ||
|
||
[Fact] | ||
public async Task UpdateCartByIdChangeCountry() | ||
{ | ||
await WithUpdateableCart(_client, async cart => | ||
{ | ||
Assert.NotNull(cart); | ||
|
||
const string name = "US"; | ||
var action = new CartSetCountryAction() | ||
{ | ||
Action = "setCountry", | ||
Country = name | ||
}; | ||
|
||
var update = new CartUpdate() | ||
{ | ||
Version = cart.Version, | ||
Actions = new List<ICartUpdateAction>() { action } | ||
}; | ||
|
||
try | ||
{ | ||
var updatedCart = await _client | ||
.Carts() | ||
.WithId(cart.Id) | ||
.Post(update) | ||
.ExecuteAsync(); | ||
|
||
Assert.Equal(name, updatedCart.Country); | ||
return updatedCart; | ||
} | ||
catch (Exception e) | ||
{ | ||
Console.WriteLine(e); | ||
throw; | ||
} | ||
}); | ||
} | ||
} | ||
} |
109 changes: 109 additions & 0 deletions
109
.../IntegrationTests/commercetools.Api.IntegrationTests/CartDiscount/CartDiscountFixtures.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
using System; | ||
using System.Threading.Tasks; | ||
using commercetools.Sdk.Api.Models.Common; | ||
using commercetools.Sdk.Api.Client; | ||
using commercetools.Sdk.Api.Models.CartDiscounts; | ||
using static commercetools.Api.IntegrationTests.GenericFixture; | ||
|
||
namespace commercetools.Api.IntegrationTests.CartDiscount | ||
{ | ||
public class CartDiscountFixtures | ||
{ | ||
#region DraftBuilds | ||
|
||
public static CartDiscountDraft DefaultCartDiscountDraft(CartDiscountDraft cartDiscountDraft) | ||
{ | ||
var randomString = TestingUtility.RandomString(); | ||
|
||
cartDiscountDraft.Name = new LocalizedString { { "en", $"$Name-{randomString}" } }; | ||
cartDiscountDraft.CartPredicate = $"country=\"DE\""; | ||
cartDiscountDraft.Value = new CartDiscountValueRelativeDraft() { Type = "relative", Permyriad = 10 }; | ||
cartDiscountDraft.Target = new CartDiscountShippingCostTarget() { Type = "shipping" }; | ||
cartDiscountDraft.SortOrder = TestingUtility.RandomSortOrder(); | ||
cartDiscountDraft.RequiresDiscountCode = true; | ||
cartDiscountDraft.IsActive = false; | ||
|
||
return cartDiscountDraft; | ||
} | ||
|
||
public static CartDiscountDraft DefaultCartDiscountDraftWithKey(CartDiscountDraft draft, string key) | ||
{ | ||
var cartDiscountDraft = DefaultCartDiscountDraft(draft); | ||
cartDiscountDraft.Key = key; | ||
|
||
return cartDiscountDraft; | ||
} | ||
|
||
#endregion | ||
|
||
#region CreateAndDelete | ||
|
||
public static async Task<ICartDiscount> CreateCartDiscount(ProjectApiRoot client, CartDiscountDraft cartDiscountDraft) | ||
{ | ||
try | ||
{ | ||
var resource = await client | ||
.CartDiscounts() | ||
.Post(cartDiscountDraft) | ||
.ExecuteAsync(); | ||
|
||
return resource; | ||
} | ||
catch (Exception e) | ||
{ | ||
Console.WriteLine(e); | ||
throw; | ||
} | ||
} | ||
|
||
public static async Task DeleteCartDiscount(ProjectApiRoot client, ICartDiscount cartDiscount) | ||
{ | ||
try | ||
{ | ||
await client | ||
.CartDiscounts() | ||
.WithId(cartDiscount.Id) | ||
.Delete() | ||
.WithVersion(cartDiscount.Version) | ||
.ExecuteAsync(); | ||
} | ||
catch (Exception) | ||
{ | ||
// ignored | ||
} | ||
} | ||
|
||
#endregion | ||
|
||
#region WithDiscountCodes | ||
|
||
public static async Task WithCartDiscount(ProjectApiRoot client, | ||
Func<CartDiscountDraft, CartDiscountDraft> draftAction, Action<ICartDiscount> func) | ||
{ | ||
await With(client, new CartDiscountDraft(), draftAction, func, CreateCartDiscount, DeleteCartDiscount); | ||
} | ||
|
||
public static async Task WithCartDiscount(ProjectApiRoot client, | ||
Func<CartDiscountDraft, CartDiscountDraft> draftAction, | ||
Func<ICartDiscount, Task> func) | ||
{ | ||
await WithAsync(client, new CartDiscountDraft(), draftAction, func, CreateCartDiscount, | ||
DeleteCartDiscount); | ||
} | ||
|
||
public static async Task WithCartDiscount(ProjectApiRoot client, Func<ICartDiscount, Task> func) | ||
{ | ||
await WithAsync(client, new CartDiscountDraft(), DefaultCartDiscountDraft, func, CreateCartDiscount, | ||
DeleteCartDiscount); | ||
} | ||
|
||
public static async Task WithUpdateableCartDiscount(ProjectApiRoot client, | ||
Func<ICartDiscount, Task<ICartDiscount>> func) | ||
{ | ||
await WithUpdateableAsync(client, new CartDiscountDraft(), DefaultCartDiscountDraft, func, | ||
CreateCartDiscount, DeleteCartDiscount); | ||
} | ||
|
||
#endregion | ||
} | ||
} |
Oops, something went wrong.