Skip to content

Commit c555953

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
Update
1 parent 5158295 commit c555953

11 files changed

+576
-190
lines changed

src/Migrator.Tests/Providers/Generic/Generic_AddIndexTestsBase.cs

Lines changed: 0 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -65,145 +65,4 @@ public void AddIndex_UsingNonIndexInstanceOverload_NonUnique_ShouldBeReadable()
6565
Assert.That(index.Name, Is.EqualTo(indexName).IgnoreCase);
6666
Assert.That(index.KeyColumns.Single(), Is.EqualTo(columnName).IgnoreCase);
6767
}
68-
69-
[Test]
70-
public void AddIndex_FilteredIndexSingle_Success()
71-
{
72-
// Arrange
73-
const string tableName = "TestTable";
74-
const string columnName1 = "TestColumn1";
75-
76-
const string indexName = "TestIndexName";
77-
78-
Provider.AddTable(tableName,
79-
new Column(columnName1, DbType.Int16)
80-
);
81-
82-
List<FilterItem> filterItems = [
83-
new() { Filter = FilterType.EqualTo, ColumnName = columnName1, Value = 1 },
84-
];
85-
86-
// Act
87-
Provider.AddIndex(tableName,
88-
new Index
89-
{
90-
Name = indexName,
91-
KeyColumns = [columnName1],
92-
Unique = true,
93-
FilterItems = filterItems
94-
});
95-
96-
// Assert
97-
98-
var indexesFromDatabase = Provider.GetIndexes(table: tableName);
99-
var filteredItemsFromDatabase = indexesFromDatabase.Single().FilterItems;
100-
101-
// We cannot find out the exact DbType so we compare strings.
102-
foreach (var filteredItemFromDatabase in filteredItemsFromDatabase)
103-
{
104-
var expected = filterItems.Single(x => x.ColumnName.Equals(filteredItemFromDatabase.ColumnName, StringComparison.OrdinalIgnoreCase));
105-
Assert.That(filteredItemFromDatabase.Filter, Is.EqualTo(expected.Filter));
106-
Assert.That(Convert.ToString(filteredItemFromDatabase.Value, CultureInfo.InvariantCulture), Is.EqualTo(Convert.ToString(expected.Value, CultureInfo.InvariantCulture)));
107-
}
108-
109-
Assert.That(
110-
filteredItemsFromDatabase.Select(x => x.ColumnName.ToLowerInvariant()),
111-
Is.EquivalentTo(filterItems.Select(x => x.ColumnName.ToLowerInvariant()))
112-
);
113-
}
114-
115-
[Test]
116-
public void AddIndex_FilteredIndexMiscellaneousFilterTypesAndDataTypes_Success()
117-
{
118-
// Arrange
119-
const string tableName = "TestTable";
120-
const string columnName1 = "TestColumn1";
121-
const string columnName2 = "TestColumn2";
122-
const string columnName3 = "TestColumn3";
123-
const string columnName4 = "TestColumn4";
124-
const string columnName5 = "TestColumn5";
125-
const string columnName6 = "TestColumn6";
126-
const string columnName7 = "TestColumn7";
127-
const string columnName8 = "TestColumn8";
128-
const string columnName9 = "TestColumn9";
129-
const string columnName10 = "TestColumn10";
130-
const string columnName11 = "TestColumn11";
131-
const string columnName12 = "TestColumn12";
132-
const string columnName13 = "TestColumn13";
133-
134-
const string indexName = "TestIndexName";
135-
136-
Provider.AddTable(tableName,
137-
new Column(columnName1, DbType.Int16),
138-
new Column(columnName2, DbType.Int32),
139-
new Column(columnName3, DbType.Int64),
140-
new Column(columnName4, DbType.UInt16),
141-
new Column(columnName5, DbType.UInt32),
142-
new Column(columnName6, DbType.UInt64),
143-
new Column(columnName7, DbType.String),
144-
new Column(columnName8, DbType.Int32),
145-
new Column(columnName9, DbType.Int32),
146-
new Column(columnName10, DbType.Int32),
147-
new Column(columnName11, DbType.Int32),
148-
new Column(columnName12, DbType.Int32),
149-
new Column(columnName13, DbType.Int32)
150-
);
151-
152-
List<FilterItem> filterItems = [
153-
new() { Filter = FilterType.EqualTo, ColumnName = columnName1, Value = 1 },
154-
new() { Filter = FilterType.GreaterThan, ColumnName = columnName2, Value = 2 },
155-
new() { Filter = FilterType.GreaterThanOrEqualTo, ColumnName = columnName3, Value = 2323 },
156-
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName4, Value = 3434 },
157-
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName5, Value = -3434 },
158-
new() { Filter = FilterType.SmallerThan, ColumnName = columnName6, Value = 3434345345 },
159-
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName7, Value = "asdf" },
160-
new() { Filter = FilterType.EqualTo, ColumnName = columnName8, Value = 11 },
161-
new() { Filter = FilterType.GreaterThan, ColumnName = columnName9, Value = 22 },
162-
new() { Filter = FilterType.GreaterThanOrEqualTo, ColumnName = columnName10, Value = 33 },
163-
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName11, Value = 44 },
164-
new() { Filter = FilterType.SmallerThan, ColumnName = columnName12, Value = 55 },
165-
new() { Filter = FilterType.SmallerThanOrEqualTo, ColumnName = columnName13, Value = 66 }
166-
];
167-
168-
// Act
169-
Provider.AddIndex(tableName,
170-
new Index
171-
{
172-
Name = indexName,
173-
KeyColumns = [
174-
columnName1,
175-
columnName2,
176-
columnName3,
177-
columnName4,
178-
columnName5,
179-
columnName6,
180-
columnName7,
181-
columnName8,
182-
columnName9,
183-
columnName10,
184-
columnName11,
185-
columnName12
186-
],
187-
Unique = true,
188-
FilterItems = filterItems
189-
});
190-
191-
// Assert
192-
193-
var indexesFromDatabase = Provider.GetIndexes(table: tableName);
194-
var filteredItemsFromDatabase = indexesFromDatabase.Single().FilterItems;
195-
196-
// We cannot find out the exact DbType so we compare strings.
197-
foreach (var filteredItemFromDatabase in filteredItemsFromDatabase)
198-
{
199-
var expected = filterItems.Single(x => x.ColumnName.Equals(filteredItemFromDatabase.ColumnName, StringComparison.OrdinalIgnoreCase));
200-
Assert.That(filteredItemFromDatabase.Filter, Is.EqualTo(expected.Filter));
201-
Assert.That(Convert.ToString(filteredItemFromDatabase.Value, CultureInfo.InvariantCulture), Is.EqualTo(Convert.ToString(expected.Value, CultureInfo.InvariantCulture)));
202-
}
203-
204-
Assert.That(
205-
filteredItemsFromDatabase.Select(x => x.ColumnName.ToLowerInvariant()),
206-
Is.EquivalentTo(filterItems.Select(x => x.ColumnName.ToLowerInvariant()))
207-
);
208-
}
20968
}

src/Migrator.Tests/Providers/Generic/Generic_GetIndexesTestsBase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ public void AddIndex_FilteredIndexGreaterOrEqualThanNumber_Success()
4747
var filterItem2 = index.FilterItems.Single(x => x.ColumnName == columnName2);
4848

4949
Assert.That(filterItem1.Filter, Is.EqualTo(FilterType.GreaterThanOrEqualTo));
50-
Assert.That((int)filterItem1.Value, Is.EqualTo(100));
50+
Assert.That((long)filterItem1.Value, Is.EqualTo(100));
5151

52-
Assert.That(filterItem1.Filter, Is.EqualTo(FilterType.EqualTo));
53-
Assert.That((string)filterItem1.Value, Is.EqualTo("Hello"));
52+
Assert.That(filterItem2.Filter, Is.EqualTo(FilterType.EqualTo));
53+
Assert.That((string)filterItem2.Value, Is.EqualTo("Hello"));
5454
}
5555
}

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_AddIndexTests.cs

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
using System;
2+
using System.Collections.Generic;
13
using System.Data;
4+
using System.Globalization;
25
using System.Linq;
36
using System.Threading.Tasks;
47
using DotNetProjects.Migrator.Framework;
8+
using DotNetProjects.Migrator.Providers.Models.Indexes;
59
using DotNetProjects.Migrator.Providers.Models.Indexes.Enums;
610
using Migrator.Tests.Providers.Generic;
711
using Npgsql;
@@ -160,4 +164,152 @@ public void AddIndex_IncludeColumnsMultiple_Success()
160164
Assert.That(index.IncludeColumns, Is.EquivalentTo([columnName2, columnName3])
161165
.Using<string>((x, y) => string.Compare(x, y, ignoreCase: true)));
162166
}
167+
168+
/// <summary>
169+
/// This test is located in the dedicated database type folder not in the base class since partial indexes (Oracle) are not supported in the migrator at this point in time.
170+
/// </summary>
171+
[Test]
172+
public void AddIndex_FilteredIndexSingle_Success()
173+
{
174+
// Arrange
175+
const string tableName = "TestTable";
176+
const string columnName1 = "TestColumn1";
177+
178+
const string indexName = "TestIndexName";
179+
180+
Provider.AddTable(tableName,
181+
new Column(columnName1, DbType.Int16)
182+
);
183+
184+
List<FilterItem> filterItems = [
185+
new() { Filter = FilterType.EqualTo, ColumnName = columnName1, Value = 1 },
186+
];
187+
188+
// Act
189+
Provider.AddIndex(tableName,
190+
new Index
191+
{
192+
Name = indexName,
193+
KeyColumns = [columnName1],
194+
Unique = true,
195+
FilterItems = filterItems
196+
});
197+
198+
// Assert
199+
200+
var indexesFromDatabase = Provider.GetIndexes(table: tableName);
201+
var filteredItemsFromDatabase = indexesFromDatabase.Single().FilterItems;
202+
203+
// We cannot find out the exact DbType so we compare strings.
204+
foreach (var filteredItemFromDatabase in filteredItemsFromDatabase)
205+
{
206+
var expected = filterItems.Single(x => x.ColumnName.Equals(filteredItemFromDatabase.ColumnName, StringComparison.OrdinalIgnoreCase));
207+
Assert.That(filteredItemFromDatabase.Filter, Is.EqualTo(expected.Filter));
208+
Assert.That(Convert.ToString(filteredItemFromDatabase.Value, CultureInfo.InvariantCulture), Is.EqualTo(Convert.ToString(expected.Value, CultureInfo.InvariantCulture)));
209+
}
210+
211+
Assert.That(
212+
filteredItemsFromDatabase.Select(x => x.ColumnName.ToLowerInvariant()),
213+
Is.EquivalentTo(filterItems.Select(x => x.ColumnName.ToLowerInvariant()))
214+
);
215+
}
216+
217+
/// <summary>
218+
/// This test is located in the dedicated database type folder not in the base class since partial indexes (Oracle) are not supported in the migrator at this point in time.
219+
/// </summary>
220+
[Test]
221+
public void AddIndex_FilteredIndexMiscellaneousFilterTypesAndDataTypes_Success()
222+
{
223+
// Arrange
224+
const string tableName = "TestTable";
225+
const string columnName1 = "TestColumn1";
226+
const string columnName2 = "TestColumn2";
227+
const string columnName3 = "TestColumn3";
228+
const string columnName4 = "TestColumn4";
229+
const string columnName5 = "TestColumn5";
230+
const string columnName6 = "TestColumn6";
231+
const string columnName7 = "TestColumn7";
232+
const string columnName8 = "TestColumn8";
233+
const string columnName9 = "TestColumn9";
234+
const string columnName10 = "TestColumn10";
235+
const string columnName11 = "TestColumn11";
236+
const string columnName12 = "TestColumn12";
237+
const string columnName13 = "TestColumn13";
238+
239+
const string indexName = "TestIndexName";
240+
241+
Provider.AddTable(tableName,
242+
new Column(columnName1, DbType.Int16),
243+
new Column(columnName2, DbType.Int32),
244+
new Column(columnName3, DbType.Int64),
245+
new Column(columnName4, DbType.UInt16),
246+
new Column(columnName5, DbType.UInt32),
247+
new Column(columnName6, DbType.UInt64),
248+
new Column(columnName7, DbType.String),
249+
new Column(columnName8, DbType.Int32),
250+
new Column(columnName9, DbType.Int32),
251+
new Column(columnName10, DbType.Int32),
252+
new Column(columnName11, DbType.Int32),
253+
new Column(columnName12, DbType.Int32),
254+
new Column(columnName13, DbType.Int32)
255+
);
256+
257+
List<FilterItem> filterItems = [
258+
new() { Filter = FilterType.EqualTo, ColumnName = columnName1, Value = 1 },
259+
new() { Filter = FilterType.GreaterThan, ColumnName = columnName2, Value = 2 },
260+
new() { Filter = FilterType.GreaterThanOrEqualTo, ColumnName = columnName3, Value = 2323 },
261+
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName4, Value = 3434 },
262+
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName5, Value = -3434 },
263+
new() { Filter = FilterType.SmallerThan, ColumnName = columnName6, Value = 3434345345 },
264+
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName7, Value = "asdf" },
265+
new() { Filter = FilterType.EqualTo, ColumnName = columnName8, Value = 11 },
266+
new() { Filter = FilterType.GreaterThan, ColumnName = columnName9, Value = 22 },
267+
new() { Filter = FilterType.GreaterThanOrEqualTo, ColumnName = columnName10, Value = 33 },
268+
new() { Filter = FilterType.NotEqualTo, ColumnName = columnName11, Value = 44 },
269+
new() { Filter = FilterType.SmallerThan, ColumnName = columnName12, Value = 55 },
270+
new() { Filter = FilterType.SmallerThanOrEqualTo, ColumnName = columnName13, Value = 66 }
271+
];
272+
273+
// Act
274+
Provider.AddIndex(tableName,
275+
new Index
276+
{
277+
Name = indexName,
278+
KeyColumns = [
279+
columnName1,
280+
columnName2,
281+
columnName3,
282+
columnName4,
283+
columnName5,
284+
columnName6,
285+
columnName7,
286+
columnName8,
287+
columnName9,
288+
columnName10,
289+
columnName11,
290+
columnName12,
291+
columnName13
292+
],
293+
Unique = false,
294+
FilterItems = filterItems
295+
});
296+
297+
// Assert
298+
299+
var indexesFromDatabase = Provider.GetIndexes(table: tableName);
300+
var filteredItemsFromDatabase = indexesFromDatabase.Single().FilterItems;
301+
302+
// We cannot find out the exact DbType so we compare strings.
303+
foreach (var filteredItemFromDatabase in filteredItemsFromDatabase)
304+
{
305+
var expected = filterItems.Single(x => x.ColumnName.Equals(filteredItemFromDatabase.ColumnName, StringComparison.OrdinalIgnoreCase));
306+
Assert.That(filteredItemFromDatabase.Filter, Is.EqualTo(expected.Filter));
307+
Assert.That(Convert.ToString(filteredItemFromDatabase.Value, CultureInfo.InvariantCulture), Is.EqualTo(Convert.ToString(expected.Value, CultureInfo.InvariantCulture)));
308+
}
309+
310+
Assert.That(
311+
filteredItemsFromDatabase.Select(x => x.ColumnName.ToLowerInvariant()),
312+
Is.EquivalentTo(filterItems.Select(x => x.ColumnName.ToLowerInvariant()))
313+
);
314+
}
163315
}

0 commit comments

Comments
 (0)