public void Find_given_id_exists_returns_dto()
        {
            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseInMemoryDatabase(databaseName: nameof(Find_given_id_exists_returns_dto));
            var options = builder.Options;

            using (var context = new FuturamaContext(options))
            {
                var entity = new Character
                {
                    Name    = "Fry",
                    Species = "Human",
                    Planet  = "Earth",
                    Actor   = new Actor {
                        Name = "Billy West"
                    }
                };
                context.Characters.Add(entity);
                context.SaveChanges();
            }
            using (var context = new FuturamaContext(options))
            {
                var repository = new CharacterRepository(context);

                var character = repository.Find(1);

                Assert.Equal(1, character.Id);
                Assert.Equal("Fry", character.Name);
                Assert.Equal("Human", character.Species);
                Assert.Equal("Earth", character.Planet);
                Assert.Equal(1, character.ActorId);
                Assert.Equal("Billy West", character.ActorName);
            }
        }
        public CharacterRepositoryTests()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseSqlite(connection);

            _context = new FuturamaContext(builder.Options);
            _context.Database.EnsureCreated();

            var actor = new Actor {
                Name = "Billy West"
            };
            var episode = new Episode {
                Title = "Episode no. 1"
            };
            var episodeCharacter = new EpisodeCharacter();
            var episodes         = new[] { episodeCharacter };
            var character        = new Character {
                Name = "Fry", Species = "Human", Actor = actor, Episodes = episodes
            };

            episodeCharacter.Characters = character;
            episodeCharacter.Episode    = episode;
            _context.Characters.Add(character);
            _context.SaveChanges();
        }
        private async Task <IFuturamaContext> CreateContextAsync(DbConnection connection)
        {
            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseSqlite(connection);

            var context = new FuturamaContext(builder.Options);
            await context.Database.EnsureCreatedAsync();

            return(context);
        }
Exemple #4
0
        public async Task Find_given_non_existing_id_returns_null()
        {
            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseInMemoryDatabase(nameof(Find_given_non_existing_id_returns_null));

            using (var context = new FuturamaContext(builder.Options))
                using (var repository = new EntityFrameworkCharacterRepository(context))
                {
                    var character = await repository.FindAsync(42);

                    Assert.Null(character);
                }
        }
Exemple #5
0
        public async Task Find_given_existing_id_returns_mapped_CharacterDTO()
        {
            using (var connection = new SqliteConnection("DataSource=:memory:"))
            {
                connection.Open();

                var builder = new DbContextOptionsBuilder <FuturamaContext>()
                              .UseSqlite(connection);

                var context = new FuturamaContext(builder.Options);
                await context.Database.EnsureCreatedAsync();

                var entity = new Character
                {
                    Name    = "Name",
                    Species = "Species",
                    Planet  = "Planet",
                    Image   = "Image",
                    Actor   = new Actor {
                        Name = "Actor"
                    },
                    Episodes = new[] { new EpisodeCharacter {
                                           Episode = new Episode {
                                               Title = "Episode 1"
                                           }
                                       }, new EpisodeCharacter {
                                           Episode = new Episode {
                                               Title = "Episode 2"
                                           }
                                       } }
                };

                context.Characters.Add(entity);
                await context.SaveChangesAsync();

                var id = entity.Id;

                using (var repository = new EntityFrameworkCharacterRepository(context))
                {
                    var character = await repository.FindAsync(id);

                    Assert.Equal("Name", character.Name);
                    Assert.Equal("Species", character.Species);
                    Assert.Equal("Planet", character.Planet);
                    Assert.Equal("Image", character.Image);
                    Assert.Equal("Actor", character.ActorName);
                    Assert.Equal(2, character.NumberOfEpisodes);
                }
            }
        }
        public IFuturamaContext CreateInMemoryDatabase()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseSqlite(connection);

            var context = new FuturamaContext(builder.Options);

            context.Database.EnsureCreated();

            return(context);
        }
        public void Find_given_id_exists_returns_dto_with_episodeCount()
        {
            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseInMemoryDatabase(databaseName: nameof(Find_given_id_exists_returns_dto_with_episodeCount));
            var options = builder.Options;

            int id;

            using (var context = new FuturamaContext(options))
            {
                var episode1 = new Episode {
                    Title = "Space Pilot 3000"
                };
                var episode2 = new Episode {
                    Title = "The Series Has Landed"
                };

                var character = new Character
                {
                    EpisodeCharacters = new[]
                    {
                        new EpisodeCharacter {
                            Episode = episode1
                        },
                        new EpisodeCharacter {
                            Episode = episode2
                        }
                    }
                };

                context.Characters.Add(character);
                context.SaveChanges();

                id = character.Id;
            }

            using (var context = new FuturamaContext(options))
            {
                var repository = new CharacterRepository(context);

                var dto = repository.Find(id);

                Assert.Equal(2, dto.NumberOfEpisodes);
            }
        }
Exemple #8
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, FuturamaContext context)
        {
            context.Database.Migrate();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });

            app.UseHttpsRedirection();
            app.UseMvc();
        }
Exemple #9
0
        public async Task Read_returns_mapped_CharacterDTO()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var builder = new DbContextOptionsBuilder <FuturamaContext>()
                          .UseSqlite(connection);

            var context = new FuturamaContext(builder.Options);

            context.Database.EnsureCreated();

            var entity = new Character
            {
                Name    = "Name",
                Species = "Species",
                Actor   = new Actor {
                    Name = "Actor"
                }
            };

            context.Characters.Add(entity);
            await context.SaveChangesAsync();

            var id = entity.Id;

            using (var repository = new EntityFrameworkCharacterRepository(context))
            {
                var characters = await repository.ReadAsync();

                var character = characters.Single();

                Assert.Equal("Name", character.Name);
                Assert.Equal("Actor", character.ActorName);
            }
        }