コード例 #1
0
    public SpeakerMeetRepositoryTestBase(ContextFixture fixture)
    {
        Context = fixture.Context;
        Context.Speakers.Add(new Speaker
        {
            Id          = Guid.NewGuid(),
            Name        = "Test Speaker 1",
            Slug        = "test-speaker-1",
            Location    = "Tampa, FL",
            Description = "Test Speaker 1 from Tampa, FL"
        });
        Context.Speakers.Add(new Speaker
        {
            Id          = Guid.NewGuid(),
            Name        = "Test Speaker 2",
            Slug        = "test-speaker-2",
            Location    = "Tampa, FL",
            Description = "Test Speaker 2 from Tampa, FL"
        });
        Context.Speakers.Add(new Speaker
        {
            Id          = Guid.NewGuid(),
            Name        = "Test Speaker 3",
            Slug        = "test-speaker-3",
            Location    = "Tampa, FL",
            Description = "Test Speaker 3 from Tampa, FL"
        });
        Context.SaveChanges();

        Repository = new SpeakerMeetRepository(Context);
    }
コード例 #2
0
        public ContextFixture()
        {
            var options = new DbContextOptionsBuilder <SpeakerMeetContext>()
                          .UseInMemoryDatabase("SpeakerMeet")
                          .Options;

            Context = new SpeakerMeetContext(options);
        }
コード例 #3
0
        public void ItExists()
        {
            var options = new DbContextOptionsBuilder <SpeakerMeetContext>()
                          .UseInMemoryDatabase("SpeakerMeetInMemory")
                          .Options;

            var context = new SpeakerMeetContext(options);

            var repository = new Repository <Speaker>(context);
        }
コード例 #4
0
 private void InitializeDbForTests(SpeakerMeetContext db)
 {
     db.Speakers.RemoveRange(db.Speakers);
     db.Speakers.Add(new Speaker
     {
         Id          = Guid.NewGuid(),
         Name        = "Test Speaker",
         Slug        = "test-speaker",
         Location    = "Tampa, FL",
         Description = "Test Speaker from Tampa, FL"
     });
     db.SaveChanges();
 }
コード例 #5
0
        public void GivenSpeakerNotFoundThenSpeakerNull()
        {
            using (var context = new SpeakerMeetContext(_options))
            {
                // Arrange
                var repository = new Repository <Speaker>(context);

                // Act
                var speaker = repository.Get(-1);

                // Assert
                Assert.Null(speaker);
            }
        }
コード例 #6
0
        public Get()
        {
            _options = new DbContextOptionsBuilder <SpeakerMeetContext>()
                       .UseInMemoryDatabase(Guid.NewGuid().ToString())
                       .Options;

            using (var context = new SpeakerMeetContext(_options))
            {
                context.Speakers.Add(new Speaker {
                    Id = 1, Name = "Test", Location = "Location"
                });
                context.SaveChanges();
            }
        }
コード例 #7
0
        public void GivenSpeakerFoundThenSpeakerReturned()
        {
            using (var context = new SpeakerMeetContext(_options))
            {
                // Arrange
                var repository = new Repository <Speaker>(context);

                // Act
                var speaker = repository.Get(1);

                // Assert
                Assert.NotNull(speaker);
                Assert.IsAssignableFrom <Speaker>(speaker);
            }
        }
コード例 #8
0
        public void GivenSpeakersThenQueryableSpeakersReturned()
        {
            using (var context = new SpeakerMeetContext(_options))
            {
                // Arrange
                var repository = new Repository <Speaker>(context);

                // Act
                var speakers = repository.GetAll();

                // Assert
                Assert.NotNull(speakers);
                Assert.IsAssignableFrom <IQueryable <Speaker> >(speakers);
            }
        }
コード例 #9
0
        public ContextFixture()
        {
            var options = new DbContextOptionsBuilder <SpeakerMeetContext>()
                          .UseInMemoryDatabase("SpeakerMeetContext")
                          .Options;

            Context = new SpeakerMeetContext(options);

            if (!Context.Speakers.Any())
            {
                Context.Speakers.Add(new Speaker {
                    Id = 1, Name = "Test", Location = "Location"
                });
                Context.SaveChanges();
            }
        }
コード例 #10
0
    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureServices(services =>
        {
            ServiceDescriptor descriptor = services.Single(
                d => d.ServiceType ==
                typeof(DbContextOptions <SpeakerMeetContext>));

            services.Remove(descriptor);

            services.AddDbContextPool <SpeakerMeetContext>(options =>
            {
                options.UseInMemoryDatabase("Default");
            });

            ServiceProvider?sp = services.BuildServiceProvider();

            using IServiceScope scope       = sp.CreateScope();
            IServiceProvider scopedServices = scope.ServiceProvider;
            SpeakerMeetContext db           = scopedServices.GetRequiredService <SpeakerMeetContext>();

            ILogger <CustomWebApplicationFactory <TStartup> > logger = scopedServices
                                                                       .GetRequiredService <ILogger <CustomWebApplicationFactory <TStartup> > >();

            db.Database.EnsureCreated();

            try
            {
                InitializeDbForTests(db);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "An error occurred seeding the " +
                                "database with test messages. Error: {Message}", ex.Message);
            }
        });
    }
コード例 #11
0
 public SpeakerMeetRepository(SpeakerMeetContext context) : base(context)
 {
 }