public void ShouldCallAddRoomMethodFromRoomsServices(string name)
        {
            // Arrange
            var room       = new Room();
            var mockedView = new Mock <IAddRoomView>();

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

            var mockedRoomFactory = new Mock <IRoomFactory>();

            mockedRoomFactory.Setup(cf => cf.CreateRoom(It.IsAny <string>(),
                                                        It.IsAny <string>()))
            .Returns(room)
            .Verifiable();

            var mockedRoomsServices = new Mock <IRoomsService>();

            mockedRoomsServices.Setup(cs =>
                                      cs.AddRoom(It.IsAny <Room>()))
            .Verifiable();

            var mockedImageUploader = new Mock <IImageUploader>();

            var addRoomPresenter = new AddRoomPresenter(mockedView.Object,
                                                        mockedRoomFactory.Object,
                                                        mockedRoomsServices.Object,
                                                        mockedImageUploader.Object);

            // Act
            mockedView.Raise(v => v.AddingRoom += null,
                             new AddRoomEventArgs(name));

            // Assert
            mockedRoomsServices.Verify(cs => cs.AddRoom(room), Times.Once);
        }
        public void ShouldCallUploadMethodFromImageUploader(string imageFileName, string folderName)
        {
            // Arrange
            var fileUpload = new FileUpload();

            var mockedView = new Mock <IAddRoomView>();

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

            var mockedRoomFactory   = new Mock <IRoomFactory>();
            var mockedRoomsServices = new Mock <IRoomsService>();
            var mockedImageUploader = new Mock <IImageUploader>();

            mockedImageUploader.Setup(iu => iu.Upload(It.IsAny <FileUpload>(),
                                                      It.IsAny <HttpServerUtility>(),
                                                      It.IsAny <string>(),
                                                      It.IsAny <string>())).Verifiable();

            var addRoomPresenter = new AddRoomPresenter(mockedView.Object,
                                                        mockedRoomFactory.Object,
                                                        mockedRoomsServices.Object,
                                                        mockedImageUploader.Object);

            // Act
            mockedView.Raise(v => v.UploadingImage += null,
                             new UploadImageEventArgs(fileUpload, It.IsAny <HttpServerUtility>(), imageFileName, folderName));

            // Assert
            mockedImageUploader.Verify(iu =>
                                       iu.Upload(fileUpload, It.IsAny <HttpServerUtility>(), imageFileName, folderName), Times.Once);
        }
        public void ShouldSubscribeToAddRoomViewOnUploadingImageEvent()
        {
            // Arrange
            var mockedView          = new MockedAddRoomView();
            var mockedRoomFactory   = new Mock <IRoomFactory>();
            var mockedRoomsService  = new Mock <IRoomsService>();
            var mockedImageUploader = new Mock <IImageUploader>();

            // Act
            var addRoomPresenter = new AddRoomPresenter(mockedView,
                                                        mockedRoomFactory.Object,
                                                        mockedRoomsService.Object,
                                                        mockedImageUploader.Object);

            // Assert
            Assert.IsTrue(mockedView.IsSubscribedMethod("OnUploadingImage"));
        }
        public void ShouldCreateAnInstanceInheritingPresenter_WhenValidDependenciesArePassed()
        {
            // Arrange
            var mockedView          = new Mock <IAddRoomView>();
            var mockedRoomFactory   = new Mock <IRoomFactory>();
            var mockedRoomsService  = new Mock <IRoomsService>();
            var mockedImageUploader = new Mock <IImageUploader>();

            // Act
            var addRoomPresenter = new AddRoomPresenter(mockedView.Object,
                                                        mockedRoomFactory.Object,
                                                        mockedRoomsService.Object,
                                                        mockedImageUploader.Object);

            // Assert
            Assert.IsInstanceOf <Presenter <IAddRoomView> >(addRoomPresenter);
        }