public async Task ResetCollection_ContactNotInCollection_DoNotDisableOtherPlans() { var contact = CreateContact(); var plans = CreatePlansWithCampaign(); await Model.ResetCollectionAsync(contact, plans, 1); MockPlans.Verify(x => x.RemoveFromCampaignAsync(It.IsAny <int>(), It.IsAny <int>()), Times.Never); }
public async Task ResetCollection_InCollectionByOtherPlan_DisableThisPlan() { var contact = CreateContact(2); var plans = CreatePlansWithCampaign(); await Model.ResetCollectionAsync(contact, plans, 1); MockPlans.Verify(x => x.RemoveFromCampaignAsync(1, It.IsAny <int>()), Times.Once); MockPlans.Verify(x => x.RemoveFromCampaignAsync(2, It.IsAny <int>()), Times.Never); }
public async Task ResetCollection_InCollectionAlreadyDisabled_DoesNotRemoveFromCampaign() { var contact = CreateContact(2); var plans = CreatePlansWithCampaign(); plans[0].ListCampaigns.Clear(); await Model.ResetCollectionAsync(contact, plans, 1); MockPlans.Verify(x => x.RemoveFromCampaignAsync(It.IsAny <int>(), It.IsAny <int>()), Times.Never); }
public Mock <PaymentPlanProcessor> CreateMockModelForQueue() { ProcessCalled = new List <int>(); var mockModel = new Mock <PaymentPlanProcessor>(MockProcessor.Object, MockContacts.Object, MockPlans.Object, new RandomGenerator(), Config) { CallBase = true }; mockModel.Setup(x => x.ProcessAsync(It.IsAny <ApiCustomContact>(), It.IsAny <IEnumerable <ApiPaymentPlan> >(), It.IsAny <DateTimeOffset>())) .Returns <ApiCustomContact, IEnumerable <ApiPaymentPlan>, DateTimeOffset>((contact, planList, currentDate) => { ProcessCalled.Add(contact.Id !.Value); return(Task.FromResult(new PaymentResult())); }); MockContacts.Setup(x => x.SelectAsync(It.IsAny <int>())) .Returns <int>((id) => Task.FromResult(new ApiCustomContact() { Id = id })); MockPlans.Setup(x => x.SelectAsync(It.IsAny <ApiSearchOptions>())) .Returns(Task.FromResult <IList <ApiPaymentPlan> >(new List <ApiPaymentPlan>())); return(mockModel); }
public async Task ProcessInQueueAsync_LongTask_WaitUntilFinish() { var mockModel = CreateMockModelForQueue(); MockPlans.Setup(x => x.SelectAsync(It.IsAny <ApiSearchOptions>())) .Returns(async() => { await Task.Delay(100); return(new List <ApiPaymentPlan>()); }); var task1 = mockModel.Object.ProcessInQueueAsync(1, 0, _now).ConfigureAwait(false); var task2 = mockModel.Object.ProcessInQueueAsync(2, 0, _now).ConfigureAwait(false); var task3 = mockModel.Object.ProcessInQueueAsync(3, 0, _now).ConfigureAwait(false); var result1 = await task1; Assert.Single(ProcessCalled); var result2 = await task2; Assert.Equal(2, ProcessCalled.Count); await task3; }