public void ReturnFalse_WhenICommandParameterEventNamePropertyIsDifferentComparedToEnterCombat(string eventName)
        {
            // Arrange
            var enterCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            var command = new Mock <ICommand>();

            command.SetupGet(c => c.EventName).Returns(eventName);

            // Act
            var actualResult = enterCombatCommandResolutionHandler.CanHandleCommand(command.Object);

            // Assert
            Assert.That(actualResult, Is.False);
        }
        public void ReturnTrue_WhenICommandParameterEventNamePropertyIsIdenticalToEnterCombat()
        {
            // Arrange
            var enterCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            var viableEventName = "ExitCombat";
            var command         = new Mock <ICommand>();

            command.SetupGet(c => c.EventName).Returns(viableEventName);

            // Act
            var actualResult = enterCombatCommandResolutionHandler.CanHandleCommand(command.Object);

            // Assert
            Assert.That(actualResult, Is.True);
        }
        public void SetICombatStatisticsContainer_CurrentCombatStatisticsProperty_ToNull()
        {
            // Arrange
            var command = new Mock <ICommand>();
            var combatStatisticsContainer = new Mock <ICombatStatisticsContainer>();

            var currentCombatStatistics = new Mock <ICombatStatistics>();

            combatStatisticsContainer.SetupGet(c => c.CurrentCombatStatistics).Returns(currentCombatStatistics.Object);

            var exitCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            // Act
            exitCombatCommandResolutionHandler.HandleCommand(command.Object, combatStatisticsContainer.Object);

            // Assert
            combatStatisticsContainer.VerifySet(c => c.CurrentCombatStatistics = null, Times.Once);
        }
        public void SetICombatStatisticsContainerParameter_CurrentCombatStatisticsIsCompletedProperty_ToTrue()
        {
            // Arrange
            var command = new Mock <ICommand>();
            var combatStatisticsContainer = new Mock <ICombatStatisticsContainer>();

            var currentCombatStatistics = new Mock <ICombatStatistics>();

            combatStatisticsContainer.SetupGet(c => c.CurrentCombatStatistics).Returns(currentCombatStatistics.Object);

            var exitCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            // Act
            exitCombatCommandResolutionHandler.HandleCommand(command.Object, combatStatisticsContainer.Object);

            // Assert
            currentCombatStatistics.VerifySet(s => s.IsCompleted = true, Times.Once);
        }
        public void InvokeICommandParameter_TimeStampPropertyGetMethodOnce()
        {
            // Arrange
            var command = new Mock <ICommand>();
            var combatStatisticsContainer = new Mock <ICombatStatisticsContainer>();

            var currentCombatStatistics = new Mock <ICombatStatistics>();

            combatStatisticsContainer.SetupGet(c => c.CurrentCombatStatistics).Returns(currentCombatStatistics.Object);

            var exitCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            // Act
            exitCombatCommandResolutionHandler.HandleCommand(command.Object, combatStatisticsContainer.Object);

            // Assert
            command.VerifyGet(c => c.TimeStamp, Times.Exactly(2));
        }
        public void ReturnTheSameICombatStatisticsContainerInstance()
        {
            // Arrange
            var command = new Mock <ICommand>();
            var combatStatisticsContainer = new Mock <ICombatStatisticsContainer>();

            var currentCombatStatistics = new Mock <ICombatStatistics>();

            combatStatisticsContainer.SetupGet(c => c.CurrentCombatStatistics).Returns(currentCombatStatistics.Object);

            var exitCombatCommandResolutionHandler = new MockExitCombatCommandResolutionHandler();

            var expectedReturnedICombatStatisticsContainerInstance = combatStatisticsContainer.Object;

            // Act
            var actualReturnedICombatStatisticsContainerInstance = exitCombatCommandResolutionHandler.HandleCommand(command.Object, combatStatisticsContainer.Object);

            // Assert
            Assert.That(actualReturnedICombatStatisticsContainerInstance, Is.SameAs(expectedReturnedICombatStatisticsContainerInstance));
        }