Skip to content

Commit 64454e2

Browse files
committed
Add more EngineHostConfiguration tests
1 parent 4301fd6 commit 64454e2

File tree

6 files changed

+158
-12
lines changed

6 files changed

+158
-12
lines changed
Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,143 @@
11
using BeekmanLabs.UnitTesting;
2+
using Common.Logging;
3+
using IntegrationEngine.Api;
4+
using IntegrationEngine.Core.Mail;
5+
using IntegrationEngine.Core.R;
6+
using IntegrationEngine.Core.Storage;
7+
using IntegrationEngine.MessageQueue;
8+
using IntegrationEngine.Scheduler;
29
using Microsoft.Practices.Unity;
310
using Moq;
11+
using Nest;
412
using NUnit.Framework;
13+
using System;
14+
using System.Collections.Generic;
515

616
namespace IntegrationEngine.Tests
717
{
818
public class EngineHostConfigurationTest : TestBase<EngineHostConfiguration>
919
{
20+
public IUnityContainer UnityContainer { get; set; }
21+
22+
[SetUp]
23+
public void Setup()
24+
{
25+
Subject.Container = UnityContainer = new UnityContainer();
26+
}
27+
1028
[Test]
1129
public void CanLoadConfiguration()
1230
{
13-
var container = new Mock<IUnityContainer>();
14-
Subject.Container = container.Object;
15-
1631
Subject.LoadConfiguration();
1732

1833
Assert.IsNotNull(Subject.Configuration);
1934
}
35+
36+
[Test]
37+
public void ShouldSetupLogging()
38+
{
39+
Subject.LoadConfiguration();
40+
41+
Subject.SetupLogging();
42+
43+
Subject.Container.Resolve<ILog>();
44+
}
45+
46+
[Test]
47+
public void ShouldSetupDatabaseAndRepository()
48+
{
49+
Subject.LoadConfiguration();
50+
51+
Subject.SetupDatabaseRepository();
52+
53+
Subject.Container.Resolve<IntegrationEngineContext>();
54+
Subject.Container.Resolve<IDatabaseRepository>();
55+
}
56+
57+
[Test]
58+
public void ShouldSetupMailClient()
59+
{
60+
Subject.LoadConfiguration();
61+
Subject.SetupLogging();
62+
63+
Subject.SetupMailClient();
64+
65+
Subject.Container.Resolve<IMailClient>();
66+
}
67+
68+
[Test]
69+
public void ShouldSetupElasticClientAndRepository()
70+
{
71+
Subject.LoadConfiguration();
72+
Subject.SetupLogging();
73+
74+
Subject.SetupElasticClientAndRepository();
75+
76+
Subject.Container.Resolve<IElasticClient>();
77+
Subject.Container.Resolve<IElasticsearchRepository>();
78+
}
79+
80+
[Test]
81+
public void ShouldSetupMessageQueueListener()
82+
{
83+
Subject.LoadConfiguration();
84+
Subject.SetupLogging();
85+
Subject.SetupMailClient();
86+
Subject.SetupDatabaseRepository();
87+
Subject.SetupElasticClientAndRepository();
88+
89+
Subject.SetupMessageQueueListener();
90+
91+
Subject.Container.Resolve<IMessageQueueListener>();
92+
}
93+
94+
[Test]
95+
public void ShouldSetupMessageQueueClient()
96+
{
97+
Subject.LoadConfiguration();
98+
Subject.SetupLogging();
99+
100+
Subject.SetupMessageQueueClient();
101+
102+
Subject.Container.Resolve<IMessageQueueClient>();
103+
}
104+
105+
[Test]
106+
public void ShouldSetupEngineScheduler()
107+
{
108+
Subject.IntegrationJobTypes = new List<Type>();
109+
Subject.LoadConfiguration();
110+
Subject.SetupLogging();
111+
Subject.SetupMessageQueueClient();
112+
Subject.SetupElasticClientAndRepository();
113+
114+
Subject.SetupEngineScheduler();
115+
116+
Subject.Container.Resolve<IEngineScheduler>();
117+
}
118+
119+
[Test]
120+
public void ShouldSetupRScriptRunner()
121+
{
122+
Subject.SetupRScriptRunner();
123+
124+
Subject.Container.Resolve<RScriptRunner>();
125+
}
126+
127+
[Test]
128+
public void ShouldShutdownSchedulerAndDisposeOfMessageQueueListener()
129+
{
130+
var mockEngineScheduler = new Mock<IEngineScheduler>();
131+
mockEngineScheduler.Setup(x => x.Shutdown());
132+
UnityContainer.RegisterInstance<IEngineScheduler>(mockEngineScheduler.Object);
133+
var mockMessageQueueListener = new Mock<IMessageQueueListener>();
134+
mockMessageQueueListener.Setup(x => x.Dispose());
135+
UnityContainer.RegisterInstance<IMessageQueueListener>(mockMessageQueueListener.Object);
136+
137+
Subject.Dispose();
138+
139+
mockEngineScheduler.Verify(x => x.Shutdown(), Times.Once);
140+
mockMessageQueueListener.Verify(x => x.Dispose(), Times.Once);
141+
}
20142
}
21143
}

IntegrationEngine.Tests/IntegrationEngine.Tests.csproj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,19 @@
8383
<Reference Include="fx.configuration">
8484
<HintPath>..\packages\FX.Configuration.0.4.1\lib\net45\fx.configuration.dll</HintPath>
8585
</Reference>
86+
<Reference Include="EntityFramework">
87+
<HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.dll</HintPath>
88+
</Reference>
89+
<Reference Include="EntityFramework.SqlServer">
90+
<HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.SqlServer.dll</HintPath>
91+
</Reference>
92+
<Reference Include="System.ComponentModel.DataAnnotations" />
93+
<Reference Include="Elasticsearch.Net">
94+
<HintPath>..\packages\Elasticsearch.Net.1.4.0\lib\net45\Elasticsearch.Net.dll</HintPath>
95+
</Reference>
96+
<Reference Include="Nest">
97+
<HintPath>..\packages\NEST.1.4.0\lib\net45\Nest.dll</HintPath>
98+
</Reference>
8699
</ItemGroup>
87100
<ItemGroup>
88101
<Compile Include="EngineHostConfigurationTest.cs" />
@@ -103,6 +116,10 @@
103116
<SubType>Designer</SubType>
104117
</None>
105118
<None Include="packages.config" />
119+
<None Include="..\configuration\IntegrationEngine.nlog.xml">
120+
<Link>IntegrationEngine.nlog.xml</Link>
121+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
122+
</None>
106123
</ItemGroup>
107124
<ItemGroup>
108125
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />

IntegrationEngine.Tests/app.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
3+
<configSections>
4+
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
5+
</configSections>
36
<runtime>
47
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
58
<dependentAssembly>

IntegrationEngine.Tests/packages.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
<package id="BeekmanLabs.UnitTesting" version="0.0.0" targetFramework="net45" />
44
<package id="Common.Logging" version="3.0.0" targetFramework="net45" />
55
<package id="Common.Logging.Core" version="3.0.0" targetFramework="net45" />
6+
<package id="Elasticsearch.Net" version="1.4.0" targetFramework="net45" />
7+
<package id="EntityFramework" version="6.1.2" targetFramework="net45" />
68
<package id="FX.Configuration" version="0.4.1" targetFramework="net45" />
79
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
810
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
911
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
12+
<package id="NEST" version="1.4.0" targetFramework="net45" />
1013
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
1114
<package id="NUnit" version="2.6.4" targetFramework="net45" />
1215
<package id="Quartz" version="2.3.1" targetFramework="net45" />

IntegrationEngine/EngineHostConfiguration.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ public void Configure(IList<Assembly> assembliesWithJobs)
4141
SetupLogging();
4242
TryAndLogFailure("Setup Database Repository", SetupDatabaseRepository);
4343
TryAndLogFailure("Setup Mail Client", SetupMailClient);
44-
TryAndLogFailure("Setup Elastic Client", SetupElasticClient);
44+
TryAndLogFailure("Setup Elastic Client", SetupElasticClientAndRepository);
4545
TryAndLogFailure("Setup RScript Runner", SetupRScriptRunner);
4646
TryAndLogFailure("Setup Message Queue Client", SetupMessageQueueClient);
47-
TryAndLogFailure("Setup Scheduler", SetupScheduler);
48-
TryAndLogFailure("Setup Web Api", SetupApi);
47+
TryAndLogFailure("Setup Scheduler", SetupEngineScheduler);
48+
TryAndLogFailure("Setup Web Api", SetupWebApi);
4949
TryAndLogFailure("Setup Message Queue Listener", SetupMessageQueueListener);
5050
}
5151

@@ -81,10 +81,12 @@ public void SetupLogging()
8181

8282
public void SetupDatabaseRepository()
8383
{
84-
Container.RegisterInstance<IntegrationEngineContext>(new DatabaseInitializer(Configuration.Database).GetDbContext());
84+
var dbContext = new DatabaseInitializer(Configuration.Database).GetDbContext();
85+
Container.RegisterInstance<IntegrationEngineContext>(dbContext);
86+
Container.RegisterInstance<IDatabaseRepository>(new DatabaseRepository(dbContext));
8587
}
8688

87-
public void SetupApi()
89+
public void SetupWebApi()
8890
{
8991
var config = Configuration.WebApi;
9092
IntegrationEngineApi.Start((new UriBuilder("http", config.HostName, config.Port)).Uri.AbsoluteUri);
@@ -98,7 +100,6 @@ public void SetupMailClient()
98100
MailConfiguration = Configuration.Mail,
99101
Log = log,
100102
};
101-
mailClient.IsServerAvailable();
102103
Container.RegisterInstance<IMailClient>(mailClient);
103104
}
104105

@@ -127,7 +128,7 @@ public void SetupMessageQueueClient()
127128
Container.RegisterInstance<IMessageQueueClient>(messageQueueClient);
128129
}
129130

130-
public void SetupScheduler()
131+
public void SetupEngineScheduler()
131132
{
132133
var log = Container.Resolve<ILog>();
133134
var engineScheduler = new EngineScheduler() {
@@ -156,7 +157,7 @@ public void SetupRScriptRunner()
156157
Container.RegisterInstance<RScriptRunner>(new RScriptRunner());
157158
}
158159

159-
public void SetupElasticClient()
160+
public void SetupElasticClientAndRepository()
160161
{
161162
var config = Configuration.Elasticsearch;
162163
var serverUri = new UriBuilder(config.Protocol, config.HostName, config.Port).Uri;

IntegrationEngine/Scheduler/EngineScheduler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void Start()
2929
Scheduler.Start();
3030
}
3131

32-
public void Shutdown()
32+
public virtual void Shutdown()
3333
{
3434
Scheduler.Shutdown();
3535
}

0 commit comments

Comments
 (0)