public void ShouldNotAllowToExecuteIfProcessingEngineIsNull()
        {
            // Given
            var command = new StartImageProcessingCommand(null);

            // When
            // Then
            Assert.IsFalse(command.CanExecute());
        }
        public void ShouldNotAllowToStartIfAlreadyStarted()
        {
            // Given
            var processingEngineMock = new Mock <IProcessingEngine>();

            processingEngineMock.Setup(s => s.IsWorking()).Returns(true);
            var processingServiceMock = new Mock <IProcessingService>();

            processingServiceMock.SetupGet(ps => ps.ProcessingEngine).Returns(processingEngineMock.Object);

            var command = new StartImageProcessingCommand(processingServiceMock.Object);

            // When
            // Then
            Assert.IsFalse(command.CanExecute());
        }
        public void ShouldAllowToStartNotStartedProcessingEngine()
        {
            // Given
            var processingEngineMock  = new Mock <IProcessingEngine>();
            var processingServiceMock = new Mock <IProcessingService>();

            processingServiceMock.SetupGet(ps => ps.ProcessingEngine).Returns(processingEngineMock.Object);

            var command = new StartImageProcessingCommand(processingServiceMock.Object);

            // When
            command.Execute();

            // Then
            processingEngineMock.Verify(s => s.Start(), Times.Once);
        }