Skip to content

Commit b150a93

Browse files
committed
Default version checker tests
1 parent 9d342c0 commit b150a93

File tree

5 files changed

+105
-5
lines changed

5 files changed

+105
-5
lines changed

BetterModules.Core.Database.Tests/BetterModules.Core.Database.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
<Compile Include="DataAccess\DataContext\Fetching\DefaultFetchingProviderIntegrationTests.cs" />
8585
<Compile Include="DataAccess\DataContext\Interceptors\StaleInterceptorIntegrationTests.cs" />
8686
<Compile Include="DataAccess\DataContext\Migrations\DefaultMigrationTests.cs" />
87+
<Compile Include="DataAccess\DataContext\Migrations\DefaultVersionCheckerIntegrationTests.cs" />
8788
<Compile Include="DataAccess\DataContext\QueryableExtensionsIntegrationTests.cs" />
8889
<Compile Include="DataAccess\DataContext\QueryOverExtensionsIntegrationTests.cs" />
8990
<Compile Include="DataAccess\DataContext\RestrictionsExtensionsIntegrationTests.cs" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
using System.IO;
2+
using System.Net;
3+
using Autofac;
4+
using BetterModules.Core.DataAccess.DataContext.Migrations;
5+
using BetterModules.Core.Environment.FileSystem;
6+
using BetterModules.Core.Models;
7+
using BetterModules.Core.Modules.Registration;
8+
using BetterModules.Sample.Module;
9+
using NUnit.Framework;
10+
11+
namespace BetterModules.Core.Database.Tests.DataAccess.DataContext.Migrations
12+
{
13+
[TestFixture]
14+
public class DefaultVersionCheckerTests : DatabaseTestBase
15+
{
16+
[Test]
17+
public void Should_Check_In_The_Database()
18+
{
19+
var checker = GetVersionCheckerImplementation();
20+
21+
// Delete file, so data will be taken from the database
22+
if (File.Exists(checker.CacheFilePath))
23+
{
24+
File.Delete(checker.CacheFilePath);
25+
}
26+
27+
Assert.IsTrue(checker.VersionExists(SampleModuleDescriptor.ModuleName, 201502181430));
28+
Assert.IsTrue(checker.VersionExists(SampleModuleDescriptor.ModuleName, 201502181440));
29+
30+
Assert.IsFalse(checker.VersionExists(SampleModuleDescriptor.ModuleName, 123456));
31+
Assert.IsFalse(checker.VersionExists("Tests", 201502181430));
32+
}
33+
34+
[Test]
35+
public void Should_Check_In_The_File_System()
36+
{
37+
var checker = GetVersionCheckerImplementation();
38+
39+
// Create file if not created
40+
if (!File.Exists(checker.CacheFilePath))
41+
{
42+
File.WriteAllText(checker.CacheFilePath, "201502181430 BetterModulesSample\\r\\n201502181440 BetterModulesSample");
43+
}
44+
45+
Assert.IsTrue(checker.VersionExists(SampleModuleDescriptor.ModuleName, 201502181430));
46+
Assert.IsTrue(checker.VersionExists(SampleModuleDescriptor.ModuleName, 201502181440));
47+
48+
Assert.IsFalse(checker.VersionExists(SampleModuleDescriptor.ModuleName, 123456));
49+
Assert.IsFalse(checker.VersionExists("Tests", 201502181430));
50+
}
51+
52+
[Test]
53+
public void Should_Add_New_Version()
54+
{
55+
var checker = GetVersionCheckerImplementation();
56+
var tempFile = checker.CacheFilePath + ".temp";
57+
58+
// Delete file, created from the previous migrations
59+
if (File.Exists(tempFile))
60+
{
61+
File.Delete(tempFile);
62+
}
63+
if (File.Exists(checker.CacheFilePath))
64+
{
65+
File.Move(checker.CacheFilePath, tempFile);
66+
}
67+
68+
Assert.IsFalse(checker.VersionExists("TestModule", 123456));
69+
checker.AddVersion("TestModule", 123456);
70+
Assert.IsTrue(checker.VersionExists("TestModule", 123456));
71+
72+
// Cache file should be recreated and new version should be added
73+
Assert.IsTrue(File.Exists(checker.CacheFilePath));
74+
75+
var fileSource = File.ReadAllText(checker.CacheFilePath).Trim();
76+
Assert.AreEqual(fileSource, "123456 TestModule");
77+
78+
// Restore file
79+
if (File.Exists(checker.CacheFilePath))
80+
{
81+
File.Delete(checker.CacheFilePath);
82+
}
83+
File.Move(tempFile, checker.CacheFilePath);
84+
}
85+
86+
private DefaultVersionChecker GetVersionCheckerImplementation()
87+
{
88+
var modulesRegistration = Container.Resolve<IModulesRegistration>();
89+
var workingDirectory = Container.Resolve<IWorkingDirectory>();
90+
91+
var versionChecker = new DefaultVersionChecker(UnitOfWork, modulesRegistration, workingDirectory);
92+
93+
return versionChecker;
94+
}
95+
}
96+
}

BetterModules.Core/DataAccess/DataContext/Migrations/DefaultVersionChecker.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ private string FolderPath
3232
}
3333
}
3434

35-
private string FilePath
35+
public string CacheFilePath
3636
{
3737
get
3838
{
@@ -160,14 +160,14 @@ private void LoadFromDatabase()
160160

161161
private bool LoadFromFile()
162162
{
163-
if (File.Exists(FilePath))
163+
if (File.Exists(CacheFilePath))
164164
{
165165
Log.Trace("Loading migration files list from cache file");
166166

167167
StreamReader file = null;
168168
try
169169
{
170-
file = new StreamReader(FilePath);
170+
file = new StreamReader(CacheFilePath);
171171
string line;
172172
while ((line = file.ReadLine()) != null)
173173
{
@@ -239,7 +239,7 @@ private void SaveToFile(string moduleName, long version)
239239
Directory.CreateDirectory(FolderPath);
240240
}
241241

242-
file = new StreamWriter(FilePath, true);
242+
file = new StreamWriter(CacheFilePath, true);
243243
file.WriteLine("{0} {1}", version, moduleName);
244244
file.Flush();
245245
}

BetterModules.Core/DataAccess/DataContext/Migrations/IVersionChecker.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ public interface IVersionChecker
55
bool VersionExists(string moduleName, long version);
66

77
void AddVersion(string moduleName, long version);
8+
9+
string CacheFilePath { get; }
810
}
911
}

BetterModules.Core/Modules/ModuleDescriptor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Reflection;
22
using Autofac;
3+
using BetterModules.Core.Models;
34
using BetterModules.Core.Modules.Registration;
45

56
namespace BetterModules.Core.Modules
@@ -48,7 +49,7 @@ public virtual string SchemaName
4849
{
4950
get
5051
{
51-
return null;
52+
return SchemaNameProvider.GetSchemaName(Name);
5253
}
5354
}
5455

0 commit comments

Comments
 (0)