public void ParallelQueries_Always_Crash() { // Arrange var user = RandomDataEntityGenerator.CreateUserWithRandomData(); for (int postIndex = 0; postIndex < 10; postIndex++) { var post = RandomDataEntityGenerator.CreatePostWithRandomData(false); user.Posts.Add(post); } TestDataContext.Add(user); TestDataContext.SaveChanges(); // Act / Assert using (var dbContext = CreateTestDataContext()) { var postsQuery = dbContext.Posts; foreach (var post in postsQuery) { // throws an error because same transaction is used = command is already in progress Assert.ThrowsException <NpgsqlOperationInProgressException>(() => { var firstName = post.User.FirstName; }); var posText = post.Text; } } }
public void ParallelQueries_OtherContext_ShouldBeOK() { // Arrange var user = RandomDataEntityGenerator.CreateUserWithRandomData(); for (int postIndex = 0; postIndex < 10; postIndex++) { var post = RandomDataEntityGenerator.CreatePostWithRandomData(false); user.Posts.Add(post); } TestDataContext.Add(user); TestDataContext.SaveChanges(); // Act / Assert using (DataContext context = CreateTestDataContext() , context2 = CreateTestDataContext()) { var postsQuery = context.Posts; foreach (var post in postsQuery) { context2.Attach(post).Reference(x => x.User).Load(); var firstName = post.User.FirstName; var postText = post.Text; } } }
public void GetAllCommentsCreatedInTimeRange_SomeAreOutOfRange_CorrectDataReturned() { // Arrange var until = DateTime.Now; var from = until.AddDays(-5); var outOfRangeComment = RandomDataEntityGenerator.CreateCommentWithRandomData(); outOfRangeComment.CreatedDateTime = until.AddMinutes(1); var comment2 = RandomDataEntityGenerator.CreateCommentWithRandomData(); comment2.CreatedDateTime = from.AddDays(2); var outOfRangeComment1 = RandomDataEntityGenerator.CreateCommentWithRandomData(); outOfRangeComment1.CreatedDateTime = from.AddMinutes(-1); TestDataContext.Comments.AddRange(new[] { outOfRangeComment, comment2, outOfRangeComment1 }); TestDataContext.SaveChanges(); // Act var result = _SUT.GetCommentsCreatedInRange(from, until); // Assert Assert.AreEqual(1, result.Count); }
public void GetAllCommentsCreatedInTimeRange_WhenAllInInclusiveRange_CorrectDataReturned() { // Arrange var until = DateTime.Now; var from = until.AddDays(-5); var comment1 = RandomDataEntityGenerator.CreateCommentWithRandomData(); comment1.CreatedDateTime = until; var comment2 = RandomDataEntityGenerator.CreateCommentWithRandomData(); comment2.CreatedDateTime = from.AddDays(2); var comment3 = RandomDataEntityGenerator.CreateCommentWithRandomData(); comment3.CreatedDateTime = from; TestDataContext.Comments.AddRange(new[] { comment1, comment2, comment3 }); TestDataContext.SaveChanges(); // Act var result = _SUT.GetCommentsCreatedInRange(from, until); // Assert Assert.AreEqual(3, result.Count); }
public void GetPostsWithCommentsCreatedInRange_WhenMultipleCommentsPerPost_CorrectAmountReturned() { // Arrange var until = DateTime.Now.AddDays(-1); var from = until.AddDays(-5); var user = RandomDataEntityGenerator.CreateUserWithRandomData(); var post = RandomDataEntityGenerator.CreatePostWithRandomData(false); post.User = user; post.CreatedTime = from.AddDays(1); var comment1 = RandomDataEntityGenerator.CreateCommentWithRandomData(false); comment1.User = user; comment1.Post = post; var comment2 = RandomDataEntityGenerator.CreateCommentWithRandomData(false); comment2.User = user; comment2.Post = post; TestDataContext.Comments.AddRange(new[] { comment1, comment2 }); TestDataContext.SaveChanges(); // Act var result = _SUT.GetPostsWithCommentsCreatedInRange(from, until); // Assert Assert.AreEqual(1, result.Count()); }
public void LazyLoad_ForeignKeyNotNullable_FetchesProperly() { // Arrange var comment = RandomDataEntityGenerator.CreateCommentWithRandomData(); using (var dbContext = CreateTestDataContext()) { dbContext.Comments.Add(comment); dbContext.SaveChanges(); } // Act var dbComment = TestDataContext.Comments.Find(comment.Id); // lazy loading var post = dbComment.Post; // second level var userOfPost = post.User; // Assert Assert.IsNotNull(post); Assert.IsNotNull(userOfPost); }
public void SaveAndLoad_AllDataShouldBePresent() { // Arrange var memoryUser = RandomDataEntityGenerator.CreateUserWithRandomData(); // Act using (var dbContext = CreateTestDataContext()) { dbContext.Users.Add(memoryUser); dbContext.SaveChanges(); } var databaseUser = TestDataContext.Users.FirstOrDefault(u => u.Id == memoryUser.Id); // Assert Assert.IsNotNull(databaseUser); Assert.AreEqual(memoryUser.FirstName, databaseUser.FirstName); Assert.AreEqual(memoryUser.Surname, databaseUser.Surname); Assert.AreEqual(memoryUser.Birthdate, databaseUser.Birthdate); Assert.AreEqual(memoryUser.Email, databaseUser.Email); }
public void GetPostsWithCommentsCreatedInRange_WhenAllInExclusiveRange_CorrectDataReturned() { // Arrange var until = DateTime.Now.AddDays(-1); var from = until.AddDays(-5); var comment1 = RandomDataEntityGenerator.CreateCommentWithRandomData(); var comment2 = RandomDataEntityGenerator.CreateCommentWithRandomData(); var comment3 = RandomDataEntityGenerator.CreateCommentWithRandomData(); TestDataContext.Comments.AddRange(new[] { comment1, comment2, comment3 }); TestDataContext.SaveChanges(); // Act var result = _SUT.GetPostsWithCommentsCreatedInRange(from, until); // Assert Assert.IsNotNull(result.FirstOrDefault(c => c.Id == comment1.PostId)); Assert.IsNotNull(result.FirstOrDefault(c => c.Id == comment2.PostId)); Assert.IsNotNull(result.FirstOrDefault(c => c.Id == comment3.PostId)); }
public void Delete_ResultShouldBeNull() { // Arrange var memoryUser = RandomDataEntityGenerator.CreateUserWithRandomData(); using (var dbContext = CreateTestDataContext()) { dbContext.Users.Add(memoryUser); dbContext.SaveChanges(); } // Act using (var dbContext = CreateTestDataContext()) { var user = TestDataContext.Users.FirstOrDefault(u => u.Id == memoryUser.Id); dbContext.Users.Remove(user); dbContext.SaveChanges(); } var databaseUser = TestDataContext.Users.FirstOrDefault(u => u.Id == memoryUser.Id); // Assert Assert.IsNull(databaseUser); }