Skip to content

Commit 473c38e

Browse files
David BritchDavid Britch
authored andcommitted
Unit tests fixed.
1 parent 648b1b3 commit 473c38e

10 files changed

Lines changed: 194 additions & 166 deletions

File tree

src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public static void UpdateDependencies(bool useMockServices)
9696
}
9797
}
9898

99+
public static void RegisterSingleton<TInterface, T>() where TInterface : class where T : class, TInterface
100+
{
101+
_container.Register<TInterface, T>().AsSingleton();
102+
}
103+
99104
public static T Resolve<T>() where T : class
100105
{
101106
return _container.Resolve<T>();

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/Helpers/PropertyChangeTracker.cs

Lines changed: 0 additions & 50 deletions
This file was deleted.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using eShopOnContainers.Core.Services.Settings;
3+
4+
namespace eShopOnContainers.UnitTests.Mocks
5+
{
6+
public class MockSettingsService : ISettingsService
7+
{
8+
string _accessTokenDefault = string.Empty;
9+
string _idTokenDefault = string.Empty;
10+
bool _useMocksDefault = true;
11+
string _urlBaseDefault = "https://13.88.8.119";
12+
bool _useFakeLocationDefault = false;
13+
bool _allowGpsLocationDefault = false;
14+
double _fakeLatitudeDefault = 47.604610d;
15+
double _fakeLongitudeDefault = -122.315752d;
16+
17+
public string AuthAccessToken
18+
{
19+
get { return _accessTokenDefault; }
20+
set { _accessTokenDefault = value; }
21+
}
22+
23+
public string AuthIdToken
24+
{
25+
get { return _idTokenDefault; }
26+
set { _idTokenDefault = value; }
27+
}
28+
29+
public bool UseMocks
30+
{
31+
get { return _useMocksDefault; }
32+
set { _useMocksDefault = value; }
33+
}
34+
35+
public string UrlBase
36+
{
37+
get { return _urlBaseDefault; }
38+
set { _urlBaseDefault = value; }
39+
}
40+
41+
public bool UseFakeLocation
42+
{
43+
get { return _useFakeLocationDefault; }
44+
set { _useFakeLocationDefault = value; }
45+
}
46+
47+
public string Latitude
48+
{
49+
get { return _fakeLatitudeDefault.ToString(); }
50+
set { _fakeLatitudeDefault = Convert.ToDouble(value); }
51+
}
52+
53+
public string Longitude
54+
{
55+
get { return _fakeLongitudeDefault.ToString(); }
56+
set { _fakeLongitudeDefault = Convert.ToDouble(value); }
57+
}
58+
59+
public bool AllowGpsLocation
60+
{
61+
get { return _allowGpsLocationDefault; }
62+
set { _allowGpsLocationDefault = value; }
63+
}
64+
}
65+
}

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/Services/MarketingServiceTests.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
namespace eShopOnContainers.UnitTests.Services
2-
{
3-
using System.Threading.Tasks;
4-
using Core;
5-
using Core.Helpers;
6-
using Core.Services.Marketing;
7-
using Xunit;
1+
using System.Threading.Tasks;
2+
using eShopOnContainers.Core;
3+
using eShopOnContainers.Core.Services.Marketing;
4+
using Xunit;
85

6+
namespace eShopOnContainers.UnitTests.Services
7+
{
98
public class MarketingServiceTests
109
{
1110
[Fact]

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/ViewModels/CatalogViewModelTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using eShopOnContainers.Core.Models.Catalog;
66
using System.Threading.Tasks;
77
using System.Linq;
8+
using eShopOnContainers.Core.Services.Settings;
9+
using eShopOnContainers.UnitTests.Mocks;
810

911
namespace eShopOnContainers.UnitTests
1012
{
@@ -13,6 +15,7 @@ public class CatalogViewModelTests
1315
public CatalogViewModelTests()
1416
{
1517
ViewModelLocator.UpdateDependencies(true);
18+
ViewModelLocator.RegisterSingleton<ISettingsService, MockSettingsService>();
1619
}
1720

1821
[Fact]

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/ViewModels/MainViewModelTests.cs

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,56 @@
22
using eShopOnContainers.Core.ViewModels;
33
using eShopOnContainers.Core.ViewModels.Base;
44
using eShopOnContainers.Core.Models.Navigation;
5+
using eShopOnContainers.Core.Services.Settings;
6+
using eShopOnContainers.UnitTests.Mocks;
57
using System.Threading.Tasks;
68

79
namespace eShopOnContainers.UnitTests
810
{
9-
public class MainViewModelTests
10-
{
11-
public MainViewModelTests()
12-
{
13-
ViewModelLocator.UpdateDependencies(true);
14-
}
11+
public class MainViewModelTests
12+
{
13+
public MainViewModelTests()
14+
{
15+
ViewModelLocator.UpdateDependencies(true);
16+
ViewModelLocator.RegisterSingleton<ISettingsService, MockSettingsService>();
17+
}
1518

16-
[Fact]
17-
public void SettingsCommandIsNotNullWhenViewModelInstantiatedTest()
18-
{
19-
var mainViewModel = new MainViewModel();
20-
Assert.NotNull(mainViewModel.SettingsCommand);
21-
}
19+
[Fact]
20+
public void SettingsCommandIsNotNullWhenViewModelInstantiatedTest()
21+
{
22+
var mainViewModel = new MainViewModel();
23+
Assert.NotNull(mainViewModel.SettingsCommand);
24+
}
2225

23-
[Fact]
24-
public async Task ViewModelInitializationSendsChangeTabMessageTest()
25-
{
26-
bool messageReceived = false;
27-
var mainViewModel = new MainViewModel();
28-
var tabParam = new TabParameter { TabIndex = 2 };
26+
[Fact]
27+
public async Task ViewModelInitializationSendsChangeTabMessageTest()
28+
{
29+
bool messageReceived = false;
30+
var mainViewModel = new MainViewModel();
31+
var tabParam = new TabParameter { TabIndex = 2 };
2932

30-
Xamarin.Forms.MessagingCenter.Subscribe<MainViewModel, int>(this, MessageKeys.ChangeTab, (sender, arg) =>
31-
{
32-
messageReceived = true;
33-
});
34-
await mainViewModel.InitializeAsync(tabParam);
33+
Xamarin.Forms.MessagingCenter.Subscribe<MainViewModel, int>(this, MessageKeys.ChangeTab, (sender, arg) =>
34+
{
35+
messageReceived = true;
36+
});
37+
await mainViewModel.InitializeAsync(tabParam);
3538

36-
Assert.True(messageReceived);
37-
}
39+
Assert.True(messageReceived);
40+
}
3841

39-
[Fact]
40-
public void IsBusyPropertyIsFalseWhenViewModelInstantiatedTest()
41-
{
42-
var mainViewModel = new MainViewModel();
43-
Assert.False(mainViewModel.IsBusy);
44-
}
42+
[Fact]
43+
public void IsBusyPropertyIsFalseWhenViewModelInstantiatedTest()
44+
{
45+
var mainViewModel = new MainViewModel();
46+
Assert.False(mainViewModel.IsBusy);
47+
}
4548

46-
[Fact]
47-
public async Task IsBusyPropertyIsTrueAfterViewModelInitializationTest()
48-
{
49-
var mainViewModel = new MainViewModel();
50-
await mainViewModel.InitializeAsync(null);
51-
Assert.True(mainViewModel.IsBusy);
52-
}
53-
}
49+
[Fact]
50+
public async Task IsBusyPropertyIsTrueAfterViewModelInitializationTest()
51+
{
52+
var mainViewModel = new MainViewModel();
53+
await mainViewModel.InitializeAsync(null);
54+
Assert.True(mainViewModel.IsBusy);
55+
}
56+
}
5457
}

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/ViewModels/MarketingViewModelTests.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,36 @@
1-
namespace eShopOnContainers.UnitTests.ViewModels
2-
{
3-
using System.Threading.Tasks;
4-
using Xunit;
5-
using Core.ViewModels.Base;
6-
using Core.Services.Marketing;
7-
using Core.ViewModels;
1+
using System.Threading.Tasks;
2+
using Xunit;
3+
using eShopOnContainers.Core.ViewModels.Base;
4+
using eShopOnContainers.Core.Services.Marketing;
5+
using eShopOnContainers.Core.ViewModels;
6+
using eShopOnContainers.UnitTests.Mocks;
7+
using eShopOnContainers.Core.Services.Settings;
88

9+
namespace eShopOnContainers.UnitTests.ViewModels
10+
{
911
public class MarketingViewModelTests
1012
{
1113
public MarketingViewModelTests()
1214
{
1315
ViewModelLocator.UpdateDependencies(true);
16+
ViewModelLocator.RegisterSingleton<ISettingsService, MockSettingsService>();
1417
}
1518

1619
[Fact]
1720
public void GetCampaignsIsNullTest()
1821
{
22+
var settingsService = new MockSettingsService();
1923
var campaignService = new CampaignMockService();
20-
var campaignViewModel = new CampaignViewModel(campaignService);
24+
var campaignViewModel = new CampaignViewModel(settingsService, campaignService);
2125
Assert.Null(campaignViewModel.Campaigns);
2226
}
2327

2428
[Fact]
2529
public async Task GetCampaignsIsNotNullTest()
2630
{
31+
var settingsService = new MockSettingsService();
2732
var campaignService = new CampaignMockService();
28-
var campaignViewModel = new CampaignViewModel(campaignService);
33+
var campaignViewModel = new CampaignViewModel(settingsService, campaignService);
2934

3035
await campaignViewModel.InitializeAsync(null);
3136

@@ -35,24 +40,27 @@ public async Task GetCampaignsIsNotNullTest()
3540
[Fact]
3641
public void GetCampaignDetailsCommandIsNotNullTest()
3742
{
43+
var settingsService = new MockSettingsService();
3844
var campaignService = new CampaignMockService();
39-
var campaignViewModel = new CampaignViewModel(campaignService);
45+
var campaignViewModel = new CampaignViewModel(settingsService, campaignService);
4046
Assert.NotNull(campaignViewModel.GetCampaignDetailsCommand);
4147
}
4248

4349
[Fact]
4450
public void GetCampaignDetailsByIdIsNullTest()
4551
{
52+
var settingsService = new MockSettingsService();
4653
var campaignService = new CampaignMockService();
47-
var campaignViewModel = new CampaignDetailsViewModel(campaignService);
54+
var campaignViewModel = new CampaignDetailsViewModel(settingsService, campaignService);
4855
Assert.Null(campaignViewModel.Campaign);
4956
}
5057

5158
[Fact]
5259
public async Task GetCampaignDetailsByIdIsNotNullTest()
5360
{
61+
var settingsService = new MockSettingsService();
5462
var campaignService = new CampaignMockService();
55-
var campaignDetailsViewModel = new CampaignDetailsViewModel(campaignService);
63+
var campaignDetailsViewModel = new CampaignDetailsViewModel(settingsService, campaignService);
5664

5765
await campaignDetailsViewModel.InitializeAsync(1);
5866

src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/ViewModels/MockViewModelTests.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using Xunit;
22
using eShopOnContainers.Core.ViewModels.Base;
3-
using eShopOnContainers.UnitTests.Helpers;
4-
using System.ComponentModel;
53

64
namespace eShopOnContainers.UnitTests
75
{
@@ -86,15 +84,12 @@ public void SettingForenamePropertyShouldRaisePropertyChanged()
8684
bool invoked = false;
8785
var mockViewModel = new MockViewModel();
8886

89-
PropertyChangedEventHandler handler = (sender, e) =>
87+
mockViewModel.Forename.PropertyChanged += (sender, e) =>
9088
{
9189
if (e.PropertyName.Equals("Value"))
9290
invoked = true;
9391
};
94-
95-
mockViewModel.Forename.PropertyChanged += handler;
9692
mockViewModel.Forename.Value = "John";
97-
mockViewModel.Forename.PropertyChanged -= handler;
9893

9994
Assert.True(invoked);
10095
}
@@ -105,15 +100,12 @@ public void SettingSurnamePropertyShouldRaisePropertyChanged()
105100
bool invoked = false;
106101
var mockViewModel = new MockViewModel();
107102

108-
PropertyChangedEventHandler handler = (sender, e) =>
103+
mockViewModel.Surname.PropertyChanged += (sender, e) =>
109104
{
110105
if (e.PropertyName.Equals("Value"))
111106
invoked = true;
112107
};
113-
114-
mockViewModel.Surname.PropertyChanged += handler;
115108
mockViewModel.Surname.Value = "Smith";
116-
mockViewModel.Surname.PropertyChanged -= handler;
117109

118110
Assert.True(invoked);
119111
}

0 commit comments

Comments
 (0)