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 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 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 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 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); }