Skip to content

Commit 75818ab

Browse files
committed
Implement sandbox test cases concept and allow to return test_case_200 static data of GetOrders call
1 parent 773519d commit 75818ab

File tree

7 files changed

+72
-5
lines changed

7 files changed

+72
-5
lines changed

Source/FikaAmazonAPI/FikaAmazonAPI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
4040
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
4141
<PackageReference Include="RestSharp" Version="106.12.0" />
42+
<PackageReference Include="System.Collections" Version="4.3.0" />
4243
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
4344
<PackageReference Include="System.Reflection" Version="4.3.0" />
4445
</ItemGroup>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace FikaAmazonAPI.Parameter
6+
{
7+
public interface IHasParameterizedTestCase
8+
{
9+
string TestCase { get; set; }
10+
Dictionary<string, List<KeyValuePair<string, string>>> SandboxQueryParameters { get; }
11+
}
12+
}

Source/FikaAmazonAPI/Parameter/Order/ParameterOrderList.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@
99

1010
namespace FikaAmazonAPI.Parameter.Order
1111
{
12-
public class ParameterOrderList : ParameterBased, IParameterBasedPII
12+
public class ParameterOrderList : ParameterBased, IParameterBasedPII, IHasParameterizedTestCase
1313
{
14+
public ParameterOrderList()
15+
{
16+
SandboxQueryParameters = Sandbox.SandboxQueryParameters<ParameterOrderList>();
17+
}
18+
1419
/// <summary>
1520
/// A date used for selecting orders created after (or at) a specified time. Only orders placed after the specified time are returned. Either the CreatedAfter parameter or the LastUpdatedAfter parameter is required. Both cannot be empty. The date must be in ISO 8601 format.
1621
/// </summary>
@@ -84,5 +89,8 @@ public class ParameterOrderList : ParameterBased, IParameterBasedPII
8489
public string StoreChainStoreId { get; set; }
8590
public bool IsNeedRestrictedDataToken { get; set; }
8691
public CreateRestrictedDataTokenRequest RestrictedDataTokenRequest { get; set; }
92+
public string TestCase { get; set; }
93+
94+
public Dictionary<string, List<KeyValuePair<string, string>>> SandboxQueryParameters { get; }
8795
}
8896
}

Source/FikaAmazonAPI/Parameter/ParameterBased.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using FikaAmazonAPI.Utils;
1+
using FikaAmazonAPI.Parameter;
2+
using FikaAmazonAPI.Utils;
23
using Newtonsoft.Json;
34
using System;
45
using System.Collections;
@@ -11,10 +12,28 @@ namespace FikaAmazonAPI.Search
1112
{
1213
public class ParameterBased
1314
{
14-
public virtual List<KeyValuePair<string, string>> getParameters()
15+
public virtual List<KeyValuePair<string, string>> getParameters(bool isSandbox = false)
1516
{
1617
List<KeyValuePair<string, string>> queryParameters = new List<KeyValuePair<string, string>>();
1718
Type t = this.GetType(); // Where obj is object whose properties you need.
19+
if (isSandbox)
20+
{
21+
if (typeof(IHasParameterizedTestCase).IsAssignableFrom(t))
22+
{
23+
var queryParametersProperties = t.GetInterfaces().FirstOrDefault(x => x == typeof(IHasParameterizedTestCase)).GetProperties();
24+
var testCasePropertyValue = queryParametersProperties.FirstOrDefault(x => x.Name == nameof(IHasParameterizedTestCase.TestCase))?.GetValue(this);
25+
if (testCasePropertyValue != null && testCasePropertyValue is string testCase)
26+
{
27+
var sandboxQueryParametersPropertyValue = queryParametersProperties.FirstOrDefault(x => x.Name == nameof(IHasParameterizedTestCase.SandboxQueryParameters))?.GetValue(this);
28+
if (sandboxQueryParametersPropertyValue != null && sandboxQueryParametersPropertyValue is Dictionary<string, List<KeyValuePair<string, string>>> sandboxQueryParameters)
29+
{
30+
if (sandboxQueryParameters.ContainsKey(testCase))
31+
return sandboxQueryParameters[testCase];
32+
}
33+
34+
}
35+
}
36+
}
1837
PropertyInfo[] pi = t.GetProperties();
1938
foreach (PropertyInfo p in pi)
2039
{
@@ -67,6 +86,7 @@ public virtual List<KeyValuePair<string, string>> getParameters()
6786

6887
return queryParameters;
6988
}
89+
7090
private static bool IsNullableEnum(Type t)
7191
{
7292
Type u = Nullable.GetUnderlyingType(t);

Source/FikaAmazonAPI/Services/OrderService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ public OrderList GetOrders(ParameterOrderList searchOrderList)
2525
{
2626
var orderList = new OrderList();
2727

28-
var queryParameters = searchOrderList.getParameters();
29-
28+
var queryParameters = searchOrderList.getParameters(this.AmazonCredential.Environment == Constants.Environments.Sandbox);
3029

3130
CreateAuthorizedRequest(OrdersApiUrls.Orders, RestSharp.Method.GET, queryParameters,parameter: searchOrderList);
3231
var response = ExecuteRequest<GetOrdersResponse>();

Source/FikaAmazonAPI/Utils/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class Constants
1111
{
1212
public readonly static string AmazonToeknEndPoint = "https://api.amazon.com/auth/o2/token";
1313
public readonly static string DateISO8601Format = "yyyy-MM-ddTHH:mm:ss.fffZ";
14+
public readonly static string TestCase200 = "TEST_CASE_200";
1415

1516
[JsonConverter(typeof(StringEnumConverter))]
1617
public enum Environments

Source/FikaAmazonAPI/Utils/Sandbox.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using FikaAmazonAPI.Parameter;
2+
using FikaAmazonAPI.Parameter.Order;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Text;
6+
7+
namespace FikaAmazonAPI.Utils
8+
{
9+
internal static class Sandbox
10+
{
11+
public static Dictionary<string, List<KeyValuePair<string, string>>> SandboxQueryParameters<T>() where T : IHasParameterizedTestCase
12+
{
13+
var queryParameters = new Dictionary<string, List<KeyValuePair<string, string>>>();
14+
if (typeof(T) == typeof(ParameterOrderList))
15+
{
16+
queryParameters.Add(Constants.TestCase200, new List<KeyValuePair<string, string>>()
17+
{
18+
new KeyValuePair<string, string>("CreatedAfter", Constants.TestCase200),
19+
new KeyValuePair<string, string>("MarketplaceIds", "ATVPDKIKX0DER")
20+
});
21+
}
22+
23+
return queryParameters;
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)