Тестирование ORM (Object-Relational Mapping (минимальный набор)
Алгоритм
- Выборка данных, запоминаем количество записей.
- Добавляем записи (одну или несколько) затем коммит.
- Опять выборка (с новой сессии), количество должно быть больше на количество добавленных записей.
- Потом из выбранных редактируем наши записи - коммит.
- Опять выборка (с новой сессии), проверяем что поменялись наши записи.
- Удаляем наши записи - коммит.
- Опять выборка (с новой сессии), проверяем что наших записей нет.
Пример
[Test]
public void TestViewAddEditDelete()
{
const string name1 = "Test1";
const string name2 = "Test2";
mView.SelectGroups();
int firstCount = mView.GroupsView.Count;
Console.WriteLine(@"=== ADD ===");
mView.NewGroup();
mView.CurrentGroup.GroupName = name1;
mView.CurrentGroup.UnitItemProp = mView.UnitItems.First();
mView.CurrentGroup.GroupType = mView.GroupTypes.First();
mView.SaveChanges();
Console.WriteLine(@"=== ADD ===");
mView.NewGroup();
mView.CurrentGroup.GroupName = name2;
mView.CurrentGroup.UnitItemProp = mView.UnitItems.First();
mView.CurrentGroup.GroupType = mView.GroupTypes.First();
SubGroup subGroup = new SubGroup();
subGroup.ParamValue = "p1";
subGroup.GroupProp = mView.CurrentGroup;
subGroup.SubGroupDetails = new Iesi.Collections.Generic.HashedSet<SubGroupDetail>();
mView.CurrentGroup.InitSubGroups();
mView.CurrentGroup.SubGroups.Add(subGroup);
SubGroupDetail detail = SubGroupDetail.Create(subGroup, new ComplexArt(mView.Artikls.First(), null), 1, "");
subGroup.SubGroupDetails.Add(detail);
detail = SubGroupDetail.Create(subGroup, new ComplexArt(mView.Artikls.Last(), null), 1, "");
subGroup.SubGroupDetails.Add(detail);
mView.SaveChanges();
Console.WriteLine(@"=== EDIT ===");
mView.CurrentGroup = ((IEnumerable<Group>)mView.GroupsView.SourceCollection).Where(item => item.GroupName == name1).First();
mView.CurrentGroup.InnerGroup = !mView.CurrentGroup.InnerGroup;
mView.SaveChanges();
Console.WriteLine(@"=== EDIT ===");
mView.CurrentGroup = ((IEnumerable<Group>)mView.GroupsView.SourceCollection).Where(item => item.GroupName == name2).First();
mView.CurrentGroup.InnerGroup = !mView.CurrentGroup.InnerGroup;
mView.SaveChanges();
Console.WriteLine(@"=== DELETE ===");
mView.DeleteGroup(((IEnumerable<Group>)mView.GroupsView.SourceCollection).Where(item => item.GroupName == name1).First());
Console.WriteLine(@"=== DELETE ===");
mView.DeleteGroup(((IEnumerable<Group>)mView.GroupsView.SourceCollection).Where(item => item.GroupName == name2).First());
mView.SelectGroups();
Assert.AreEqual(firstCount, mView.GroupsView.Count,"record count before check and after aren't equal");
}