diff --git a/test/Services/FunctionalTests/FunctionalTests.csproj b/test/Services/FunctionalTests/FunctionalTests.csproj
index 2a4c1940d..ef5561595 100644
--- a/test/Services/FunctionalTests/FunctionalTests.csproj
+++ b/test/Services/FunctionalTests/FunctionalTests.csproj
@@ -2,16 +2,46 @@
netcoreapp1.1
+ true
+ $(PackageTargetFallback);netstandard1.6.1;dnxcore50;portable-net451+win8
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
@@ -38,9 +68,6 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
diff --git a/test/Services/FunctionalTests/Services/Locations/LocationsScenariosBase.cs b/test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs
similarity index 100%
rename from test/Services/FunctionalTests/Services/Locations/LocationsScenariosBase.cs
rename to test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs
diff --git a/test/Services/FunctionalTests/Services/Locations/LocationsTestsStartup.cs b/test/Services/FunctionalTests/Services/Location/LocationsTestsStartup.cs
similarity index 100%
rename from test/Services/FunctionalTests/Services/Locations/LocationsTestsStartup.cs
rename to test/Services/FunctionalTests/Services/Location/LocationsTestsStartup.cs
diff --git a/test/Services/FunctionalTests/Services/Location/appsettings.json b/test/Services/FunctionalTests/Services/Location/appsettings.json
new file mode 100644
index 000000000..9769fb65a
--- /dev/null
+++ b/test/Services/FunctionalTests/Services/Location/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "ConnectionString": "mongodb://localhost:27017",
+ "Database": "LocationsDb",
+ "ExternalCatalogBaseUrl": "http://localhost:5101",
+ "IdentityUrl": "http://localhost:5105",
+ "isTest": "true",
+ "EventBusConnection": "localhost"
+}
diff --git a/test/Services/FunctionalTests/Services/Marketing/CampaignScenariosBase.cs b/test/Services/FunctionalTests/Services/Marketing/CampaignScenariosBase.cs
new file mode 100644
index 000000000..93282ccde
--- /dev/null
+++ b/test/Services/FunctionalTests/Services/Marketing/CampaignScenariosBase.cs
@@ -0,0 +1,35 @@
+namespace FunctionalTests.Services.Marketing
+{
+ using System;
+
+ public class CampaignScenariosBase : MarketingScenariosBase
+ {
+ public static class Get
+ {
+ public static string Campaigns = CampaignsUrlBase;
+
+ public static string CampaignBy(int id)
+ => $"{CampaignsUrlBase}/{id}";
+
+ public static string UserCampaignsByUserId(Guid userId)
+ => $"{CampaignsUrlBase}/user/{userId}";
+ }
+
+ public static class Post
+ {
+ public static string AddNewCampaign = CampaignsUrlBase;
+ }
+
+ public static class Put
+ {
+ public static string CampaignBy(int id)
+ => $"{CampaignsUrlBase}/{id}";
+ }
+
+ public static class Delete
+ {
+ public static string CampaignBy(int id)
+ => $"{CampaignsUrlBase}/{id}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs b/test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs
index 3f3c86bef..ed2b6f2a7 100644
--- a/test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs
+++ b/test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs
@@ -1,22 +1,16 @@
namespace FunctionalTests.Services.Marketing
{
- using UserLocationDTO = Microsoft.eShopOnContainers.Services.Marketing.API.Dto.UserLocationDTO;
using UserLocation = Microsoft.eShopOnContainers.Services.Locations.API.Model.UserLocation;
using LocationRequest = Microsoft.eShopOnContainers.Services.Locations.API.ViewModel.LocationRequest;
- using FunctionalTests.Extensions;
- using FunctionalTests.Services.Basket;
using FunctionalTests.Services.Locations;
- using Microsoft.eShopOnContainers.Services.Basket.API.Model;
- using Microsoft.eShopOnContainers.WebMVC.ViewModels;
using Newtonsoft.Json;
using System;
- using System.Collections.Generic;
- using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
- using WebMVC.Models;
using Xunit;
+ using System.Collections.Generic;
+ using Microsoft.eShopOnContainers.Services.Marketing.API.Dto;
public class MarketingScenarios : MarketingScenariosBase
{
@@ -24,7 +18,7 @@
public async Task Set_new_user_location_and_get_location_campaign_by_user_id()
{
using (var locationsServer = new LocationsScenariosBase().CreateServer())
- using (var marketingServer = CreateServer())
+ using (var marketingServer = new MarketingScenariosBase().CreateServer())
{
var location = new LocationRequest
{
@@ -35,7 +29,7 @@
Encoding.UTF8, "application/json");
var userId = new Guid("4611ce3f-380d-4db5-8d76-87a8689058ed");
-
+
// GIVEN a new location of user is created
var response = await locationsServer.CreateClient()
@@ -48,17 +42,16 @@
var responseBody = await userLocationResponse.Content.ReadAsStringAsync();
var userLocation = JsonConvert.DeserializeObject(responseBody);
- await Task.Delay(5000);
+ await Task.Delay(300);
//Get campaing from Marketing.API given a userId
- var UserLocationCampaignResponse = await locationsServer.CreateClient()
- .GetAsync(Get.UserCampaignByUserId(userId));
+ var UserLocationCampaignResponse = await marketingServer.CreateClient()
+ .GetAsync(CampaignScenariosBase.Get.UserCampaignsByUserId(userId));
responseBody = await UserLocationCampaignResponse.Content.ReadAsStringAsync();
- var userLocationCampaign = JsonConvert.DeserializeObject(responseBody);
+ var userLocationCampaigns = JsonConvert.DeserializeObject>(responseBody);
- // Assert
- Assert.Equal(userLocation.LocationId, userLocationCampaign.LocationId);
+ Assert.True(userLocationCampaigns.Count > 0);
}
}
}
diff --git a/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs b/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs
index 7bb17f752..85f73c9a6 100644
--- a/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs
+++ b/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs
@@ -16,33 +16,5 @@
return new TestServer(webHostBuilder);
}
-
- public static class Get
- {
- public static string Campaigns = CampaignsUrlBase;
-
- public static string CampaignBy(int id)
- => $"{CampaignsUrlBase}/{id}";
-
- public static string UserCampaignByUserId(System.Guid userId)
- => $"{CampaignsUrlBase}/user/{userId}";
- }
-
- public static class Post
- {
- public static string AddNewCampaign = CampaignsUrlBase;
- }
-
- public static class Put
- {
- public static string CampaignBy(int id)
- => $"{CampaignsUrlBase}/{id}";
- }
-
- public static class Delete
- {
- public static string CampaignBy(int id)
- => $"{CampaignsUrlBase}/{id}";
- }
}
-}
+}
\ No newline at end of file
diff --git a/test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs b/test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs
index 0518eeb78..e43db6646 100644
--- a/test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs
+++ b/test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs
@@ -1,10 +1,10 @@
-using FunctionalTests.Middleware;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.eShopOnContainers.Services.Ordering.API;
-
-namespace FunctionalTests.Services.Marketing
+namespace FunctionalTests.Services.Marketing
{
+ using Microsoft.eShopOnContainers.Services.Marketing.API;
+ using Microsoft.AspNetCore.Hosting;
+ using Microsoft.AspNetCore.Builder;
+ using FunctionalTests.Middleware;
+
public class MarketingTestsStartup : Startup
{
public MarketingTestsStartup(IHostingEnvironment env) : base(env)
diff --git a/test/Services/FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs b/test/Services/FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs
new file mode 100644
index 000000000..20beeef48
--- /dev/null
+++ b/test/Services/FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs
@@ -0,0 +1,40 @@
+namespace FunctionalTests.Services.Marketing
+{
+ public class UserLocationRoleScenariosBase : MarketingScenariosBase
+ {
+ private const string EndpointLocationName = "locations";
+ public static class Get
+ {
+ public static string UserLocationRulesByCampaignId(int campaignId)
+ => GetUserLocationRolesUrlBase(campaignId);
+
+ public static string UserLocationRuleByCampaignAndUserLocationRuleId(int campaignId,
+ int userLocationRuleId)
+ => $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
+ }
+
+ public static class Post
+ {
+ public static string AddNewuserLocationRule(int campaignId)
+ => GetUserLocationRolesUrlBase(campaignId);
+ }
+
+ public static class Put
+ {
+ public static string UserLocationRoleBy(int campaignId,
+ int userLocationRuleId)
+ => $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
+ }
+
+ public static class Delete
+ {
+ public static string UserLocationRoleBy(int campaignId,
+ int userLocationRuleId)
+ => $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
+ }
+
+
+ private static string GetUserLocationRolesUrlBase(int campaignId)
+ => $"{CampaignsUrlBase}/{campaignId}/{EndpointLocationName}";
+ }
+}
\ No newline at end of file
diff --git a/test/Services/FunctionalTests/Services/Marketing/appsettings.json b/test/Services/FunctionalTests/Services/Marketing/appsettings.json
new file mode 100644
index 000000000..571364e6e
--- /dev/null
+++ b/test/Services/FunctionalTests/Services/Marketing/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "ConnectionString": "Server=tcp:127.0.0.1,5433;Initial Catalog=Microsoft.eShopOnContainers.Services.MarketingDb;User Id=sa;Password=Pass@word",
+ "MongoConnectionString": "mongodb://localhost:27017",
+ "MongoDatabase": "MarketingDb",
+ "IdentityUrl": "http://localhost:5105",
+ "isTest": "true",
+ "EventBusConnection": "localhost"
+}