Skip to content

Commit c911187

Browse files
committed
work on test in github
1 parent 639a97a commit c911187

File tree

10 files changed

+292
-413
lines changed

10 files changed

+292
-413
lines changed
Lines changed: 139 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using System.Data;
1+
using System.Data;
22
using DotNetProjects.Migrator.Framework;
33
using Migrator.Framework;
4+
using NSubstitute;
45
using NUnit.Framework;
5-
using Rhino.Mocks;
66

77
namespace Migrator.Tests;
88

@@ -14,7 +14,7 @@ public class JoiningTableTransformationProviderExtensionsTests
1414
[SetUp]
1515
public void SetUp()
1616
{
17-
_provider = MockRepository.GenerateStub<ITransformationProvider>();
17+
_provider = Substitute.For<ITransformationProvider>();
1818
}
1919

2020
#endregion
@@ -24,134 +24,193 @@ public void SetUp()
2424
[Test]
2525
public void AddManyToManyJoiningTable_AddsPrimaryKey()
2626
{
27-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
28-
29-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddPrimaryKey(null, null, null))[0];
30-
31-
Assert.That("PK_TestScenarioVersions", Is.EqualTo(args[0]));
32-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[1]));
33-
34-
var columns = (string[])args[2];
35-
36-
Assert.That("TestScenarioId", Does.Contain(columns));
37-
Assert.That("VersionId", Does.Contain(columns));
27+
_provider
28+
.When(x => x.AddPrimaryKey(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string[]>()))
29+
.Do(callInfo =>
30+
{
31+
var capturedName = callInfo[0] as string;
32+
var capturedTable = callInfo[1] as string;
33+
var columns = callInfo[2] as string[];
34+
Assert.That(capturedName, Is.EqualTo("PK_TestScenarioVersions"));
35+
Assert.That(capturedTable, Is.EqualTo("dbo.TestScenarioVersions"));
36+
Assert.That(columns, Does.Contain("TestScenarioId"));
37+
Assert.That(columns, Does.Contain("VersionId"));
38+
});
39+
40+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
3841
}
3942

4043
[Test]
4144
public void AddManyToManyJoiningTable_CreatesLeftHandSideColumn_WithCorrectName()
42-
{
43-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
44-
45-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[])null))[0];
46-
47-
var lhsColumn = ((IDbField[])args[1])[0] as Column;
48-
49-
Assert.That(lhsColumn.Name, Is.EqualTo("TestScenarioId"));
50-
Assert.That(DbType.Guid, Is.EqualTo(lhsColumn.Type));
51-
Assert.That(ColumnProperty.NotNull, Is.EqualTo(lhsColumn.ColumnProperty));
45+
{
46+
_provider
47+
.When(x => x.AddTable(Arg.Any<string>(), Arg.Any<Column[]>()))
48+
.Do(callInfo =>
49+
{
50+
var lhsColumn = ((IDbField[])callInfo[1])[0] as Column;
51+
52+
Assert.That(lhsColumn.Name, Is.EqualTo("TestScenarioId"));
53+
Assert.That(lhsColumn.Type, Is.EqualTo(DbType.Guid));
54+
Assert.That(ColumnProperty.NotNull, Is.EqualTo(lhsColumn.ColumnProperty));
55+
});
56+
57+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
5258
}
5359

5460
[Test]
5561
public void AddManyToManyJoiningTable_CreatesLeftHandSideForeignKey_WithCorrectAttributes()
5662
{
57-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
58-
59-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraintType.NoAction))[0];
60-
61-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[1]));
62-
Assert.That("TestScenarioId", Is.EqualTo(args[2]));
63-
Assert.That("dbo.TestScenarios", Is.EqualTo(args[3]));
64-
Assert.That("Id", Is.EqualTo(args[4]));
65-
Assert.That(ForeignKeyConstraintType.NoAction, Is.EqualTo(args[5]));
66-
}
63+
_provider
64+
.When(x => x.AddForeignKey(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()))
65+
.Do(callInfo =>
66+
{
67+
var lhsColumn = ((IDbField[])callInfo[1])[0] as Column;
68+
69+
Assert.That(callInfo[1] as string, Is.EqualTo("dbo.TestScenarioVersions"));
70+
Assert.That(callInfo[2] as string, Is.EqualTo("TestScenarioId"));
71+
Assert.That(callInfo[3] as string, Is.EqualTo("dbo.TestScenarios"));
72+
Assert.That(callInfo[4] as string, Is.EqualTo("Id"));
73+
Assert.That((ForeignKeyConstraintType)callInfo[5], Is.EqualTo(ForeignKeyConstraintType.NoAction));
74+
});
6775

76+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
77+
}
78+
6879
[Test]
6980
public void AddManyToManyJoiningTable_CreatesLeftHandSideForeignKey_WithCorrectName()
7081
{
71-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
72-
73-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraintType.NoAction))[0];
82+
_provider
83+
.When(x => x.AddForeignKey(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()))
84+
.Do(callInfo =>
85+
{
86+
var lhsColumn = ((IDbField[])callInfo[1])[0] as Column;
87+
88+
Assert.That(callInfo[0] as string, Is.EqualTo("FK_Scenarios_ScenarioVersions"));
89+
});
7490

75-
Assert.That("FK_Scenarios_ScenarioVersions", Is.EqualTo(args[0]));
91+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
7692
}
7793

7894
[Test]
7995
public void AddManyToManyJoiningTable_CreatesRightHandSideColumn_WithCorrectName()
80-
{
81-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
82-
83-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[])null))[0];
84-
85-
var rhsColumn = ((IDbField[])args[1])[1] as Column;
96+
{
97+
_provider
98+
.When(x => x.AddTable(Arg.Any<string>(), Arg.Any<Column[]>()))
99+
.Do(callInfo =>
100+
{
101+
var rhsColumn = ((IDbField[])callInfo[1])[0] as Column;
102+
103+
Assert.That(rhsColumn.Name, Is.EqualTo("VersionId"));
104+
Assert.That(DbType.Guid, Is.EqualTo(rhsColumn.Type));
105+
Assert.That(ColumnProperty.NotNull, Is.EqualTo(rhsColumn.ColumnProperty));
106+
});
86107

87-
Assert.That(rhsColumn.Name, Is.EqualTo("VersionId"));
88-
Assert.That(DbType.Guid, Is.EqualTo(rhsColumn.Type));
89-
Assert.That(ColumnProperty.NotNull, Is.EqualTo(rhsColumn.ColumnProperty));
108+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
90109
}
91110

92111
[Test]
93112
public void AddManyToManyJoiningTable_CreatesRightHandSideForeignKey_WithCorrectAttributes()
94113
{
95-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
96-
97-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraintType.NoAction))[1];
114+
_provider
115+
.When(x => x.AddTable(Arg.Any<string>(), Arg.Any<Column[]>()))
116+
.Do(callInfo =>
117+
{
118+
var rhsColumn = ((IDbField[])callInfo[1])[0] as Column;
119+
120+
Assert.That(rhsColumn.Name, Is.EqualTo("VersionId"));
121+
Assert.That(DbType.Guid, Is.EqualTo(rhsColumn.Type));
122+
Assert.That(ColumnProperty.NotNull, Is.EqualTo(rhsColumn.ColumnProperty));
123+
124+
Assert.That(callInfo[1] as string, Is.EqualTo("dbo.TestScenarioVersions"));
125+
Assert.That(callInfo[2] as string, Is.EqualTo("VersionId"));
126+
Assert.That(callInfo[3] as string, Is.EqualTo("dbo.Versions"));
127+
Assert.That(callInfo[4] as string, Is.EqualTo("Id"));
128+
Assert.That((ForeignKeyConstraintType)callInfo[5], Is.EqualTo(ForeignKeyConstraintType.NoAction));
129+
});
98130

99-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[1]));
100-
Assert.That("VersionId", Is.EqualTo(args[2]));
101-
Assert.That("dbo.Versions", Is.EqualTo(args[3]));
102-
Assert.That("Id", Is.EqualTo(args[4]));
103-
Assert.That(ForeignKeyConstraintType.NoAction, Is.EqualTo(args[5]));
131+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
104132
}
105133

106134
[Test]
107135
public void AddManyToManyJoiningTable_CreatesRightHandSideForeignKey_WithCorrectName()
108-
{
109-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
136+
{
137+
_provider
138+
.When(x => x.AddForeignKey(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()))
139+
.Do(callInfo =>
140+
{
141+
var lhsColumn = ((IDbField[])callInfo[1])[0] as Column;
142+
143+
Assert.That(callInfo[0] as string, Is.EqualTo("FK_Scenarios_ScenarioVersions"));
144+
});
110145

111-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraintType.NoAction))[1];
112-
113-
Assert.That("FK_Versions_ScenarioVersions", Is.EqualTo(args[0]));
146+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
114147
}
115148

116149
[Test]
117150
public void AddManyToManyJoiningTable_CreatesTableWithCorrectName()
118151
{
119-
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
152+
_provider
153+
.When(x => x.AddTable(Arg.Any<string>(), Arg.Any<Column[]>()))
154+
.Do(callInfo =>
155+
{
156+
var rhsColumn = ((IDbField[])callInfo[1])[0] as Column;
157+
158+
Assert.That(callInfo[1] as string, Is.EqualTo("dbo.TestScenarioVersions"));
159+
});
120160

121-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[])null))[0];
122-
123-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[0]));
161+
_provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
124162
}
125163

126164
[Test]
127165
public void RemoveManyToManyJoiningTable_RemovesLhsForeignKey()
128-
{
129-
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
130-
131-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveForeignKey(null, null))[0];
166+
{
167+
var callCount = 0;
168+
169+
_provider
170+
.When(x => x.RemoveForeignKey(Arg.Any<string>(), Arg.Any<string>()))
171+
.Do(callInfo =>
172+
{
173+
callCount++;
174+
if (callCount == 1)
175+
{
176+
Assert.That(callInfo[0] as string, Is.EqualTo("dbo.TestScenarioVersions"));
177+
Assert.That(callInfo[1] as string, Is.EqualTo("FK_Scenarios_ScenarioVersions"));
178+
}
179+
});
132180

133-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[0]));
134-
Assert.That("FK_Scenarios_ScenarioVersions", Is.EqualTo(args[1]));
181+
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
135182
}
136183

137184
[Test]
138185
public void RemoveManyToManyJoiningTable_RemovesRhsForeignKey()
139186
{
140-
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
187+
var callCount = 0;
188+
189+
_provider
190+
.When(x => x.RemoveForeignKey(Arg.Any<string>(), Arg.Any<string>()))
191+
.Do(callInfo =>
192+
{
193+
callCount++;
194+
if (callCount == 2)
195+
{
196+
Assert.That(callInfo[0] as string, Is.EqualTo("dbo.TestScenarioVersions"));
197+
Assert.That(callInfo[1] as string, Is.EqualTo("FK_Versions_ScenarioVersions"));
198+
}
199+
});
141200

142-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveForeignKey(null, null))[1];
143-
144-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[0]));
145-
Assert.That("FK_Versions_ScenarioVersions", Is.EqualTo(args[1]));
201+
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
146202
}
147203

148204
[Test]
149205
public void RemoveManyToManyJoiningTable_RemovesTable()
150206
{
151-
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
207+
_provider
208+
.When(x => x.RemoveTable(Arg.Any<string>()))
209+
.Do(callInfo =>
210+
{
211+
Assert.That(callInfo[0] as string, Is.EqualTo("dbo.TestScenarioVersions"));
212+
});
152213

153-
var args = _provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveTable(null))[0];
154-
155-
Assert.That("dbo.TestScenarioVersions", Is.EqualTo(args[0]));
214+
_provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
156215
}
157-
}
216+
}

src/Migrator.Tests/MigrationLoaderTest.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
using DotNetProjects.Migrator;
33
using Migrator.Framework;
44
using Migrator.Framework.Loggers;
5+
using NSubstitute;
56
using NUnit.Framework;
6-
using NUnit.Mocks;
77

88
namespace Migrator.Tests;
99

@@ -24,20 +24,22 @@ public void SetUp()
2424

2525
private void SetUpCurrentVersion(int version, bool assertRollbackIsCalled)
2626
{
27-
var providerMock = new DynamicMock(typeof(ITransformationProvider));
27+
var providerMock = Substitute.For<ITransformationProvider>();
2828

29-
providerMock.SetReturnValue("get_CurrentVersion", version);
30-
providerMock.SetReturnValue("get_Logger", new Logger(false));
31-
if (assertRollbackIsCalled)
29+
providerMock.Logger = new Logger(false);
30+
providerMock.When(x => x.Dispose()).Do(_ =>
3231
{
33-
providerMock.Expect("Rollback");
34-
}
35-
else
36-
{
37-
providerMock.ExpectNoCall("Rollback");
38-
}
32+
if (assertRollbackIsCalled)
33+
{
34+
providerMock.Received().Rollback();
35+
}
36+
else
37+
{
38+
providerMock.DidNotReceive().Rollback();
39+
}
40+
});
3941

40-
_migrationLoader = new MigrationLoader((ITransformationProvider)providerMock.MockInstance, Assembly.GetExecutingAssembly(), true);
42+
_migrationLoader = new MigrationLoader(providerMock, Assembly.GetExecutingAssembly(), true);
4143
_migrationLoader.MigrationsTypes.Add(typeof(MigratorTest.FirstMigration));
4244
_migrationLoader.MigrationsTypes.Add(typeof(MigratorTest.SecondMigration));
4345
_migrationLoader.MigrationsTypes.Add(typeof(MigratorTest.ThirdMigration));

src/Migrator.Tests/Migrator.Tests.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.0" />
10+
<PackageReference Include="NSubstitute" Version="5.3.0" />
1011
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
1112
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.119" />
1213
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.5" />
@@ -23,13 +24,11 @@
2324
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2425
</PackageReference>
2526
<PackageReference Include="NUnit.Mocks" Version="2.6.4" />
26-
<PackageReference Include="RhinoMocks" Version="3.6.1" />
2727
</ItemGroup>
2828

2929
<ItemGroup>
3030
<Reference Include="System.Configuration" />
31-
<Reference
32-
Include="System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
31+
<Reference Include="System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
3332
<HintPath>..\..\lib\System.Data.SqlServerCe.dll</HintPath>
3433
<SpecificVersion>False</SpecificVersion>
3534
</Reference>

0 commit comments

Comments
 (0)