public async Task CanActivateSubscription()
        {
            var loggerMock         = new Mock <ILogger <FulfillmentManager> >();
            var fulfillmentManager = new FulfillmentManager(
                this.fulfillmentClientMock.Object,
                loggerMock.Object);

            var subscriptionId = Guid.NewGuid();

            var subscriptionDetails = new MarketplaceSubscription {
                PlanId = "id", SubscriptionId = subscriptionId
            };

            this.fulfillmentClientMock.Setup(c => c.ActivateSubscriptionAsync(It.IsAny <Guid>(),
                                                                              It.IsAny <ActivatedSubscription>(), It.IsAny <Guid>(), It.IsAny <Guid>(),
                                                                              It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new FulfillmentRequestResult {
                Success = true
            }));

            var result =
                await fulfillmentManager.ActivateSubscriptionAsync(subscriptionId, subscriptionDetails.PlanId, null);

            this.fulfillmentClientMock
            .Verify(c =>
                    c.ActivateSubscriptionAsync(
                        It.Is <Guid>(s => s == subscriptionId),
                        It.Is <ActivatedSubscription>(a => a.PlanId == "id"),
                        It.IsAny <Guid>(),
                        It.IsAny <Guid>(),
                        It.IsAny <CancellationToken>()),
                    Times.Once());
            Assert.True(result.State == SubscriptionState.Complete);
        }
        public async Task CanResolveSubscription()
        {
            var loggerMock = new Mock <ILogger <FulfillmentManager> >();

            var fulfillmentManager = new FulfillmentManager(
                this.fulfillmentClientMock.Object,
                loggerMock.Object);

            this.fulfillmentClientMock.Setup(f => f.ResolveSubscriptionAsync(It.IsAny <string>(),
                                                                             It.IsAny <Guid>(),
                                                                             It.IsAny <Guid>(),
                                                                             It.IsAny <CancellationToken>())).Returns(Task.FromResult(new ResolvedSubscription()));

            var subscriptionId = await fulfillmentManager.ResolveSubscriptionAsync("authCode");

            this.fulfillmentClientMock
            .Verify(c =>
                    c.ResolveSubscriptionAsync(
                        It.Is <string>(a => a == "authCode"),
                        It.IsAny <Guid>(),
                        It.IsAny <Guid>(),
                        It.IsAny <CancellationToken>()),
                    Times.Once());
        }