public void TestFindAll() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.SaveRange(new [] { new Writter { Name = "John Doe" }, new Writter { Name = "Janne Doe" }, new Writter { Name = "Dick Doe" } }); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writters = repository.FindAll(); var writtersNames = new [] { "John Doe", "Janne Doe", "Dick Doe" }; Assert.AreEqual(writters.Count(), 3); Assert.IsTrue(writtersNames.SequenceEqual(writters.Select(_ => _.Name))); } }); }
public void TestFind() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.SaveRange(new [] { new Writter { Name = "John Doe" }, new Writter { Name = "Janne Doe" }, new Writter { Name = "Dick Doe" } }); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Find(_ => _.Name.StartsWith("Dick")).FirstOrDefault(); Assert.IsNotNull(writter); Assert.AreEqual(writter.Name, "Dick Doe"); } }); }
public void TestDeleteAll() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.SaveRange(new [] { new Writter { Name = "John Doe" }, new Writter { Name = "Janne Doe" }, new Writter { Name = "Dick Doe" } }); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.DeleteAll(); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); Assert.AreEqual(repository.Count(), 0); } }); }
public void TestDeleteRelational() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = new Writter { Name = "John Doe" }; writter.Books.Add(new Book { Name = "Universe Mysteries", Pages = 42 }); repository.Save(writter); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Query().First(); repository.Delete(writter); } using (var context = new TestingDbContext(options)) { var writterRepository = new WrittersRepository(context); var bookRepository = new BooksRepository(context); Assert.AreEqual(writterRepository.Count(), 0); Assert.AreEqual(bookRepository.Count(), 0); } }); }
public void TestUpdate() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.Save(new Writter { Name = "John Doe" }); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Query().First(); writter.Name = "Janne Doe"; repository.Update(writter); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Query().First(); Assert.AreEqual(repository.Count(), 1); Assert.AreEqual(writter.Id, 1); Assert.AreEqual(writter.Name, "Janne Doe"); } }); }
public void TestSave() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); repository.Save(new Writter { Name = "John Doe" }); repository.SaveRange(new [] { new Writter { Name = "Janne Doe" }, new Writter { Name = "Dick Doe" } }); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var first = repository.Query().First(); Assert.AreEqual(repository.Count(), 3); Assert.AreEqual(first.Id, 1); Assert.AreEqual(first.Name, "John Doe"); Assert.IsTrue(first.Books.IsEmpty()); } }); }
void ExecInDatabase(Action <DbContextOptions <BaseDbContext> > action) { var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); try { var options = new DbContextOptionsBuilder <BaseDbContext>().UseSqlite(connection).Options; using (var context = new TestingDbContext(options)) { context.Database.EnsureCreated(); } action.Invoke(options); } finally { connection.Close(); } }
public void TestUpdateRelational() { ExecInDatabase((options) => { using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = new Writter { Name = "John Doe" }; writter.Books.Add(new Book { Name = "Universe Mysteries", Pages = 42 }); repository.Save(writter); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Query().Include(_ => _.Books).First(); var book = writter.Books.First(); writter.Name = "Janne Doe"; book.Name = "Stars of the Universe"; book.Pages = 1000; repository.Update(writter); } using (var context = new TestingDbContext(options)) { var repository = new WrittersRepository(context); var writter = repository.Query().Include(_ => _.Books).First(); var book = writter.Books.First(); Assert.AreEqual(repository.Count(), 1); Assert.AreEqual(writter.Id, 1); Assert.AreEqual(writter.Name, "Janne Doe"); Assert.AreEqual(book.Id, 1); Assert.AreEqual(book.Name, "Stars of the Universe"); Assert.AreEqual(book.Pages, 1000); } }); }