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" +}