Ejemplo n.º 1
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;
                }
            }
        }
Ejemplo n.º 2
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;
                }
            }
        }
Ejemplo n.º 3
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());
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }