public async Task All_Provided_Text_Is_Added_When_The_Append_Option_Is_Selected() { // Assort var store = new List<ForwardTextCandidate>(); var repository = new MockRepository(MockBehavior.Default).Create<Repository<ForwardTextCandidate>>(new Mock<ISession>().Object); repository.Setup(x => x.Get()).Returns(store.AsQueryable()); repository.Setup(x => x.Save(It.IsAny<IQueryable<ForwardTextCandidate>>())).Callback<IQueryable<ForwardTextCandidate>>(items => store.AddRange(items)); var svc = new Mock<CsvFileTextService<ForwardTextCandidate>>(); svc.Setup(x => x.Import(It.IsAny<string>(), MergeWithExistingRecordsPolicy.Append, repository.Object, NullEntityCreator, NullEntityLocator, NullEntityUpdater)) .Callback<string, MergeWithExistingRecordsPolicy, IBaseRepository<ForwardTextCandidate>, Func<string, ForwardTextCandidate>, Func<ForwardTextCandidate, string, bool>, Action<ForwardTextCandidate, string>> ((path, opc, rep, creator, locator, updater) => { var itemsToAdd = new List<ForwardTextCandidate>(); InputTextItems.ToList().ForEach(x => itemsToAdd.Add(new ForwardTextCandidate { Text = x })); rep.Save(itemsToAdd.AsQueryable()); }) .Returns(Task.FromResult<ImportTextResult>(new ImportTextResult { Success = true, InsertedRecords = InputTextItems.Length })); // Act var result = await svc.Object.Import(string.Empty, MergeWithExistingRecordsPolicy.Append, repository.Object, NullEntityCreator, NullEntityLocator, NullEntityUpdater); // Assert Assert.IsTrue(result.Success); Assert.AreEqual(InputTextItems.Length, store.Count()); var index = 0; store.ForEach(x => Assert.AreEqual(x.Text, InputTextItems[index++])); }
private static Mock<Repository<ForwardTextCandidate>> CreateFakeRepository(List<ForwardTextCandidate> store) { var repository = new MockRepository(MockBehavior.Default).Create<Repository<ForwardTextCandidate>>(new Mock<ISession>().Object); repository.Setup(x => x.Get()).Returns(store.AsQueryable()); repository.Setup(x => x.Create(It.IsAny<ForwardTextCandidate>())).Callback<ForwardTextCandidate>(item => store.Add(item)); repository.Setup(x => x.Delete(It.IsAny<ForwardTextCandidate>())).Callback<ForwardTextCandidate>(item => store.Remove(item)); repository.Setup(x => x.Save(It.IsAny<ForwardTextCandidate>())).Callback<ForwardTextCandidate>(item => { var rep = repository.Object; rep.Create(new ForwardTextCandidate { Text = item.Text, CreatedOn = DateTime.Now, LastUsedOn = DateTime.Now }); }); return repository; }