public async Task ProcessMessageAsync_CampaignsContributionDoesNotExist_CustomerProfileNotUpdated()
        {
            var campaignServiceMock        = new Mock <ICampaignService>();
            var customerProfileServiceMock = new Mock <ICustomerProfileService>();

            campaignServiceMock.Setup(c => c.DoesCampaignsContributionExistAsync(It.IsAny <Guid>(), It.IsAny <Guid>()))
            .ReturnsAsync(false);

            campaignServiceMock.Setup(c => c.InsertAsync(It.IsAny <CampaignsContributionModel>()))
            .ReturnsAsync(Guid.NewGuid().ToString());
            customerProfileServiceMock.Setup(c => c.ProcessParticipatedInCampaignEvent(It.IsAny <Guid>()))
            .Returns(Task.CompletedTask);

            var subscriber = new ParticipatedInCampaignSubscriber("test", "test",
                                                                  EmptyLogFactory.Instance, campaignServiceMock.Object,
                                                                  customerProfileServiceMock.Object);

            await subscriber.ProcessMessageAsync(new ParticipatedInCampaignEvent()
            {
                CampaignId = Guid.NewGuid().ToString(),
                CustomerId = Guid.NewGuid().ToString()
            });

            campaignServiceMock.Verify(c => c.InsertAsync(It.IsAny <CampaignsContributionModel>()),
                                       Times.Once);

            customerProfileServiceMock.Verify(c => c.ProcessParticipatedInCampaignEvent(It.IsAny <Guid>()),
                                              Times.Once);
        }
        public async Task ProcessMessageAsync_NotValidIdentifiersPassed_EventIsProcessed()
        {
            var campaignServiceMock        = new Mock <ICampaignService>();
            var customerProfileServiceMock = new Mock <ICustomerProfileService>();

            var subscriber = new ParticipatedInCampaignSubscriber(
                "test",
                "test",
                EmptyLogFactory.Instance,
                campaignServiceMock.Object,
                customerProfileServiceMock.Object);

            await subscriber.StartProcessingAsync(new ParticipatedInCampaignEvent()
            {
                CampaignId = Guid.NewGuid().ToString("D"),
                CustomerId = Guid.NewGuid().ToString("D")
            });

            campaignServiceMock.Verify(
                c => c.DoesCampaignsContributionExistAsync(It.IsAny <Guid>(), It.IsAny <Guid>()),
                Times.Once);
        }
        public async Task ProcessMessageAsync_AllIdentifiersInvalidArePassed_EventIsNotProcessed()
        {
            var campaignServiceMock        = new Mock <ICampaignService>();
            var customerProfileServiceMock = new Mock <ICustomerProfileService>();

            var subscriber = new ParticipatedInCampaignSubscriber(
                "test",
                "test",
                EmptyLogFactory.Instance,
                campaignServiceMock.Object,
                customerProfileServiceMock.Object);

            await subscriber.StartProcessingAsync(new ParticipatedInCampaignEvent()
            {
                CampaignId = "not valid",
                CustomerId = "not valid"
            });

            campaignServiceMock.Verify(
                c => c.DoesCampaignsContributionExistAsync(It.IsAny <Guid>(), It.IsAny <Guid>()),
                Times.Never);
        }