public void Questionnaire_Repo_Integration_Tests() { // arrange var q1 = questionnaire(default(int)); var q2 = questionnaire(default(int)); // act :: insert _repo.Save(q1); _repo.Save(q2); _context.SaveChanges(); // assert :: insert Assert.AreNotEqual(q1.QuestionnaireId, default(int)); // act :: select_by_id var fromDb = _repo.GetById(q1.QuestionnaireId); Assert.AreEqual(fromDb.QuestionnaireId, q1.QuestionnaireId); Assert.AreEqual(fromDb.Name, q1.Name); Assert.AreEqual(fromDb.Description, q1.Description); Assert.AreEqual(fromDb.CreatedDate, q1.CreatedDate); // act :: update fromDb.Name = "foo bar"; fromDb.CreatedDate = DateTime.Parse("2018-02-11"); fromDb.Description = "foo bar"; var question = fromDb.Questions.First(); fromDb.Questions.Remove(question); fromDb.Questions.Add(new Question { QuestionText = "New Question" }); _repo.Save(fromDb); _context.SaveChanges(); // assert :: update var updatedFromDb = _repo.GetById(fromDb.QuestionnaireId); Assert.AreEqual(updatedFromDb.QuestionnaireId, q1.QuestionnaireId); Assert.AreEqual(updatedFromDb.Name, "foo bar"); Assert.AreEqual(updatedFromDb.Description, "foo bar"); Assert.AreEqual(updatedFromDb.CreatedDate, DateTime.Parse("2018-02-11")); Assert.AreEqual(updatedFromDb.Questions.ElementAtOrDefault(0).QuestionText, "New Question"); // arrange var entities = _repo .Where(entity => entity.QuestionnaireId == q1.QuestionnaireId) .ToList(); Assert.IsNotNull(entities); Assert.AreEqual(entities.Count, 1); // act :: deleteWhere _repo.DeleteWhere(entity => entity.QuestionnaireId == q1.QuestionnaireId); _context.SaveChanges(); // assert :: deleteWhere var deletedEntity = _repo.GetById(q1.QuestionnaireId); Assert.IsNull(deletedEntity); // assert :: no exception for deleteWhere (where predicate returns false) _repo.DeleteWhere(entity => false); // arrange :: delete var toBeDeletedEntity = _repo.GetAll().ElementAtOrDefault(0); // act Assert.IsNotNull(toBeDeletedEntity); _repo.Delete(toBeDeletedEntity); _context.SaveChanges(); // assert deletedEntity = _repo.GetById(toBeDeletedEntity.QuestionnaireId); Assert.IsNull(deletedEntity); }