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); }
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; } }