public void AddIngredient_NewRecordAddedWithProperValues() { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredient = new FakeIngredient { }.Generate(); //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); service.AddIngredient(fakeIngredient); context.SaveChanges(); } //Assert using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.Count().Should().Be(1); var ingredientById = context.Ingredients.FirstOrDefault(i => i.IngredientId == fakeIngredient.IngredientId); ingredientById.Should().BeEquivalentTo(fakeIngredient); ingredientById.IngredientId.Should().Be(fakeIngredient.IngredientId); ingredientById.Name.Should().Be(fakeIngredient.Name); ingredientById.Unit.Should().Be(fakeIngredient.Unit); ingredientById.Amount.Should().Be(fakeIngredient.Amount); } }
public void GetIngredients_FilterListWithExact(string filters) { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredientOne = new FakeIngredient { }.Generate(); fakeIngredientOne.Name = "Alpha"; fakeIngredientOne.Unit = "Bravo"; fakeIngredientOne.RecipeId = 5; var fakeIngredientTwo = new FakeIngredient { }.Generate(); fakeIngredientTwo.Name = "Charlie"; fakeIngredientTwo.Unit = "Delta"; fakeIngredientTwo.RecipeId = 6; var fakeIngredientThree = new FakeIngredient { }.Generate(); fakeIngredientThree.Name = "Echo"; fakeIngredientThree.Unit = "Foxtrot"; fakeIngredientThree.RecipeId = 7; //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree); context.SaveChanges(); var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); var ingredientRepo = service.GetIngredients(new IngredientParametersDto { Filters = filters }); //Assert ingredientRepo.Should() .HaveCount(1); context.Database.EnsureDeleted(); } }
public void GetIngredients_SearchQueryReturnsExpectedRecordCount(string queryString, int expectedCount) { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredientOne = new FakeIngredient { }.Generate(); fakeIngredientOne.Name = "Alpha"; fakeIngredientOne.Unit = "Bravo"; var fakeIngredientTwo = new FakeIngredient { }.Generate(); fakeIngredientTwo.Name = "Hartsfield"; fakeIngredientTwo.Unit = "White"; var fakeIngredientThree = new FakeIngredient { }.Generate(); fakeIngredientThree.Name = "Bravehart"; fakeIngredientThree.Unit = "Jonfav"; //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree); context.SaveChanges(); var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); var ingredientRepo = service.GetIngredients(new IngredientParametersDto { QueryString = queryString }); //Assert ingredientRepo.Should() .HaveCount(expectedCount); context.Database.EnsureDeleted(); } }
public void GetIngredients_ListSortedInDescOrder() { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredientOne = new FakeIngredient { }.Generate(); fakeIngredientOne.Name = "Bravo"; var fakeIngredientTwo = new FakeIngredient { }.Generate(); fakeIngredientTwo.Name = "Alpha"; var fakeIngredientThree = new FakeIngredient { }.Generate(); fakeIngredientThree.Name = "Charlie"; //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree); context.SaveChanges(); var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); var ingredientRepo = service.GetIngredients(new IngredientParametersDto { SortOrder = "-Name" }); //Assert ingredientRepo.Should() .ContainInOrder(fakeIngredientThree, fakeIngredientOne, fakeIngredientTwo); context.Database.EnsureDeleted(); } }
public void DeleteIngredient_ReturnsProperCount() { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredientOne = new FakeIngredient { }.Generate(); var fakeIngredientTwo = new FakeIngredient { }.Generate(); var fakeIngredientThree = new FakeIngredient { }.Generate(); //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree); var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); service.DeleteIngredient(fakeIngredientTwo); context.SaveChanges(); //Assert var ingredientList = context.Ingredients.ToList(); ingredientList.Should() .NotBeEmpty() .And.HaveCount(2); ingredientList.Should().ContainEquivalentOf(fakeIngredientOne); ingredientList.Should().ContainEquivalentOf(fakeIngredientThree); Assert.DoesNotContain(ingredientList, i => i == fakeIngredientTwo); context.Database.EnsureDeleted(); } }
public void GetIngredients_ReturnExpectedPageSize() { //Arrange var dbOptions = new DbContextOptionsBuilder <CarbonKitchenDbContext>() .UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}") .Options; var sieveOptions = Options.Create(new SieveOptions()); var fakeIngredientOne = new FakeIngredient { }.Generate(); var fakeIngredientTwo = new FakeIngredient { }.Generate(); var fakeIngredientThree = new FakeIngredient { }.Generate(); //Act using (var context = new CarbonKitchenDbContext(dbOptions)) { context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree); context.SaveChanges(); var service = new IngredientRepository(context, new SieveProcessor(sieveOptions)); var ingredientRepo = service.GetIngredients(new IngredientParametersDto { PageSize = 2 }); //Assert ingredientRepo.Should() .NotBeEmpty() .And.HaveCount(2); ingredientRepo.Should().ContainEquivalentOf(fakeIngredientOne); ingredientRepo.Should().ContainEquivalentOf(fakeIngredientTwo); context.Database.EnsureDeleted(); } }
public async Task GetIngredients_ReturnsSuccessCodeAndResourceWithAccurateFields() { var fakeIngredientOne = new FakeIngredient { }.Generate(); var fakeIngredientTwo = new FakeIngredient { }.Generate(); var appFactory = _factory; using (var scope = appFactory.Services.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <CarbonKitchenDbContext>(); context.Database.EnsureCreated(); context.Ingredients.RemoveRange(context.Ingredients); context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo); context.SaveChanges(); } var client = appFactory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }); var result = await client.GetAsync($"api/v1/ingredients") .ConfigureAwait(false); var responseContent = await result.Content.ReadAsStringAsync() .ConfigureAwait(false); var response = JsonConvert.DeserializeObject <IEnumerable <IngredientDto> >(responseContent); // Assert result.StatusCode.Should().Be(200); response.Should().ContainEquivalentOf(fakeIngredientOne); response.Should().ContainEquivalentOf(fakeIngredientTwo); }