Skip to content

Commit 0024a23

Browse files
committed
Add functional test: Check The user has an location campaign
1 parent 9ae6fa8 commit 0024a23

10 files changed

Lines changed: 137 additions & 54 deletions

test/Services/FunctionalTests/FunctionalTests.csproj

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,46 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp1.1</TargetFramework>
5+
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
6+
<PackageTargetFallback>$(PackageTargetFallback);netstandard1.6.1;dnxcore50;portable-net451+win8</PackageTargetFallback>
7+
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
8+
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
9+
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
510
</PropertyGroup>
611

12+
<ItemGroup>
13+
<Compile Remove="Services\Location\**" />
14+
<Compile Remove="Services\Marketing\**" />
15+
<EmbeddedResource Remove="Services\Location\**" />
16+
<EmbeddedResource Remove="Services\Marketing\**" />
17+
<None Remove="Services\Location\**" />
18+
<None Remove="Services\Marketing\**" />
19+
</ItemGroup>
20+
721
<ItemGroup>
822
<None Remove="Services\Catalog\settings.json" />
923
</ItemGroup>
1024

25+
<ItemGroup>
26+
<Compile Include="Services\Location\LocationsScenariosBase.cs" />
27+
<Compile Include="Services\Location\LocationsTestsStartup.cs" />
28+
<Compile Include="Services\Marketing\CampaignScenariosBase.cs" />
29+
<Compile Include="Services\Marketing\UserLocationRoleScenariosBase.cs" />
30+
<Compile Include="Services\Marketing\MarketingScenarios.cs" />
31+
<Compile Include="Services\Marketing\MarketingScenariosBase.cs" />
32+
<Compile Include="Services\Marketing\MarketingTestsStartup.cs" />
33+
</ItemGroup>
34+
1135
<ItemGroup>
1236
<Content Include="Services\Catalog\settings.json">
1337
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1438
</Content>
39+
<Content Include="Services\Location\appsettings.json">
40+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
41+
</Content>
42+
<Content Include="Services\Marketing\appsettings.json">
43+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
44+
</Content>
1545
</ItemGroup>
1646

1747
<ItemGroup>
@@ -38,9 +68,6 @@
3868
<None Update="Services\Locations\appsettings.json">
3969
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4070
</None>
41-
<None Update="Services\Marketing\appsettings.json">
42-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
43-
</None>
4471
<None Update="Services\Ordering\settings.json">
4572
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4673
</None>

test/Services/FunctionalTests/Services/Locations/LocationsScenariosBase.cs renamed to test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs

File renamed without changes.

test/Services/FunctionalTests/Services/Locations/LocationsTestsStartup.cs renamed to test/Services/FunctionalTests/Services/Location/LocationsTestsStartup.cs

File renamed without changes.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"ConnectionString": "mongodb://localhost:27017",
3+
"Database": "LocationsDb",
4+
"ExternalCatalogBaseUrl": "http://localhost:5101",
5+
"IdentityUrl": "http://localhost:5105",
6+
"isTest": "true",
7+
"EventBusConnection": "localhost"
8+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
namespace FunctionalTests.Services.Marketing
2+
{
3+
using System;
4+
5+
public class CampaignScenariosBase : MarketingScenariosBase
6+
{
7+
public static class Get
8+
{
9+
public static string Campaigns = CampaignsUrlBase;
10+
11+
public static string CampaignBy(int id)
12+
=> $"{CampaignsUrlBase}/{id}";
13+
14+
public static string UserCampaignsByUserId(Guid userId)
15+
=> $"{CampaignsUrlBase}/user/{userId}";
16+
}
17+
18+
public static class Post
19+
{
20+
public static string AddNewCampaign = CampaignsUrlBase;
21+
}
22+
23+
public static class Put
24+
{
25+
public static string CampaignBy(int id)
26+
=> $"{CampaignsUrlBase}/{id}";
27+
}
28+
29+
public static class Delete
30+
{
31+
public static string CampaignBy(int id)
32+
=> $"{CampaignsUrlBase}/{id}";
33+
}
34+
}
35+
}

test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
11
namespace FunctionalTests.Services.Marketing
22
{
3-
using UserLocationDTO = Microsoft.eShopOnContainers.Services.Marketing.API.Dto.UserLocationDTO;
43
using UserLocation = Microsoft.eShopOnContainers.Services.Locations.API.Model.UserLocation;
54
using LocationRequest = Microsoft.eShopOnContainers.Services.Locations.API.ViewModel.LocationRequest;
6-
using FunctionalTests.Extensions;
7-
using FunctionalTests.Services.Basket;
85
using FunctionalTests.Services.Locations;
9-
using Microsoft.eShopOnContainers.Services.Basket.API.Model;
10-
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
116
using Newtonsoft.Json;
127
using System;
13-
using System.Collections.Generic;
14-
using System.Linq;
158
using System.Net.Http;
169
using System.Text;
1710
using System.Threading.Tasks;
18-
using WebMVC.Models;
1911
using Xunit;
12+
using System.Collections.Generic;
13+
using Microsoft.eShopOnContainers.Services.Marketing.API.Dto;
2014

2115
public class MarketingScenarios : MarketingScenariosBase
2216
{
2317
[Fact]
2418
public async Task Set_new_user_location_and_get_location_campaign_by_user_id()
2519
{
2620
using (var locationsServer = new LocationsScenariosBase().CreateServer())
27-
using (var marketingServer = CreateServer())
21+
using (var marketingServer = new MarketingScenariosBase().CreateServer())
2822
{
2923
var location = new LocationRequest
3024
{
@@ -35,7 +29,7 @@ public async Task Set_new_user_location_and_get_location_campaign_by_user_id()
3529
Encoding.UTF8, "application/json");
3630

3731
var userId = new Guid("4611ce3f-380d-4db5-8d76-87a8689058ed");
38-
32+
3933

4034
// GIVEN a new location of user is created
4135
var response = await locationsServer.CreateClient()
@@ -48,17 +42,16 @@ public async Task Set_new_user_location_and_get_location_campaign_by_user_id()
4842
var responseBody = await userLocationResponse.Content.ReadAsStringAsync();
4943
var userLocation = JsonConvert.DeserializeObject<UserLocation>(responseBody);
5044

51-
await Task.Delay(5000);
45+
await Task.Delay(300);
5246

5347
//Get campaing from Marketing.API given a userId
54-
var UserLocationCampaignResponse = await locationsServer.CreateClient()
55-
.GetAsync(Get.UserCampaignByUserId(userId));
48+
var UserLocationCampaignResponse = await marketingServer.CreateClient()
49+
.GetAsync(CampaignScenariosBase.Get.UserCampaignsByUserId(userId));
5650

5751
responseBody = await UserLocationCampaignResponse.Content.ReadAsStringAsync();
58-
var userLocationCampaign = JsonConvert.DeserializeObject<UserLocationDTO>(responseBody);
52+
var userLocationCampaigns = JsonConvert.DeserializeObject<List<CampaignDTO>>(responseBody);
5953

60-
// Assert
61-
Assert.Equal(userLocation.LocationId, userLocationCampaign.LocationId);
54+
Assert.True(userLocationCampaigns.Count > 0);
6255
}
6356
}
6457
}

test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,5 @@ public TestServer CreateServer()
1616

1717
return new TestServer(webHostBuilder);
1818
}
19-
20-
public static class Get
21-
{
22-
public static string Campaigns = CampaignsUrlBase;
23-
24-
public static string CampaignBy(int id)
25-
=> $"{CampaignsUrlBase}/{id}";
26-
27-
public static string UserCampaignByUserId(System.Guid userId)
28-
=> $"{CampaignsUrlBase}/user/{userId}";
29-
}
30-
31-
public static class Post
32-
{
33-
public static string AddNewCampaign = CampaignsUrlBase;
34-
}
35-
36-
public static class Put
37-
{
38-
public static string CampaignBy(int id)
39-
=> $"{CampaignsUrlBase}/{id}";
40-
}
41-
42-
public static class Delete
43-
{
44-
public static string CampaignBy(int id)
45-
=> $"{CampaignsUrlBase}/{id}";
46-
}
4719
}
48-
}
20+
}

test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
using FunctionalTests.Middleware;
2-
using Microsoft.AspNetCore.Builder;
3-
using Microsoft.AspNetCore.Hosting;
4-
using Microsoft.eShopOnContainers.Services.Ordering.API;
5-
6-
namespace FunctionalTests.Services.Marketing
1+
namespace FunctionalTests.Services.Marketing
72
{
3+
using Microsoft.eShopOnContainers.Services.Marketing.API;
4+
using Microsoft.AspNetCore.Hosting;
5+
using Microsoft.AspNetCore.Builder;
6+
using FunctionalTests.Middleware;
7+
88
public class MarketingTestsStartup : Startup
99
{
1010
public MarketingTestsStartup(IHostingEnvironment env) : base(env)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
namespace FunctionalTests.Services.Marketing
2+
{
3+
public class UserLocationRoleScenariosBase : MarketingScenariosBase
4+
{
5+
private const string EndpointLocationName = "locations";
6+
public static class Get
7+
{
8+
public static string UserLocationRulesByCampaignId(int campaignId)
9+
=> GetUserLocationRolesUrlBase(campaignId);
10+
11+
public static string UserLocationRuleByCampaignAndUserLocationRuleId(int campaignId,
12+
int userLocationRuleId)
13+
=> $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
14+
}
15+
16+
public static class Post
17+
{
18+
public static string AddNewuserLocationRule(int campaignId)
19+
=> GetUserLocationRolesUrlBase(campaignId);
20+
}
21+
22+
public static class Put
23+
{
24+
public static string UserLocationRoleBy(int campaignId,
25+
int userLocationRuleId)
26+
=> $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
27+
}
28+
29+
public static class Delete
30+
{
31+
public static string UserLocationRoleBy(int campaignId,
32+
int userLocationRuleId)
33+
=> $"{GetUserLocationRolesUrlBase(campaignId)}/{userLocationRuleId}";
34+
}
35+
36+
37+
private static string GetUserLocationRolesUrlBase(int campaignId)
38+
=> $"{CampaignsUrlBase}/{campaignId}/{EndpointLocationName}";
39+
}
40+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"ConnectionString": "Server=tcp:127.0.0.1,5433;Initial Catalog=Microsoft.eShopOnContainers.Services.MarketingDb;User Id=sa;Password=Pass@word",
3+
"MongoConnectionString": "mongodb://localhost:27017",
4+
"MongoDatabase": "MarketingDb",
5+
"IdentityUrl": "http://localhost:5105",
6+
"isTest": "true",
7+
"EventBusConnection": "localhost"
8+
}

0 commit comments

Comments
 (0)