コード例 #1
0
        public void ShouldReturnAllFoos()
        {
            //Arrange
            var context = new TestDataContext(Settings.Default.Connection, new FooMappingConfiguration(),
                                              new ConsoleOutLogger("Test", LogLevel.All, true, true, true, string.Empty));

            var item  = new Foo();
            var item2 = new Foo();

            context.Add(item);
            context.Add(item2);
            context.Commit();
            var expectedCount = context.AsQueryable <Foo>().Count();

            var target = Data.Queries.FindAll <Foo>();

            //Act
            var results = target.Execute(context);

            //Assert
            Assert.AreEqual(results.Count(), expectedCount);
            context.Remove(item);
            context.Remove(item2);
            context.Commit();
        }
コード例 #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 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;
                }
            }
        }
コード例 #4
0
        public async Task DeveAtualizarPessoa()
        {
            var pessoa = new Pessoa
            {
                Nome    = "nova pessoa",
                Twitter = "novo twitter"
            };

            TestDataContext.Add(pessoa);
            TestDataContext.SaveChanges();

            var data = TestDataContext.Pessoas.Where(c => c.Nome == pessoa.Nome && c.Twitter == pessoa.Twitter).FirstOrDefault();

            data.Nome    = "pessoa alterada";
            data.Twitter = "twitter alterado";

            var strPessoa   = JsonConvert.SerializeObject(data);
            var httpContent = new StringContent(strPessoa, Encoding.UTF8, "application/json");

            var response = await Client.PutAsync(BaseUrl, httpContent);

            response.EnsureSuccessStatusCode();

            Assert.Equal("OK", response.StatusCode.ToString());

            var pessoaAlterada = TestDataContext.Pessoas.Where(c => c.Nome == data.Nome && c.Twitter == data.Twitter).FirstOrDefault();

            Assert.NotNull(pessoaAlterada);
        }
コード例 #5
0
        public void Should_Add_log_messages_for_add()
        {
            //Arrange
            Database.SetInitializer(new DropCreateInitializer <TestDataContext>());
            var logger = MockRepository.GenerateMock <ILog>();

            logger.Expect(x => x.TraceFormat(Arg <string> .Is.Anything, Arg <object[]> .Is.Anything)).IgnoreArguments().
            Repeat.Once();
            logger.Expect(x => x.DebugFormat(Arg <string> .Is.Anything, Arg <object[]> .Is.Anything)).IgnoreArguments().
            Repeat.Once();
            var context = new TestDataContext(Settings.Default.Connection, new FooMappingConfiguration(), logger);

            //Act
            context.Add(new Foo());

            //Assert
            logger.VerifyAllExpectations();
        }
コード例 #6
0
        public void ShouldReturnFoo()
        {
            //Arrange
            var context = new TestDataContext(Settings.Default.Connection, new FooMappingConfiguration(),
                                              new ConsoleOutLogger("Test", LogLevel.All, true, true, true, string.Empty));

            var item = new Foo();

            context.Add(item);
            context.Commit();

            var target = Data.Queries.GetById <Foo>(item.Id);

            //Act
            var result = target.Execute(context);

            //Assert
            Assert.AreEqual(item.Id, result.Id);
            context.Remove(result);
            context.Commit();
        }
コード例 #7
0
        public void TestMethod1()
        {
            var options = new DbContextOptionsBuilder <TestDataContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_database")
                          .Options;

            using (var context = new TestDataContext(options))
            {
                var streamingUser = new StreamingUser()
                {
                    UserName     = "******",
                    PasswordSalt = "testUser" + Guid.NewGuid().ToString(),
                };

                var streamingUser1 = new StreamingUser()
                {
                    UserName     = "******",
                    PasswordSalt = "testUser1" + Guid.NewGuid().ToString(),
                };

                var streamingUser2 = new StreamingUser()
                {
                    UserName     = "******",
                    PasswordSalt = "testUser2" + Guid.NewGuid().ToString(),
                };

                // Add new entity.
                context.Add(streamingUser);
                context.AddRange(new[] { streamingUser1, streamingUser2 }.ToList <StreamingUser>());
                context.SaveChanges();

                var q = from su in context.Get <StreamingUser>()
                        where su.Id == streamingUser.Id ||
                        su.Id == streamingUser1.Id ||
                        su.Id == streamingUser2.Id
                        select su;

                Console.WriteLine("IDataContext addnew test");
                Assert.IsTrue(q.Count() == 3);

                // Update entity.
                streamingUser.UserName = "******";
                context.Update(streamingUser);

                streamingUser1.UserName = "******";
                context.UpdateRange(new[] { streamingUser1 }.ToList <StreamingUser>());
                context.Update <StreamingUser>(x => x.Id == streamingUser2.Id, x => { x.UserName = "******"; });
                context.SaveChanges();

                var qUpdateCheck = from su in context.Get <StreamingUser>()
                                   where   su.UserName == "1" ||
                                   su.UserName == "2" ||
                                   su.UserName == "3"
                                   select su;
                Console.WriteLine("IDataContext update test");
                Assert.IsTrue(qUpdateCheck.Count() == 3);

                // Delete entry test.
                context.Delete(streamingUser);
                context.DeleteRange(new[] { streamingUser1 }.ToList <StreamingUser>());
                context.Delete <StreamingUser>(x => x.UserName == "3");
                context.SaveChanges();

                Console.WriteLine("IDataContext delete test");
                Assert.IsTrue(!context.Get <StreamingUser>().Any());
            }
        }