예제 #1
0
        public void ThrowsIfUsedByMultipleThreads()
        {
            var store = CreateStore();
            IDocumentDbSession session = null;
            var wait = new ManualResetEventSlim();

            ThreadPool.QueueUserWorkItem(state =>
            {
                session = OpenSession(store);
                wait.Set();
            });
            wait.Wait();

            var user = new User()
            {
                Id = Guid.NewGuid()
            };

            Assert.Throws <MultiThreadedUseException>(() => session.Get <User>(Guid.NewGuid()));
            Assert.Throws <MultiThreadedUseException>(() => session.GetAll <User>());
            Assert.Throws <MultiThreadedUseException>(() => session.Save(user, user.Id));
            Assert.Throws <MultiThreadedUseException>(() => session.Delete(user));
            Assert.Throws <MultiThreadedUseException>(() => session.Dispose());
            Assert.Throws <MultiThreadedUseException>(() => session.Save(new User()));
            Assert.Throws <MultiThreadedUseException>(() => session.SaveChanges());
            Assert.Throws <MultiThreadedUseException>(() => session.TryGet(Guid.NewGuid(), out user));
            Assert.Throws <MultiThreadedUseException>(() => session.TryGetForUpdate(user.Id, out user));
            Assert.Throws <MultiThreadedUseException>(() => session.Delete(user));
        }
예제 #2
0
        public void starting_from_empty()
        {
            CVQueryModel        cvQueryModel        = null;
            CVQueryModelUpdater cvQueryModelUpdater = null;
            IDocumentDbSession  documentDbSession   = null;
            Guid cvId = Guid.Parse("00000000-0000-0000-0000-000000000001");

            before = () =>
            {
                cvQueryModel        = null;
                documentDbSession   = new DocumentDbSession(new InMemoryDocumentDb(), new SingleThreadUseGuard(), NullOpDocumentDbSessionInterceptor.Instance);
                cvQueryModelUpdater = new CVQueryModelUpdater(documentDbSession);
            };

            context["after receiving CVRegisteredAvent"] =
                () =>
            {
                CVRegisteredEvent registeredEvent = null;
                before = () =>
                {
                    registeredEvent = new CVRegisteredEvent()
                    {
                        AggregateRootId = cvId,
                        Email           = "Email",
                        Password        = "******",
                    };
                    cvQueryModelUpdater.Handle(registeredEvent);
                    cvQueryModel = documentDbSession.Get <CVQueryModel>(cvId);
                };
                it["does not crash :)"] = () => Assert.True(true);
                it["_resultingModel.Id is template.id"]             = () => cvQueryModel.Id.Should().Be(registeredEvent.AggregateRootId);
                it["_resultingModel.Email is template.Email"]       = () => cvQueryModel.Email.Should().Be(registeredEvent.Email);
                it["_resultingModel.Password is template.Password"] = () => cvQueryModel.Password.Should().Be(registeredEvent.Password);
                context["after receiving CVSkillsEditedEvent"]      =
                    () =>
                {
                    CVSkillsEdited skillsEdited = null;
                    before = () =>
                    {
                        skillsEdited = new CVSkillsEdited()
                        {
                            AggregateRootId = registeredEvent.AggregateRootId,
                            AddedSkills     = new List <string> {
                                "AddedSkill1", "AddedSkill2", "AddedSkill3"
                            },
                            RemovedSkills = new List <string> {
                                "RemovedSkill1"
                            }
                        };
                        cvQueryModelUpdater.Handle(skillsEdited);
                    };

                    it["CVQueryModel.Skills is event.AddedSkills "] = () => cvQueryModel.Skills.Should().Equal(skillsEdited.AddedSkills);
                };
            };
        }
 public DocumentDbSessionInspector(IDocumentDbSession session)
 {
     Session = session;
 }
예제 #4
0
 protected DocumentDbSessionProxy(IDocumentDbSession session)
 {
     Session = session;
 }
예제 #5
0
 public DocumentDbSessionInspector(IDocumentDbSession session)
 {
     Session = session;
 }