public void Build_MissingActionTargetCalculator_Throws()
        {
            // Arrange
            var builder = new BuffActionBuilder()
                          .WithRaiseDefence(0.1);

            // Act and Assert
            Assert.Throws <InvalidOperationException>(() => _ = builder.Build());
        }
        public void Build_CallsPresent_Succeeds()
        {
            // Arrange
            var builder = new BuffActionBuilder()
                          .TargetsUser()
                          .WithRaiseAttack(0.1);

            // Act
            var buff = builder.Build();

            // Assert
            Assert.That(buff, Is.Not.Null);
        }
        private static BuffAction CreateBuffAction(
            IActionTargetCalculator actionTargetCalculator       = null,
            IDictionary <StatCategory, double> targetMultipliers = null)
        {
            var builder = new BuffActionBuilder()
                          .WithActionTargetCalculator(actionTargetCalculator ?? Mock.Of <IActionTargetCalculator>());

            if (targetMultipliers is not null)
            {
                foreach (var multiplier in targetMultipliers)
                {
                    builder = builder.WithTargetMultiplier(multiplier.Key, multiplier.Value);
                }
            }

            return(builder.Build());
        }