Пример #1
0
            public void DoWork(ISessionFactory sessions)
            {
                var provider = new SessionFactoryProviderStub(sessions);
                var cf       = new DefaultConversationFactory(provider, new FakeSessionWrapper());
                var cca      = new NhConversationsContainerAccessor(provider);

                var tc1 = cca.Container;

                tc1.Bind(cf.CreateConversation("1"));

                var dao = new SillyDao(sessions);

                tc1.SetAsCurrent("1");
                tc1.CurrentConversation.Start();
                var o = new Other3 {
                    Name = "some other silly"
                };
                var e = new Silly3 {
                    Name = "somebody", Other = o
                };

                dao.MakePersistent(e);

                tc1.CurrentConversation.End();
            }
        public void Ctor()
        {
            Assert.Throws <ArgumentNullException>(() => new NhConversationsContainerAccessor(null));
            Assert.Throws <ConversationException>(() => new NhConversationsContainerAccessor(new ISessionFactory[0]));
            var invalidSFmock = proxyGenerator.CreateProxy <ISessionFactory>(new InvalidSessionFactory());

            Assert.Throws <ConversationException>(() => new NhConversationsContainerAccessor(new[] { invalidSFmock }));

            var notvalidSFmock = proxyGenerator.CreateProxy <ISessionFactoryImplementor>(new SessionFactoryMock(),
                                                                                         new[]
            {
                typeof(ISessionFactory)
            });

            Assert.Throws <ConversationException>(() => new NhConversationsContainerAccessor(new[] { notvalidSFmock }));

            var container   = new ThreadLocalConversationalSessionContext(null);
            var validSFmock = proxyGenerator.CreateProxy <ISessionFactoryImplementor>(new SessionFactoryMock {
                SessionContext = container
            },
                                                                                      new[]
            {
                typeof(ISessionFactory)
            });
            var ca = new NhConversationsContainerAccessor(new[] { validSFmock });

            Assert.That(ca.Container, Is.SameAs(container));

            var sessionFactoryMock = new SessionFactoryMock();
            var contexMock         = proxyGenerator.CreateProxy <ISessionFactoryImplementor>(sessionFactoryMock,
                                                                                             new[] { typeof(ISessionFactory) });

            sessionFactoryMock.SessionContext = new ThreadLocalSessionContext(contexMock);
            try
            {
                new NhConversationsContainerAccessor(new[] { contexMock });
            }
            catch (ConversationException e)
            {
                Assert.That(e.Message, Text.Contains("Current session context does not implement IConversationContainer"));
            }
        }