Skip to content

Commit 54a1f02

Browse files
committed
Added tests for joining table extensions.
1 parent dcb8c3f commit 54a1f02

File tree

4 files changed

+162
-0
lines changed

4 files changed

+162
-0
lines changed

lib/Rhino.Mocks.CPP.Interfaces.dll

7 KB
Binary file not shown.

lib/Rhino.Mocks.dll

309 KB
Binary file not shown.
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
using System.Data;
2+
using Migrator.Framework;
3+
using NUnit.Framework;
4+
using Rhino.Mocks;
5+
using ForeignKeyConstraint = Migrator.Framework.ForeignKeyConstraint;
6+
7+
namespace Migrator.Tests
8+
{
9+
[TestFixture]
10+
public class JoiningTableTransformationProviderExtensionsTests
11+
{
12+
#region Setup/Teardown
13+
14+
[SetUp]
15+
public void SetUp()
16+
{
17+
provider = MockRepository.GenerateStub<ITransformationProvider>();
18+
}
19+
20+
#endregion
21+
22+
ITransformationProvider provider;
23+
24+
[Test]
25+
public void AddManyToManyJoiningTable_AddsPrimaryKey()
26+
{
27+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
28+
29+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddPrimaryKey(null, null, null))[0];
30+
31+
Assert.AreEqual("PK_TestScenarioVersions", args[0]);
32+
Assert.AreEqual("dbo.TestScenarioVersions", args[1]);
33+
34+
var columns = (string[]) args[2];
35+
36+
Assert.Contains("TestScenarioId", columns);
37+
Assert.Contains("VersionId", columns);
38+
}
39+
40+
[Test]
41+
public void AddManyToManyJoiningTable_CreatesLeftHandSideColumn_WithCorrectName()
42+
{
43+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
44+
45+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[]) null))[0];
46+
47+
Column lhsColumn = ((Column[]) args[1])[0];
48+
49+
Assert.AreEqual(lhsColumn.Name, "TestScenarioId");
50+
Assert.AreEqual(DbType.Guid, lhsColumn.Type);
51+
Assert.AreEqual(ColumnProperty.NotNull, lhsColumn.ColumnProperty);
52+
}
53+
54+
[Test]
55+
public void AddManyToManyJoiningTable_CreatesLeftHandSideForeignKey_WithCorrectAttributes()
56+
{
57+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
58+
59+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraint.NoAction))[0];
60+
61+
Assert.AreEqual("dbo.TestScenarioVersions", args[1]);
62+
Assert.AreEqual("TestScenarioId", args[2]);
63+
Assert.AreEqual("dbo.TestScenarios", args[3]);
64+
Assert.AreEqual("Id", args[4]);
65+
Assert.AreEqual(ForeignKeyConstraint.NoAction, args[5]);
66+
}
67+
68+
[Test]
69+
public void AddManyToManyJoiningTable_CreatesLeftHandSideForeignKey_WithCorrectName()
70+
{
71+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
72+
73+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraint.NoAction))[0];
74+
75+
Assert.AreEqual("FK_Scenarios_ScenarioVersions", args[0]);
76+
}
77+
78+
[Test]
79+
public void AddManyToManyJoiningTable_CreatesRightHandSideColumn_WithCorrectName()
80+
{
81+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
82+
83+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[]) null))[0];
84+
85+
Column rhsColumn = ((Column[]) args[1])[1];
86+
87+
Assert.AreEqual(rhsColumn.Name, "VersionId");
88+
Assert.AreEqual(DbType.Guid, rhsColumn.Type);
89+
Assert.AreEqual(ColumnProperty.NotNull, rhsColumn.ColumnProperty);
90+
}
91+
92+
[Test]
93+
public void AddManyToManyJoiningTable_CreatesRightHandSideForeignKey_WithCorrectAttributes()
94+
{
95+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
96+
97+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraint.NoAction))[1];
98+
99+
Assert.AreEqual("dbo.TestScenarioVersions", args[1]);
100+
Assert.AreEqual("VersionId", args[2]);
101+
Assert.AreEqual("dbo.Versions", args[3]);
102+
Assert.AreEqual("Id", args[4]);
103+
Assert.AreEqual(ForeignKeyConstraint.NoAction, args[5]);
104+
}
105+
106+
[Test]
107+
public void AddManyToManyJoiningTable_CreatesRightHandSideForeignKey_WithCorrectName()
108+
{
109+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
110+
111+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddForeignKey(null, null, "", null, null, ForeignKeyConstraint.NoAction))[1];
112+
113+
Assert.AreEqual("FK_Versions_ScenarioVersions", args[0]);
114+
}
115+
116+
[Test]
117+
public void AddManyToManyJoiningTable_CreatesTableWithCorrectName()
118+
{
119+
provider.AddManyToManyJoiningTable("dbo", "TestScenarios", "Id", "Versions", "Id");
120+
121+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.AddTable(null, (Column[]) null))[0];
122+
123+
Assert.AreEqual("dbo.TestScenarioVersions", args[0]);
124+
}
125+
126+
[Test]
127+
public void RemoveManyToManyJoiningTable_RemovesLhsForeignKey()
128+
{
129+
provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
130+
131+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveForeignKey(null, null))[0];
132+
133+
Assert.AreEqual("dbo.TestScenarioVersions", args[0]);
134+
Assert.AreEqual("FK_Scenarios_ScenarioVersions", args[1]);
135+
}
136+
137+
[Test]
138+
public void RemoveManyToManyJoiningTable_RemovesRhsForeignKey()
139+
{
140+
provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
141+
142+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveForeignKey(null, null))[1];
143+
144+
Assert.AreEqual("dbo.TestScenarioVersions", args[0]);
145+
Assert.AreEqual("FK_Versions_ScenarioVersions", args[1]);
146+
}
147+
148+
[Test]
149+
public void RemoveManyToManyJoiningTable_RemovesTable()
150+
{
151+
provider.RemoveManyToManyJoiningTable("dbo", "TestScenarios", "Versions");
152+
153+
object[] args = provider.GetArgumentsForCallsMadeOn(stub => stub.RemoveTable(null))[0];
154+
155+
Assert.AreEqual("dbo.TestScenarioVersions", args[0]);
156+
}
157+
}
158+
}

src/Migrator.Tests/Migrator.Tests-vs2010.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
<SpecificVersion>False</SpecificVersion>
6262
<HintPath>..\..\lib\NUnit\nunit.mocks.dll</HintPath>
6363
</Reference>
64+
<Reference Include="Rhino.Mocks">
65+
<HintPath>..\..\lib\Rhino.Mocks.dll</HintPath>
66+
</Reference>
6467
<Reference Include="System" />
6568
<Reference Include="System.configuration" />
6669
<Reference Include="System.Data" />
@@ -73,6 +76,7 @@
7376
<ItemGroup>
7477
<Compile Include="ColumnPropertyMapperTest.cs" />
7578
<Compile Include="Data\TestMigrations.cs" />
79+
<Compile Include="JoiningTableTransformationProviderExtensionsTests.cs" />
7680
<Compile Include="MigrationLoaderTest.cs" />
7781
<Compile Include="MigrationTestCase.cs" />
7882
<Compile Include="MigrationTypeComparerTest.cs" />

0 commit comments

Comments
 (0)