public async Task GetAsync_PriceFilteredAndOrdered() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.GetAsync(It.IsAny <Expression <Func <Article, bool> > >(), It.IsAny <Func <IQueryable <Article>, IOrderedQueryable <Article> > >(), string.Empty)) .Returns((Expression <Func <Article, bool> > filter, Func <IQueryable <Article>, IOrderedQueryable <Article> > orderBy, string includeProperties) => { var filtered = store.Articles.Where(filter.Compile()).AsQueryable(); var ordered = orderBy.Invoke(filtered); return(Task.FromResult(ordered.AsEnumerable())); }); this.articlesRepository = mockArticleRepository.Object; var result = await this.articlesRepository.GetAsync(filter : a => a.Price > 100m, orderBy : q => q.OrderByDescending(a => a.Price)); Assert.AreEqual(4, result.Count()); Assert.AreEqual(150m, result.Last().Price); Assert.AreEqual(1000.0m, result.First().Price); }
public async Task AddArticleAsync() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ISalesService> mockSalesService = new Mock <ISalesService>(); mockSalesService.Setup(s => s.CreateAsync(It.Is <Article>(a => a.Title == "Added title"))) .ReturnsAsync(8); this.salesService = mockSalesService.Object; int id = await this.salesService.CreateAsync(this.articleToAdd); Assert.AreEqual(8, id); }
public void GetById_DoesntExist() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.GetById(It.IsNotIn <int>(1, 2, 3, 4, 5, 6))) .Returns <Article>(null); this.articlesRepository = mockArticleRepository.Object; Article article = this.articlesRepository.GetById(10); Assert.AreEqual(null, article); }
public async Task GetByIdAsync_DoesntExist() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.GetByIdAsync(It.IsNotIn <int>(1, 2, 3, 4, 5, 6))) .Returns <int>(id => Task.FromResult <Article>(null)); this.articlesRepository = mockArticleRepository.Object; Article article = await this.articlesRepository.GetByIdAsync(10); Assert.AreEqual(null, article); }
public async Task GetAsync_MinimumPriceFiltered() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.GetAsync(It.IsAny <Expression <Func <Article, bool> > >(), null, string.Empty)) .Returns((Expression <Func <Article, bool> > filter, Func <IQueryable <Article>, IOrderedQueryable <Article> > orderBy, string includeProperties) => Task.FromResult(store.Articles.Where(filter.Compile()))); this.articlesRepository = mockArticleRepository.Object; var result = await this.articlesRepository.GetAsync(filter : a => a.Price > 100m); Assert.AreEqual(4, result.Count()); }
public void Get_Filtered() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Get(It.IsAny <Expression <Func <Article, bool> > >(), null, string.Empty)) .Returns((Expression <Func <Article, bool> > filter, Func <IQueryable <Article>, IOrderedQueryable <Article> > orderBy, string includeProperties) => store.Articles.Where(filter.Compile())); this.articlesRepository = mockArticleRepository.Object; var result = this.articlesRepository.Get(a => a.IdCategory == 1); Assert.AreEqual(3, result.Count()); }
public void GetById() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.GetById(It.IsInRange <int>(1, 6, Range.Inclusive))) .Returns <int>(id => store.Articles.Find(el => el.Id == id)); this.articlesRepository = mockArticleRepository.Object; Article article = this.articlesRepository.GetById(1); Article storedArticle = store.Articles.Single(el => el.Id == 1); Assert.AreEqual(article.Title, storedArticle.Title); Assert.AreEqual(article.Description, storedArticle.Description); Assert.AreEqual(article.IdCategory, storedArticle.IdCategory); }
public void Get_Ordered() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Get(null, It.IsAny <Func <IQueryable <Article>, IOrderedQueryable <Article> > >(), string.Empty)) .Returns((Expression <Func <Article, bool> > filter, Func <IQueryable <Article>, IOrderedQueryable <Article> > orderBy, string includeProperties) => orderBy.Invoke(store.Articles.AsQueryable())); this.articlesRepository = mockArticleRepository.Object; var result = this.articlesRepository.Get(orderBy: q => q.OrderByDescending(a => a.Id)); Assert.AreEqual(7, result.Count()); Assert.AreEqual(1, result.Last().Id); Assert.AreEqual(7, result.First().Id); }
public void DeleteById() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Delete(It.IsAny <int>())) .Callback((object a) => { var index = store.Articles.FindIndex(el => el.Id == (int)a); store.Articles.RemoveAt(index); }).Verifiable(); this.articlesRepository = mockArticleRepository.Object; this.articlesRepository.Delete(1); mockArticleRepository.Verify(r => r.Delete(It.IsAny <int>()), Times.Once()); Assert.AreEqual(6, store.Articles.Count); }
public async Task DeleteArticleAsync() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ISalesService> mockSalesService = new Mock <ISalesService>(); mockSalesService.Setup(r => r.DeleteAsync(It.IsAny <Article>())) .Returns(Task.FromResult <object>(null)) .Callback((Article a) => { store.Articles.Remove(a); }).Verifiable(); this.salesService = mockSalesService.Object; Article article = store.Articles.ElementAt(5); await this.salesService.DeleteAsync(article); mockSalesService.Verify(r => r.DeleteAsync(It.IsAny <Article>()), Times.Once()); Assert.AreEqual(6, store.Articles.Count); }
public void Delete() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Delete(It.IsAny <Article>())) .Callback((Article a) => { store.Articles.Remove(a); }).Verifiable(); this.articlesRepository = mockArticleRepository.Object; Article article = store.Articles.ElementAt(5); this.articlesRepository.Delete(article); mockArticleRepository.Verify(r => r.Delete(It.IsAny <Article>()), Times.Once()); Assert.AreEqual(6, store.Articles.Count); }
public async Task UpdateArticleAsync() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ISalesService> mockSalesService = new Mock <ISalesService>(); mockSalesService.Setup(r => r.ModifyAsync(It.IsAny <Article>())) .Returns(Task.FromResult <object>(null)) .Callback((Article a) => { var index = store.Articles.FindIndex(el => el.Id == a.Id); store.Articles[index] = a; }).Verifiable(); this.salesService = mockSalesService.Object; Article article = store.Articles.ElementAt(4); string newTitle = article.Title = "a5"; string newDescription = article.Description = "a5d"; await this.salesService.ModifyAsync(article); mockSalesService.Verify(r => r.ModifyAsync(It.IsAny <Article>()), Times.Once()); Assert.AreEqual(newTitle, store.Articles.ElementAt(4).Title); Assert.AreEqual(newDescription, store.Articles.ElementAt(4).Description); }
public void Update() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Update(It.IsAny <Article>())) .Callback((Article a) => { var index = store.Articles.FindIndex(el => el.Id == a.Id); store.Articles[index] = a; }).Verifiable(); this.articlesRepository = mockArticleRepository.Object; Article article = store.Articles.ElementAt(4); string newTitle = article.Title = "a5"; string newDescription = article.Description = "a5d"; this.articlesRepository.Update(article); mockArticleRepository.Verify(r => r.Update(It.IsAny <Article>()), Times.Once()); Assert.AreEqual(newTitle, store.Articles.ElementAt(4).Title); Assert.AreEqual(newDescription, store.Articles.ElementAt(4).Description); }
public void Insert() { VolatileCoreBusinessDataset store = new VolatileCoreBusinessDataset(); Mock <ICoreBusinessContext> context = new Mock <ICoreBusinessContext>(); Mock <ArticlesRepository> mockArticleRepository = new Mock <ArticlesRepository>(context.Object); mockArticleRepository.Setup(r => r.Insert(It.IsAny <Article>())) .Callback((Article a) => { a.Id = 8; a.Category = new Category { Id = 4, Title = "Category 4", RowVersion = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 } }; a.RowVersion = new byte[] { 0, 0, 0, 0, 0, 0, 0, 1 }; store.Articles.Add(a); }).Verifiable(); this.articlesRepository = mockArticleRepository.Object; Article article = new Article { IdCategory = 4, Title = "Article 8", Description = "Description 8", ImagesPath = Guid.NewGuid(), Price = 100m }; this.articlesRepository.Insert(article); mockArticleRepository.Verify(r => r.Insert(It.IsAny <Article>()), Times.Once()); Assert.AreEqual(8, store.Articles.Count); Assert.AreEqual(8, store.Articles.Last().Id); }