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+ }
0 commit comments