Пример #1
0
        ///<inheritdoc/>
        public ClarifiedResponse <TMessage> Validate(Quest quest)
        {
            quest.ThrowIfNull(nameof(quest));

            ClarifiedResponse <TMessage> response = new ClarifiedResponse <TMessage>();

            DateTime?start    = quest.StartTime;
            DateTime?deadline = quest.Deadline;


            if (deadline != null && deadline < DateTime.Now)
            {
                response.Errors.Add(new ClarifiedError <TMessage>
                {
                    Error         = _deadlineLessThanNow,
                    Clarification = _deadlineLessThanNowClar
                });
            }

            if (deadline != null && start > deadline)
            {
                response.Errors.Add(new ClarifiedError <TMessage>()
                {
                    Error         = _startTimeMoreThanDeadline,
                    Clarification = _startTimeMoreThanDeadlineClar
                });
            }

            return(response);
        }
Пример #2
0
        public void NullOrWhiteSpaceDescriptionTest(string description)
        {
            //Arrange
            Quest quest = new FakeQuest()
            {
                Description = description
            };

            int nullOrWhitespace     = 0;
            int nullOtWhitespaceClar = 1;

            DescriptionQuestValidator <int> validator = new DescriptionQuestValidator <int>(nullOrWhitespace,
                                                                                            nullOtWhitespaceClar);

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);

            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(nullOrWhitespace, error.Error);
            Assert.AreEqual(nullOtWhitespaceClar, error.Clarification);
        }
Пример #3
0
        public void TitleTooLongTest()
        {
            //Arrange

            string title = new string('h', 26);

            Quest quest = new FakeQuest()
            {
                Title = title
            };

            int nullOrWhitespace     = 0;
            int nullOtWhitespaceClar = 1;
            int tooLong     = 2;
            int tooLongClar = 3;

            TitleQuestValidator <int> validator = new TitleQuestValidator <int>(nullOrWhitespace, nullOtWhitespaceClar, tooLong, tooLongClar);

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);

            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(tooLong, error.Error);
            Assert.AreEqual(tooLongClar, error.Clarification);
        }
        public void OnlyStartTimeDefaultDeadlineBeforeNowTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);
            Quest quest = new FakeQuest()
            {
                StartTime = null,
                Deadline  = DateTime.Now - new TimeSpan(1, 1, 1)
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);
            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(deadlineLessThanNow, error.Error);
            Assert.AreEqual(deadlineLessThanNowClar, error.Clarification);
        }
        public void OnlyDeadlineDefaultTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);
            Quest quest = new FakeQuest()
            {
                StartTime = DateTime.Now,
                Deadline  = null
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessful);
            Assert.IsEmpty(response.Errors);
        }
        public void DeadlineMoreThanStartTimeTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);

            DateTime current = DateTime.Now;

            Quest quest = new FakeQuest()
            {
                StartTime = current,
                Deadline  = current + new TimeSpan(1, 1, 1)
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessful);
            Assert.IsEmpty(response.Errors);
        }
Пример #7
0
        ///<inheritdoc/>
        public ClarifiedResponse <TMessage> Validate(Quest quest)
        {
            quest.ThrowIfNull(nameof(quest));
            ClarifiedResponse <TMessage> response = new ClarifiedResponse <TMessage>();

            if (string.IsNullOrWhiteSpace(quest.Description))
            {
                response.Errors.Add(new ClarifiedError <TMessage>()
                {
                    Error         = _nullOrWhitespace,
                    Clarification = _nullOrWhitespaceClar
                });
            }

            return(response);
        }
Пример #8
0
        private void SaveButtonOnClick(object sender, EventArgs eventArgs)
        {
            ViewModel.QuestViewModel.Title       = TitleEditText.Text;
            ViewModel.QuestViewModel.Description = DescriptionEditText.Text;

            ClarifiedResponse <int> validationResult = ViewModel.Validate();

            if (validationResult.IsSuccessful)
            {
                ViewModel.Action();
                this.Activity.SetResult(Result.Ok);
                this.Activity.Finish();
            }
            else
            {
                ValidationErrorsFragment errorsFragment = ValidationErrorsFragment.NewInstance(validationResult.Errors);
                errorsFragment.Show(FragmentManager, ValidationErrorsId);
            }
        }
Пример #9
0
        public void ValidateTest()
        {
            //Arrange
            Quest model = new FakeQuest();
            ClarifiedResponse <int> response = new ClarifiedResponse <int>();

            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            Repeat.Once().
            Return(model);

            IQuestViewModelFactory vmFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>();

            vmFactory.Expect(vmf => vmf.CreateQuestViewModel()).
            Repeat.Once().
            Return(questViewModel);

            IQuestValidator <ClarifiedResponse <int> > validator =
                MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >();

            validator.Expect(v => v.Validate(Arg <Quest> .Is.Equal(model))).
            Repeat.Once().
            Return(response);

            MockQuestAbstractActionViewModel viewModel = new MockQuestAbstractActionViewModel(vmFactory, validator);

            //Act
            viewModel.Initialize();
            ClarifiedResponse <int> actualResponse = viewModel.Validate();

            //Assert
            Assert.IsNotNull(actualResponse);
            Assert.AreEqual(response, actualResponse);

            questViewModel.VerifyAllExpectations();
            vmFactory.VerifyAllExpectations();
            validator.VerifyAllExpectations();
        }
Пример #10
0
        ///<inheritdoc/>
        public ClarifiedResponse <TMessage> Validate(Quest quest)
        {
            quest.ThrowIfNull(nameof(quest));
            ClarifiedResponse <TMessage> response = new ClarifiedResponse <TMessage>();

            if (string.IsNullOrWhiteSpace(quest.Title))
            {
                response.Errors.Add(new ClarifiedError <TMessage>()
                {
                    Error         = _nullOrWhitespace,
                    Clarification = _nullOrWhitespaceClar
                });
            }
            else if (quest.Title.Length > MaxTitleLength)
            {
                response.Errors.Add(new ClarifiedError <TMessage>()
                {
                    Error         = _tooLong,
                    Clarification = _tooLongClar
                });
            }
            return(response);
        }