public void WhenQuestionHasValidValue_ThenItIsComplete()
        {
            var question = new OpenQuestion { MaxLength = 10 };
            question.Response = "aaaa";

            Assert.IsTrue(question.IsComplete);
        }
        public void ViewModelHasMaxLengthAsTheAvailableLength()
        {
            var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
            var viewModel = new OpenQuestionViewModel(question);

            Assert.AreEqual(25, viewModel.AvailableLength);
        }
        public void WhenQuestionHasEmptyValue_ThenItIsNotComplete()
        {
            var question = new OpenQuestion { MaxLength = 10 };
            question.Response = "";

            Assert.IsFalse(question.IsComplete);
        }
        public void WhenResponseLengthExceedsMaxLength_ThenIndicatesErrorOnResponse()
        {
            var question = new OpenQuestion { MaxLength = 10 };
            var notifyErrorInfo = (INotifyDataErrorInfo)question;

            question.Response = "ThisIsLongerThanTenCharacters";

            Assert.IsTrue(notifyErrorInfo.GetErrors("Response").Cast<string>().Any());
        }
        public void WhenSettingTheResponseTextPropertyOnTheModel_ThenAvailableLengthIsUpdatedOnTheViewModel()
        {
            var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
            var viewModel = new OpenQuestionViewModel(question);

            question.Response = "1234567890";

            Assert.AreEqual(15, viewModel.AvailableLength);
        }
        public void WhenSettingTheResponseTextPropertyOnTheModel_ThenAChangeOnAvailableLengthIsNotifiedOnTheViewModel()
        {
            var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
            var viewModel = new OpenQuestionViewModel(question);

            var changeTracker = new PropertyChangeTracker(viewModel);
            question.Response = "1234567890";

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("AvailableLength"));
        }
        public void WhenSettingResponseToNull_ThenIndicatesErrorOnResponse()
        {
            var question = new OpenQuestion { MaxLength = 10 };
            var notifyErrorInfo = (INotifyDataErrorInfo)question;

            question.Response = "valid";
            Assert.IsFalse(notifyErrorInfo.GetErrors("Response").Cast<string>().Any());

            question.Response = null;
            Assert.IsTrue(notifyErrorInfo.GetErrors("Response").Cast<string>().Any());
        }
        public void WhenSettingTheResponseTextPropertyOnTheModel_ThenTheViewModelNotifiesAResponseChange()
        {
            var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
            var viewModel = new OpenQuestionViewModel(question);

            bool responseChanged = false;
            viewModel.ResponseChanged += (s, e) => responseChanged = true;
            question.Response = "1234567890";

            Assert.IsTrue(responseChanged);
        }
 public void WhenQuestionIsNew_ThenTemplateValuesAreCopied()
 {
     var question = new OpenQuestion { MaxLength = 10 };
     Assert.AreEqual(10, question.MaxLength);
 }
 public void WhenQuestionIsNew_ThenItIsNotComplete()
 {
     var question = new OpenQuestion { MaxLength = 10 };
     Assert.IsFalse(question.IsComplete);
 }
        public void WhenSettingTheResponseOntheModel_ThenViewModelHasChanges()
        {
            var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
            var viewModel = new OpenQuestionViewModel(question);

            bool hasChanges = false;
            viewModel.ResponseChanged += (o, e) => { hasChanges = true; };            

            question.Response = "1234567890";

            Assert.IsTrue(hasChanges);
        }
 public void WhenCreatingTheViewModel_ThenHasChangesIsFalse()
 {
     var question = new OpenQuestion { QuestionText = "Question", MaxLength = 25 };
     var viewModel = new OpenQuestionViewModel(question);
     bool hasChanges = false;
     viewModel.ResponseChanged += (o,e) => { hasChanges = true; };            
     Assert.IsFalse(hasChanges);
 }