public async Task <BreakfastItem> Post([FromBody] CreateOrUpdateBreakfastItemRequest request)
        {
            var item = new BreakfastItem
            {
                Name   = request.Name,
                Rating = request.Rating
            };
            await _context.BreakfastItems.AddAsync(item);

            await _context.SaveChangesAsync();

            return(item);
        }
        public async Task When_adding()
        {
            using var fixture = await MongoTestFixture.NewAsync(_output);

            var entity = new BreakfastItem {
                Name = "Eggs"
            };
            await fixture.Repository.AddAsync(entity);

            var added = await fixture.Repository.GetAsync(entity.Id);

            added.Should().BeEquivalentTo(entity);
        }
        public async Task When_replacing()
        {
            using var fixture = await MongoTestFixture.NewAsync(_output);

            var entity = new BreakfastItem
            {
                Id   = BreakfastItemEntityConfiguration.Seed.Id,
                Name = "Eggs"
            };
            var result = await fixture.Repository.ReplaceAsync(entity);

            var replaced = await fixture.Repository.GetAsync(BreakfastItemEntityConfiguration.Seed.Id);

            result.Should().BeEquivalentTo(entity);
            replaced.Should().BeEquivalentTo(entity);
        }
        public async Task When_patching_breakfast_item()
        {
            var fixture = new MvcFunctionalTestFixture <Startup>(_output);
            var item    = fixture.Create <BreakfastItem>();

            var request = fixture.AutoFixture.Build <CreateOrUpdateBreakfastItemRequest>()
                          .Without(x => x.Rating)        // do not patch rating.
                          .Create();

            var expected = new BreakfastItem
            {
                Id     = item.Id,
                Rating = item.Rating,
                Name   = request.Name              // only name should have changed.
            };

            await fixture.HavingConfiguredApiClient()
            .HavingDatabaseWithBreakfastItems(item)
            .WhenPatching(EntityNames.BreakfastItem, item.Id, request)
            .ShouldReturnSuccessfulStatus()
            .ShouldReturnBreakfastItem(expected)
            .BreakfastItemShouldExistInDatabase(expected)
            .RunAsync();
        }
Exemple #5
0
 /// <summary>
 /// Configures the mock breakfast item repository to return a relevant breakfast item
 /// when called with the specified breakfast item type.
 /// </summary>
 public static ITestFixture HavingBreakfastItem(this ITestFixture fixture, BreakfastItemType type, out BreakfastItem item) =>
 fixture.HavingMockedAsync <IBreakfastItemRepository, BreakfastItem>(x => x.GetBreakfastItemAsync(type),
                                                                     out item,
                                                                     (f, m) =>
 {
     m.Type = type;
     m.Name = type.ToString();
 });
 public static IMvcFunctionalTestFixture HavingDatabaseWithSingleBreakfastItem(this IMvcFunctionalTestFixture fixture, out BreakfastItem item)
 {
     item = fixture.Create <BreakfastItem>();
     return(fixture.HavingDatabaseWithBreakfastItems(item));
 }
 public static IMvcFunctionalTestFixture BreakfastItemShouldExistInDatabase(this IMvcFunctionalTestFixture fixture, BreakfastItem expected) =>
 fixture.ShouldExistInDatabase <BreakfastContext, BreakfastItem>(expected.Id,
                                                                 existing => existing.Id.Should().Be(expected.Id),
                                                                 existing => existing.Name.Should().Be(expected.Name),
                                                                 existing => existing.Rating.Should().Be(expected.Rating));
 public static IMvcFunctionalTestFixture ShouldReturnBreakfastItem(this IMvcFunctionalTestFixture fixture, BreakfastItem expected) =>
 fixture.ShouldReturnJson <BreakfastItem>(r => r.Id.Should().Be(expected.Id),
                                          r => r.Name.Should().Be(expected.Name),
                                          r => r.Rating.Should().Be(expected.Rating));