예제 #1
0
        public void DeleteAddress()
        {
            var mgr    = CreateManager();
            var client = CreateNew();
            var key    = client.GetKey();

            // создаём инстанс вложенной сущности
            var address = new AddressBook();

            try
            {
                #region .  Create  .

                var oldLength = 0;

                // считываем коллекцию вложенных сущностей
                var addressLst = client.AsDynamic().ADDRESS as IList <AddressBook>;
                if (addressLst == null)
                {
                    addressLst = new WMSBusinessCollection <AddressBook>();
                    client.SetProperty("ADDRESS", addressLst);
                }
                else
                {
                    oldLength = addressLst.Count;
                }

                // заполняем ссылки и обязательные поля вложенной сущности
                address.AsDynamic().ADDRESSBOOKINDEX    = TestDecimal;
                address.AsDynamic().ADDRESSBOOKTYPECODE = "ADR_LEGAL";

                // добавляем связь с вложенной сущностью, сохраняем
                addressLst.Add(address);
                mgr.Update(client);

                // читаем из БД по ключу
                client = mgr.Get(key);
                var addressLstNew = client.AsDynamic().ADDRESS as IList <AddressBook>;

                // проверка создания
                addressLstNew.Should().NotBeNull("Должны были получить хотя бы 1 элемент");
                addressLstNew.Count.ShouldBeEquivalentTo(oldLength + 1, "Manager должен создавать вложенные сущности");

                #endregion

                #region .  Delete  .

                // удалем связь с вложенной сущностью, сохраняем
                addressLst = client.AsDynamic().ADDRESS as IList <AddressBook>;
                address    = addressLst[addressLst.Count - 1];
                addressLst.Remove(address);

                mgr.Update(client);

                // убеждаемся, что корректно удалили
                client        = mgr.Get(key);
                addressLstNew = client.AsDynamic().ADDRESS as IList <AddressBook>;
                if (addressLstNew == null)
                {
                    oldLength.Equals(0);
                }
                else
                {
                    addressLstNew.Count.ShouldBeEquivalentTo(oldLength, "Manager должен удалять вложенные сущности");
                }

                #endregion
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + " УДАЛИТЕ СТРОКУ ИЗ ТАБЛИЦЫ WMSADDRESSBOOK с ADDRESSBOOKINDEX = " + TestDecimal);
            }
            finally
            {
                ClearForSelf();
            }
        }