Skip to content

Commit a2a7e13

Browse files
committed
Add more tests
1 parent ffdedad commit a2a7e13

File tree

12 files changed

+446
-20
lines changed

12 files changed

+446
-20
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProjectGuid>{F999051E-B715-4AB9-A3B2-0D91A896A2C2}</ProjectGuid>
8+
<OutputType>Library</OutputType>
9+
<AppDesignerFolder>Properties</AppDesignerFolder>
10+
<RootNamespace>IntegrationEngine.Model.Tests</RootNamespace>
11+
<AssemblyName>IntegrationEngine.Model.Tests</AssemblyName>
12+
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
15+
<RestorePackages>true</RestorePackages>
16+
</PropertyGroup>
17+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
18+
<DebugSymbols>true</DebugSymbols>
19+
<DebugType>full</DebugType>
20+
<Optimize>false</Optimize>
21+
<OutputPath>bin\Debug\</OutputPath>
22+
<DefineConstants>DEBUG;TRACE</DefineConstants>
23+
<ErrorReport>prompt</ErrorReport>
24+
<WarningLevel>4</WarningLevel>
25+
</PropertyGroup>
26+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27+
<DebugType>pdbonly</DebugType>
28+
<Optimize>true</Optimize>
29+
<OutputPath>bin\Release\</OutputPath>
30+
<DefineConstants>TRACE</DefineConstants>
31+
<ErrorReport>prompt</ErrorReport>
32+
<WarningLevel>4</WarningLevel>
33+
</PropertyGroup>
34+
<ItemGroup>
35+
<Reference Include="CronExpressionDescriptor">
36+
<HintPath>..\packages\CronExpressionDescriptor.1.12.0\lib\net35\CronExpressionDescriptor.dll</HintPath>
37+
</Reference>
38+
<Reference Include="Elasticsearch.Net">
39+
<HintPath>..\packages\Elasticsearch.Net.1.3.1\lib\Elasticsearch.Net.dll</HintPath>
40+
</Reference>
41+
<Reference Include="Nest">
42+
<HintPath>..\packages\NEST.1.3.1\lib\Nest.dll</HintPath>
43+
</Reference>
44+
<Reference Include="Newtonsoft.Json">
45+
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
46+
</Reference>
47+
<Reference Include="nunit.framework">
48+
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
49+
</Reference>
50+
<Reference Include="System" />
51+
<Reference Include="System.Core" />
52+
<Reference Include="System.Xml.Linq" />
53+
<Reference Include="System.Data.DataSetExtensions" />
54+
<Reference Include="Microsoft.CSharp" />
55+
<Reference Include="System.Data" />
56+
<Reference Include="System.Xml" />
57+
</ItemGroup>
58+
<ItemGroup>
59+
<Compile Include="Properties\AssemblyInfo.cs" />
60+
<Compile Include="TriggerPropertyExtensionTest.cs" />
61+
</ItemGroup>
62+
<ItemGroup>
63+
<None Include="packages.config" />
64+
</ItemGroup>
65+
<ItemGroup>
66+
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
67+
</ItemGroup>
68+
<ItemGroup>
69+
<ProjectReference Include="..\IntegrationEngine.Model\IntegrationEngine.Model.csproj">
70+
<Project>{0b499fe4-0bdb-4080-bcb7-f8d4ce54a4ff}</Project>
71+
<Name>IntegrationEngine.Model</Name>
72+
</ProjectReference>
73+
<ProjectReference Include="..\UnitTesting\UnitTesting.csproj">
74+
<Project>{3a6e4fab-025b-450c-a286-911bad1f8e05}</Project>
75+
<Name>UnitTesting</Name>
76+
</ProjectReference>
77+
</ItemGroup>
78+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
79+
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
80+
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
81+
Other similar extension points exist, see Microsoft.Common.targets.
82+
<Target Name="BeforeBuild">
83+
</Target>
84+
<Target Name="AfterBuild">
85+
</Target>
86+
-->
87+
</Project>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// General Information about an assembly is controlled through the following
6+
// set of attributes. Change these attribute values to modify the information
7+
// associated with an assembly.
8+
[assembly: AssemblyTitle("IntegrationEngine.Model.Tests")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("Hewlett-Packard Company")]
12+
[assembly: AssemblyProduct("IntegrationEngine.Model.Tests")]
13+
[assembly: AssemblyCopyright("Copyright © Hewlett-Packard Company 2015")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// Setting ComVisible to false makes the types in this assembly not visible
18+
// to COM components. If you need to access a type in this assembly from
19+
// COM, set the ComVisible attribute to true on that type.
20+
[assembly: ComVisible(false)]
21+
22+
// The following GUID is for the ID of the typelib if this project is exposed to COM
23+
[assembly: Guid("e6becfb2-19e7-4325-9be2-94c633333e30")]
24+
25+
// Version information for an assembly consists of the following four values:
26+
//
27+
// Major Version
28+
// Minor Version
29+
// Build Number
30+
// Revision
31+
//
32+
// You can specify all the values or you can default the Build and Revision Numbers
33+
// by using the '*' as shown below:
34+
// [assembly: AssemblyVersion("1.0.*")]
35+
[assembly: AssemblyVersion("1.0.0.0")]
36+
[assembly: AssemblyFileVersion("1.0.0.0")]
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
using IntegrationEngine.Model;
2+
using NUnit.Framework;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace IntegrationEngine.Model.Tests
10+
{
11+
public class TriggerPropertyExtensionTest
12+
{
13+
[Test]
14+
public void ShouldGetActiveDescriptionForStateIdZero()
15+
{
16+
int stateId = 0;
17+
18+
var result = stateId.GetStateDescription();
19+
20+
Assert.That(result, Is.EqualTo("Active"));
21+
}
22+
23+
[Test]
24+
public void ShouldGetPausedDescriptionForStateIdOne()
25+
{
26+
int stateId = 1;
27+
28+
var result = stateId.GetStateDescription();
29+
30+
Assert.That(result, Is.EqualTo("Paused"));
31+
}
32+
33+
[Test]
34+
public void ShouldGetTimeZoneFromTimeZoneId()
35+
{
36+
string timeZoneId = "New York Standard Time";
37+
38+
var result = timeZoneId.GetTimeZoneInfo();
39+
40+
Assert.That(result, Is.EqualTo(TimeZoneInfo.Utc));
41+
}
42+
43+
[Test]
44+
public void ShouldReturnUtcTimeZoneIfTimeZoneIdIsNull()
45+
{
46+
string timeZoneId = null;
47+
48+
var result = timeZoneId.GetTimeZoneInfo();
49+
50+
Assert.That(result, Is.EqualTo(TimeZoneInfo.Utc));
51+
}
52+
53+
[Test]
54+
public void ShouldReturnUtcTimeZoneIfTimeZoneIdDoesNotExist()
55+
{
56+
string timeZoneId = "foo";
57+
58+
var result = timeZoneId.GetTimeZoneInfo();
59+
60+
Assert.That(result, Is.EqualTo(TimeZoneInfo.Utc));
61+
}
62+
63+
[Test]
64+
public void ShouldReturnHumanReadableCronSchedule()
65+
{
66+
var expected = "Every minute";
67+
string timeZoneId = "* * * * *";
68+
69+
var result = timeZoneId.GetHumanReadableCronSchedule();
70+
71+
Assert.That(result, Is.EqualTo(expected));
72+
}
73+
74+
[Test]
75+
public void ShouldReturnEmptyStringIfCronExpressionIsNull()
76+
{
77+
string timeZoneId = null;
78+
79+
var result = timeZoneId.GetHumanReadableCronSchedule();
80+
81+
Assert.That(result, Is.EqualTo(String.Empty));
82+
}
83+
84+
[Test]
85+
public void ShouldReturnEmptyStringIfCronExpressionIsInvalidString()
86+
{
87+
string timeZoneId = "foo";
88+
89+
var result = timeZoneId.GetTimeZoneInfo();
90+
91+
Assert.That(result, Is.EqualTo(TimeZoneInfo.Utc));
92+
}
93+
}
94+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="CronExpressionDescriptor" version="1.12.0" targetFramework="net45" />
4+
<package id="Elasticsearch.Net" version="1.3.1" targetFramework="net45" />
5+
<package id="NEST" version="1.3.1" targetFramework="net45" />
6+
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
7+
<package id="NUnit" version="2.6.4" targetFramework="net45" />
8+
</packages>

IntegrationEngine.Tests/Scheduler/EngineSchedulerTest.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Moq;
33
using NUnit.Framework;
44
using Quartz;
5+
using Quartz.Impl;
56
using System;
67
using System.Collections.Generic;
78

@@ -29,5 +30,25 @@ public void ShouldDeleteTrigger()
2930

3031
Assert.That(result, Is.True);
3132
}
33+
34+
[Test]
35+
public void ShouldReturnFalseIfATriggerThatIsNotScheduledIsDeleted()
36+
{
37+
var jobType = typeof(IntegrationJobFixture);
38+
var subject = new EngineScheduler() {
39+
IntegrationJobTypes = new List<Type>() { jobType },
40+
Scheduler = StdSchedulerFactory.GetDefaultScheduler(),
41+
};
42+
var trigger = new CronTrigger()
43+
{
44+
Id = "one",
45+
JobType = jobType.FullName
46+
};
47+
var scheduler = StdSchedulerFactory.GetDefaultScheduler();
48+
49+
var result = subject.DeleteTrigger(trigger);
50+
51+
Assert.That(result, Is.False);
52+
}
3253
}
3354
}

IntegrationEngine.sln

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 2013
4-
VisualStudioVersion = 12.0.31101.0
4+
VisualStudioVersion = 12.0.21005.1
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationEngine", "IntegrationEngine\IntegrationEngine.csproj", "{7D49353D-A68C-4ACA-A6A5-40B1C314C30E}"
77
EndProject
@@ -37,6 +37,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationEngine.Client.ne
3737
EndProject
3838
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationEngine.ConsoleClient", "IntegrationEngine.ConsoleClient\IntegrationEngine.ConsoleClient.csproj", "{46DB723B-F767-4F5A-A1DA-53A6CF13704B}"
3939
EndProject
40+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationEngine.Model.Tests", "IntegrationEngine.Model.Tests\IntegrationEngine.Model.Tests.csproj", "{F999051E-B715-4AB9-A3B2-0D91A896A2C2}"
41+
EndProject
42+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "UnitTesting\UnitTesting.csproj", "{3A6E4FAB-025B-450C-A286-911BAD1F8E05}"
43+
EndProject
4044
Global
4145
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4246
Debug|Any CPU = Debug|Any CPU
@@ -141,6 +145,26 @@ Global
141145
{46DB723B-F767-4F5A-A1DA-53A6CF13704B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
142146
{46DB723B-F767-4F5A-A1DA-53A6CF13704B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
143147
{46DB723B-F767-4F5A-A1DA-53A6CF13704B}.Release|x86.ActiveCfg = Release|Any CPU
148+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
149+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
150+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
151+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
152+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Debug|x86.ActiveCfg = Debug|Any CPU
153+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
154+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Release|Any CPU.Build.0 = Release|Any CPU
155+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
156+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
157+
{F999051E-B715-4AB9-A3B2-0D91A896A2C2}.Release|x86.ActiveCfg = Release|Any CPU
158+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
159+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Debug|Any CPU.Build.0 = Debug|Any CPU
160+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
161+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
162+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Debug|x86.ActiveCfg = Debug|Any CPU
163+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Release|Any CPU.ActiveCfg = Release|Any CPU
164+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Release|Any CPU.Build.0 = Release|Any CPU
165+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
166+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Release|Mixed Platforms.Build.0 = Release|Any CPU
167+
{3A6E4FAB-025B-450C-A286-911BAD1F8E05}.Release|x86.ActiveCfg = Release|Any CPU
144168
EndGlobalSection
145169
GlobalSection(SolutionProperties) = preSolution
146170
HideSolutionNode = FALSE

IntegrationEngine/Scheduler/EngineScheduler.cs

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public void Start()
3131

3232
public void Shutdown()
3333
{
34-
// Scheduler.ListenerManager.RemoveTriggerListener();
3534
Scheduler.Shutdown();
3635
}
3736

@@ -120,22 +119,26 @@ public void ScheduleJobsWithTriggers(IEnumerable<IIntegrationJobTrigger> trigger
120119
}
121120
Scheduler.ScheduleJob(jobDetail, triggersForJobs, true);
122121
foreach (var triggerDef in triggerDefs)
123-
SetTriggerState(TriggerKeyFactory(triggerDef, jobType), triggerDef.StateId);
122+
SetTriggerState(TriggerKeyFactory(triggerDef.Id, jobType), triggerDef.StateId);
124123
}
125124

126-
TriggerKey TriggerKeyFactory(IIntegrationJobTrigger integrationJobTrigger, Type jobType)
125+
TriggerKey TriggerKeyFactory(string name, Type jobType)
127126
{
128-
return new TriggerKey(integrationJobTrigger.Id, jobType.FullName);
127+
if (name == null)
128+
throw new ArgumentNullException();
129+
if (jobType == null)
130+
throw new ArgumentNullException();
131+
return new TriggerKey(name, jobType.FullName);
129132
}
130133

131-
TriggerBuilder TriggerBuilderFactory(IIntegrationJobTrigger integrationJobTrigger, Type jobType)
134+
TriggerBuilder TriggerBuilderFactory(string name, Type jobType)
132135
{
133-
return TriggerBuilder.Create().WithIdentity(TriggerKeyFactory(integrationJobTrigger, jobType));
136+
return TriggerBuilder.Create().WithIdentity(TriggerKeyFactory(name, jobType));
134137
}
135138

136139
public ITrigger SimpleTriggerFactory(SimpleTrigger triggerDefinition, Type jobType, IJobDetail jobDetail)
137140
{
138-
var triggerBuilder = TriggerBuilderFactory(triggerDefinition, jobType);
141+
var triggerBuilder = TriggerBuilderFactory(triggerDefinition.Id, jobType);
139142
Action<SimpleScheduleBuilder> simpleScheduleBuilderAction;
140143
if (triggerDefinition.RepeatCount > 0)
141144
simpleScheduleBuilderAction = x => x.WithInterval(triggerDefinition.RepeatInterval).WithRepeatCount(triggerDefinition.RepeatCount);
@@ -151,24 +154,16 @@ public ITrigger SimpleTriggerFactory(SimpleTrigger triggerDefinition, Type jobTy
151154

152155
public ITrigger CronTriggerFactory(CronTrigger triggerDefinition, Type jobType, IJobDetail jobDetail)
153156
{
154-
var triggerBuilder = TriggerBuilderFactory(triggerDefinition, jobType);
157+
var triggerBuilder = TriggerBuilderFactory(triggerDefinition.Id, jobType);
155158
triggerBuilder.WithCronSchedule(triggerDefinition.CronExpressionString, x => x.InTimeZone(triggerDefinition.TimeZoneInfo));
156159
return triggerBuilder.Build();
157160
}
158161

159162
public bool DeleteTrigger(IIntegrationJobTrigger triggerDefinition)
160163
{
161-
try
162-
{
163-
var jobType = GetRegisteredJobTypeByName(triggerDefinition.JobType);
164-
var triggerKey = TriggerKeyFactory(triggerDefinition, jobType);
165-
return Scheduler.UnscheduleJob(triggerKey);
166-
}
167-
catch (Exception exception)
168-
{
169-
Log.Error(exception);
170-
return false;
171-
}
164+
var jobType = GetRegisteredJobTypeByName(triggerDefinition.JobType);
165+
var triggerKey = TriggerKeyFactory(triggerDefinition.Id, jobType);
166+
return Scheduler.UnscheduleJob(triggerKey);
172167
}
173168
}
174169
}

0 commit comments

Comments
 (0)