public void it_should_return_correct_payment_on_subscription_level_and_term()
        {
            SubscriptionPlan subscriptionPlan = new SubscriptionPlan();

            subscriptionPlan.Level = _subscriptionLevel;
            subscriptionPlan.Term  = _subscriptionTerm;

            IPaymentStrategyFactory paymentStrategyFactory = new SubscriptionPaymentStrategyFactory();
            SubscriptionService     subscriptionService    = new SubscriptionService(paymentStrategyFactory);
            var payment = subscriptionService.CalculatePayment(subscriptionPlan);

            Assert.AreEqual(_paymentResult, payment);
        }
        public void then_PaymentStrategyFactory_GetStrategy_should_be_called()
        {
            // Arrange
            var mockPaymentStrategyFactory = new Mock <IPaymentStrategyFactory>();

            mockPaymentStrategyFactory.Setup(p => p.GetPaymentStratgey(It.IsAny <string>()));

            SubscriptionService subscriptionService = new SubscriptionService(mockPaymentStrategyFactory.Object);

            // Act
            subscriptionService.CalculatePayment(_subscriptionPlan);

            // Assert
            mockPaymentStrategyFactory.Verify(p => p.GetPaymentStratgey(It.IsAny <string>()), Times.Exactly(1));
        }