Пример #1
0
        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;
                }
            }
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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));
        }
Пример #9
0
        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);
        }