示例#1
0
        public void UpdateUnitTest(Guid accountId, UpdateUnitTestRequestData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (data.UnitTestId == null)
            {
                throw new ParameterRequiredException("UnitTestId");
            }
            if (data.ComponentId == null)
            {
                throw new ParameterRequiredException("ComponentId");
            }
            if (data.UnitTestId == Guid.Empty)
            {
                throw new ParameterErrorException("UnitTestId не может быть Guid.Empty");
            }
            if (data.DisplayName == null)
            {
                throw new ParameterRequiredException("DisplayName");
            }
            if (string.IsNullOrWhiteSpace(data.DisplayName))
            {
                throw new ParameterErrorException("DisplayName не может быть пустым");
            }
            //if (data.ErrorColor == null)
            //{
            //    throw new ParameterRequiredException("ErrorColor");
            //}

            // SystemName сейчас не настраивается через GUI

            //if (data.SystemName == null)
            //{
            //    throw new ParameterRequiredException("SystemName");
            //}

            //получим компонент, чтобы убедится, что он принадлежит аккаунту
            var req = new AccountCacheRequest()
            {
                AccountId = accountId,
                ObjectId  = data.ComponentId.Value
            };
            var component = AllCaches.Components.Find(req);

            if (component == null)
            {
                throw new UnknownComponentIdException(data.ComponentId.Value, accountId);
            }

            var request = new AccountCacheRequest()
            {
                AccountId = accountId,
                ObjectId  = data.UnitTestId.Value
            };

            // сохраним изменения
            IUnitTestCacheReadObject unitTestCache = null;

            using (var unitTest = AllCaches.UnitTests.Write(request))
            {
                unitTestCache = unitTest;

                // период выполнения проверки
                if (unitTest.IsSystemType)
                {
                    // не для всех системных проверок можно указывать период (для проверки домена нельзя)
                    if (SystemUnitTestTypes.CanEditPeriod(unitTest.TypeId))
                    {
                        if (data.PeriodSeconds == null)
                        {
                            throw new ParameterRequiredException("Period");
                        }
                        if (data.PeriodSeconds.Value < 60)
                        {
                            throw new ParameterErrorException("Период проверки НЕ может быть меньше 1 минуты");
                        }
                        unitTest.PeriodSeconds = (int)data.PeriodSeconds.Value;
                    }

                    // чтобы выполнить проверку прямо сейчас с новыми параметрами и увидеть результат
                    unitTest.NextDate = DateTime.Now;
                }

                unitTest.DisplayName   = data.DisplayName;
                unitTest.ComponentId   = data.ComponentId.Value;
                unitTest.ErrorColor    = data.ErrorColor;
                unitTest.NoSignalColor = data.NoSignalColor;
                unitTest.ActualTime    = TimeSpanHelper.FromSeconds(data.ActualTime);

                if (data.SimpleMode.HasValue)
                {
                    unitTest.SimpleMode = data.SimpleMode.Value;
                }

                unitTest.BeginSave();
            }

            // ждем сохранения в кэше
            unitTestCache.WaitSaveChanges();
        }