public void SetErrorMessageInViewModel_IfNoChanges()
        {
            // Arrange
            var errorMessage = "Something is wrong!";
            var mockedView   = new Mock <IAddNewClassView>();

            mockedView.Setup(v => v.Model).Returns(new AddNewClassViewModel());

            var mockedTeacherService = new Mock <ITeacherService>();

            mockedTeacherService.Setup(s => s.Save()).Returns(0);
            mockedTeacherService.Setup(s => s.FindById(It.IsAny <string>())).Verifiable();

            var mockedStudentClassService = new Mock <IStudentClassService>();

            mockedStudentClassService.Setup(s => s.Add(It.IsAny <StudentClass>())).Verifiable();

            var mockedStudentClassFactory = new Mock <IStudentClassFactory>();

            mockedStudentClassFactory.Setup(f => f.CreateClass(It.IsAny <string>(), It.IsAny <string>())).Verifiable();

            var presenter = new AddNewClassPresenter(mockedView.Object, mockedStudentClassService.Object, mockedTeacherService.Object, mockedStudentClassFactory.Object);
            var ev        = new AddNewClassEventArgs(null, null);

            // Act & Assert
            Assert.DoesNotThrow(() => mockedView.Raise(v => v.CreateClassClick += null, ev));
            Assert.AreEqual(errorMessage, mockedView.Object.Model.ErrorMessage);
            Assert.IsFalse(mockedView.Object.Model.IsSuccess);

            // Verify that the method is stopped and other dependencies are not called
            mockedTeacherService.Verify(s => s.Save(), Times.Never);
            mockedTeacherService.Verify(s => s.FindById(It.IsAny <string>()), Times.Never);

            mockedStudentClassService.Verify(s => s.Add(It.IsAny <StudentClass>()), Times.Once);
        }
예제 #2
0
        public void View_CreateClassClick(object sender, AddNewClassEventArgs e)
        {
            try
            {
                var stClass = this.studentClassFactory.CreateClass(e.ClassName, e.TeacherId);
                this.studentClassService.Add(stClass);
            }
            catch (ArgumentException ex)
            {
                this.View.Model.IsSuccess    = false;
                this.View.Model.ErrorMessage = ex.Message;
                return;
            }

            int changes = 0;

            try
            {
                changes = this.studentClassService.Save();
            }
            catch (Exception ex)
            {
                this.View.Model.IsSuccess    = false;
                this.View.Model.ErrorMessage = "Something`s wrong. Maybe this class already exist.";
                return;
            }

            if (changes <= 0)
            {
                this.View.Model.IsSuccess    = false;
                this.View.Model.ErrorMessage = "Something is wrong!";
            }
            else
            {
                this.ChangeTeacherState(e.TeacherId);
                this.View.Model.IsSuccess = true;
            }
        }