public async Task ReturnFalse_WhenBarDoesntExist() { //Arrange var options = Utils.GetOptions(nameof(ReturnFalse_WhenBarDoesntExist)); using (var context = new BCcontext(options)) { } var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var result = await sut.BarExistsByName("BestBar"); Assert.AreEqual(result, false); } }
public async Task ThrowArgumentNullException_WhenArgumentNull() { //Arrange var options = Utils.GetOptions("RecordsBar_WhenBarDoesntExist"); using (var context = new BCcontext(options)) { } var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); await Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await sut.CreateAsync(null)); } }
public async Task ThrowArgumentException_IfParameterIncorect() { //Arrange var options = Utils.GetOptions(nameof(ThrowArgumentException_IfParameterIncorect)); using (var context = new BCcontext(options)) { } var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); await Assert.ThrowsExceptionAsync <ArgumentException>(async() => await sut.GetAllAsync("a", "10", string.Empty, "asc", true)); await Assert.ThrowsExceptionAsync <ArgumentException>(async() => await sut.GetAllAsync("0", "a", string.Empty, "asc", true)); } }
public void ReturnsCorrectCount() { //Arrange var bars = new List <ShishaBar>() { new ShishaBar(), new ShishaBar() }.AsQueryable(); var mockedBarsRepo = new Mock <IEntityFrameworkRepository <ShishaBar> >(); mockedBarsRepo.Setup(x => x.All).Returns(bars); var mockedData = new Mock <IShishaTimeData>(); mockedData.Setup(x => x.Bars).Returns(mockedBarsRepo.Object); var service = new BarsService(mockedData.Object); int count; //Act service.GetBarsWithPaging(out count, 1, 5); //Arrange Assert.AreEqual(2, count); }
public async Task ReturnNull_WhenBarDoesntExist() { //Arrange var options = Utils.GetOptions(nameof(ReturnNull_WhenBarDoesntExist)); using (var context = new BCcontext(options)) { } var bar = new BarDTO() { Name = "BestBarAgain", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17", Country = "България", District = "Лозенец", Email = "*****@*****.**", Phone = "088888888", Town = "София" }; var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var result = await sut.UpdateAsync(Guid.NewGuid(), bar); Assert.AreEqual(result, null); } }
public async Task GetDefinedBarCocktails_WhenSuccessful() { //Arrange var options = Utils.GetOptions(nameof(GetDefinedBarCocktails_WhenSuccessful)); var record = new Bar() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17.", Country = "България.", District = "Лозенец.", Email = "*****@*****.**", Phone = "088888888.", Town = "София.", LocationId = null, }; var cocktailList = new List <Cocktail>(); for (int i = 1; i <= 20; i++) { var cocktail = new Cocktail() { Name = "BestCocktail" + i, Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, IsAlcoholic = false }; cocktailList.Add(cocktail); } using (var context = new BCcontext(options)) { await context.Bars.AddAsync(record); await context.Cocktails.AddRangeAsync(cocktailList); await context.SaveChangesAsync(); var bar = await context.Bars.FirstOrDefaultAsync(); var cocktails = await context.Cocktails.ToListAsync(); foreach (var item in cocktails) { var join = new CocktailBar() { Bar = bar, Cocktail = item, }; await context.CocktailBars.AddAsync(join); } await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); coctailMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Cocktail>())) .Returns((Cocktail b) => new CocktailDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, IsAlcoholic = b.IsAlcoholic }); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var dbResult = await context.CocktailBars .Include(c => c.Cocktail) .Skip(8).Take(8) .ToListAsync(); var dbBar = await context.Bars.FirstOrDefaultAsync(); var result = await sut.GetCocktailsAsync(dbBar.Id, "1", "8", null, true); Assert.AreEqual(result.Count(), dbResult.Count()); foreach (var item in dbResult) { Assert.IsNotNull(result.FirstOrDefault(r => r.Name == item.Cocktail.Name)); } } }
public async Task ThrowArgumentException_WhenParametersIncorrect() { //Arrange var options = Utils.GetOptions(nameof(ThrowArgumentException_WhenParametersIncorrect)); var record = new Bar() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17.", Country = "България.", District = "Лозенец.", Email = "*****@*****.**", Phone = "088888888.", Town = "София.", LocationId = null, }; var cocktailList = new List <Cocktail>(); for (int i = 1; i <= 20; i++) { var cocktail = new Cocktail() { Name = "BestCocktail" + i, Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, IsAlcoholic = false }; cocktailList.Add(cocktail); } using (var context = new BCcontext(options)) { await context.Bars.AddAsync(record); await context.Cocktails.AddRangeAsync(cocktailList); await context.SaveChangesAsync(); var bar = await context.Bars.FirstOrDefaultAsync(); var cocktails = await context.Cocktails.ToListAsync(); foreach (var item in cocktails) { var join = new CocktailBar() { Bar = bar, Cocktail = item, }; await context.CocktailBars.AddAsync(join); } await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); coctailMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Cocktail>())) .Returns((Cocktail b) => new CocktailDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, IsAlcoholic = b.IsAlcoholic }); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var dbBar = await context.Bars.FirstOrDefaultAsync(); await Assert.ThrowsExceptionAsync <ArgumentException>(async() => await sut.GetCocktailsAsync(dbBar.Id, string.Empty, "8", null, true)); } }
public async Task ReturnUndeletedRecords_IfNotAdmin() { //Arrange var options = Utils.GetOptions(nameof(ReturnUndeletedRecords_IfNotAdmin)); var barList = new List <Bar>(); for (int i = 1; i <= 20; i++) { var bar = new Bar() { Name = "BestBar" + i, Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Street " + i, Country = "България", District = "District " + i, Email = "*****@*****.**", Phone = "+ " + i + "8888888", Town = "София", LocationId = null, }; if (i % 2 == 0) { bar.IsDeleted = true; } barList.Add(bar); } using (var context = new BCcontext(options)) { await context.Bars.AddRangeAsync(barList); await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var result = await sut.GetAllAsync("0", "20", string.Empty, "asc", false); Assert.AreEqual(result.Count(), 10); Assert.AreEqual(result.Any(b => b.IsDeleted == true), false); } }
public async Task ReturnBarDTO_WhenGetSuccesfull() { //Arrange var options = Utils.GetOptions(nameof(ReturnBarDTO_WhenGetSuccesfull)); var record = new Bar() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17.", Country = "България.", District = "Лозенец.", Email = "*****@*****.**", Phone = "088888888.", Town = "София.", LocationId = null, }; using (var context = new BCcontext(options)) { await context.Bars.AddAsync(record); await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var dbResult = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar"); var result = await sut.GetAsync(dbResult.Id); Assert.IsInstanceOfType(result, typeof(BarDTO)); } }
public async Task ChangeRating_IfAlreadyRatedButNotTimesRated() { //Arrange var options = Utils.GetOptions(nameof(ChangeRating_IfAlreadyRatedButNotTimesRated)); var record = new Bar() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17.", Country = "България.", District = "Лозенец.", Email = "*****@*****.**", Phone = "088888888.", Town = "София.", LocationId = null, }; var user = new User() { UserName = "******", Email = "*****@*****.**", PasswordHash = "pass", }; using (var context = new BCcontext(options)) { await context.Bars.AddAsync(record); await context.Users.AddAsync(user); await context.SaveChangesAsync(); var barRating = new UserBarRating(); barRating.Bar = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar"); barRating.User = await context.Users.FirstOrDefaultAsync(u => u.UserName == "UserName"); barRating.Rating = 4; await context.BarRatings.AddAsync(barRating); await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var dbResult = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar"); var dbUser = await context.Users.FirstOrDefaultAsync(u => u.UserName == "UserName"); var result = await sut.RateBarAsync(dbResult.Id, dbUser.Id, 2); dbResult = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar"); Assert.AreEqual(dbResult.TimesRated, 1); Assert.AreEqual(dbResult.Rating, 2); } }
public async Task RemoveCocktail_WhenSuccessful() { //Arrange var options = Utils.GetOptions(nameof(RemoveCocktail_WhenSuccessful)); var record = new Bar() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17.", Country = "България.", District = "Лозенец.", Email = "*****@*****.**", Phone = "088888888.", Town = "София.", LocationId = null, }; var cocktail1 = new Cocktail() { Name = "SomeCocktail", Rating = 3, TimesRated = 1, ImageSrc = null, IsDeleted = false, }; var cocktail2 = new Cocktail() { Name = "SomeOtherCocktail", Rating = 3, TimesRated = 1, ImageSrc = null, IsDeleted = false, }; using (var context = new BCcontext(options)) { await context.Cocktails.AddAsync(cocktail1); await context.Cocktails.AddAsync(cocktail2); await context.Bars.AddAsync(record); await context.SaveChangesAsync(); var conection1 = new CocktailBar() { Cocktail = await context.Cocktails.FirstOrDefaultAsync(c => c.Name == "SomeCocktail"), Bar = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar") }; var conection2 = new CocktailBar() { Cocktail = await context.Cocktails.FirstOrDefaultAsync(c => c.Name == "SomeOtherCocktail"), Bar = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar") }; await context.CocktailBars.AddAsync(conection1); await context.CocktailBars.AddAsync(conection2); await context.SaveChangesAsync(); } var bar = new BarDTO() { Name = "BestBarAgain", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17", Country = "България", District = "Лозенец", Email = "*****@*****.**", Phone = "088888888", Town = "София", Cocktails = new List <CocktailBarDTO>() }; var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); mockMapper.Setup((x) => x.MapDTOToEntity(It.IsAny <BarDTO>())) .Returns((BarDTO b) => new Bar() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town, }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var contextCoctail1 = await context.Cocktails.FirstOrDefaultAsync(c => c.Name == "SomeCocktail"); var cocktailBarDTO1 = new CocktailBarDTO() { CocktailId = contextCoctail1.Id, CocktailName = contextCoctail1.Name, Remove = false }; var contextCoctail2 = await context.Cocktails.FirstOrDefaultAsync(c => c.Name == "SomeOtherCocktail"); var cocktailBarDTO2 = new CocktailBarDTO() { CocktailId = contextCoctail2.Id, CocktailName = contextCoctail2.Name, Remove = true }; bar.Cocktails.Add(cocktailBarDTO1); bar.Cocktails.Add(cocktailBarDTO2); var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var dbResultOld = await context.Bars.FirstOrDefaultAsync(b => b.Name == "BestBar"); var result = await sut.UpdateAsync(dbResultOld.Id, bar); var dbResult = await context.Bars.Include(b => b.Cocktails).FirstOrDefaultAsync(b => b.Name == "BestBarAgain"); Assert.AreEqual(dbResult.Name, bar.Name); Assert.AreEqual(dbResult.Rating, bar.Rating); Assert.AreEqual(dbResult.TimesRated, bar.TimesRated); Assert.AreEqual(dbResult.ImageSrc, bar.ImageSrc); Assert.AreEqual(dbResult.IsDeleted, bar.IsDeleted); Assert.AreEqual(dbResult.Address, bar.Address); Assert.AreEqual(dbResult.Country, bar.Country); Assert.AreEqual(dbResult.District, bar.District); Assert.AreEqual(dbResult.Email, bar.Email); Assert.AreEqual(dbResult.Phone, bar.Phone); Assert.AreEqual(dbResult.Town, bar.Town); Assert.AreEqual(dbResult.Cocktails.Count(), 1); Assert.AreEqual(dbResult.Cocktails.Where(c => c.CocktailId == contextCoctail1.Id).Count(), 1); } }
public async Task RecordsBar_WhenBarDoesntExist() { //Arrange var options = Utils.GetOptions("RecordsBar_WhenBarDoesntExist"); using (var context = new BCcontext(options)) { } var bar = new BarDTO() { Name = "BestBar", Rating = 4, TimesRated = 1, ImageSrc = null, IsDeleted = false, Address = "Галичица 17", Country = "България", District = "Лозенец", Email = "*****@*****.**", Phone = "088888888", Town = "София" }; var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); mockMapper.Setup((x) => x.MapDTOToEntity(It.IsAny <BarDTO>())) .Returns((BarDTO b) => new Bar() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); await sut.CreateAsync(bar); var dbResult = await context.Bars.FirstOrDefaultAsync(x => x.Name == bar.Name); Assert.AreEqual(dbResult.Name, bar.Name); Assert.AreEqual(dbResult.Rating, bar.Rating); Assert.AreEqual(dbResult.TimesRated, bar.TimesRated); Assert.AreEqual(dbResult.ImageSrc, bar.ImageSrc); Assert.AreEqual(dbResult.IsDeleted, bar.IsDeleted); Assert.AreEqual(dbResult.Address, bar.Address); Assert.AreEqual(dbResult.Country, bar.Country); Assert.AreEqual(dbResult.District, bar.District); Assert.AreEqual(dbResult.Email, bar.Email); Assert.AreEqual(dbResult.Phone, bar.Phone); Assert.AreEqual(dbResult.Town, bar.Town); } }
public async Task ReturnsMostRatedInOrderOfRating() { var options = Utils.GetOptions(nameof(ReturnsMostRatedInOrderOfRating)); var barList = new List <Bar>(); for (int i = 1; i <= 3; i++) { var bar = new Bar() { Name = "BestBar" + i, Rating = 3, TimesRated = i, ImageSrc = null, IsDeleted = false, Address = "Street " + i, Country = "България", District = "District " + i, Email = "*****@*****.**", Phone = "+ " + i + "8888888", Town = "София", LocationId = null, }; barList.Add(bar); } using (var context = new BCcontext(options)) { await context.Bars.AddRangeAsync(barList); await context.SaveChangesAsync(); } var mockMapper = new Mock <IBarMapper>(); mockMapper.Setup((x) => x.MapEntityToDTO(It.IsAny <Bar>())) .Returns((Bar b) => new BarDTO() { Id = b.Id, Name = b.Name, Rating = b.Rating, TimesRated = b.TimesRated, ImageSrc = b.ImageSrc, IsDeleted = b.IsDeleted, Address = b.Address, Country = b.Country, District = b.District, Email = b.Email, LocationId = b.LocationId, Phone = b.Phone, Town = b.Town }); var http = new Mock <IHttpClientFactory>(); var coctailMapper = new Mock <ICocktailMapper>(); //Act & Assert using (var context = new BCcontext(options)) { var sut = new BarsService(context, mockMapper.Object, http.Object, coctailMapper.Object); var result = await sut.GetBestBarsAsync(); var ordered = result.OrderBy(o => o.TimesRated).ThenByDescending(o => o.Rating).ToList(); Assert.AreEqual(result.Count(), 3); CollectionAssert.AreEqual(result.ToList(), ordered); } }