CQRS.Tests.KeyValueStorage.DocumentDbTests.ObjectsWhoseKeysDifferOnlyByCaseAreConsideredTheSameObjectForCompatabilityWithSqlServer C# (CSharp) Method

ObjectsWhoseKeysDifferOnlyByCaseAreConsideredTheSameObjectForCompatabilityWithSqlServer() private method

        public void ObjectsWhoseKeysDifferOnlyByCaseAreConsideredTheSameObjectForCompatabilityWithSqlServer()
        {
            var store = CreateStore();

            var lowerCase = new Email("theemail");
            var upperCase = new Email(lowerCase.TheEmail.ToUpper());

            using (var session = OpenSession(store))
            {
                var uow = new UnitOfWork(new SingleThreadUseGuard());
                uow.AddParticipant((IUnitOfWorkParticipant)session);

                session.Save(lowerCase.TheEmail, lowerCase);
                Assert.Throws<AttemptToSaveAlreadyPersistedValueException>(() => session.Save(upperCase.TheEmail, upperCase));

                session.Get<Email>(lowerCase.TheEmail).Should().Be(session.Get<Email>(upperCase.TheEmail));

                uow.Commit();
            }

            using (var session = OpenSession(store))
            {
                var uow = new UnitOfWork(new SingleThreadUseGuard());
                uow.AddParticipant((IUnitOfWorkParticipant)session);

                Assert.Throws<AttemptToSaveAlreadyPersistedValueException>(() => session.Save(upperCase.TheEmail, upperCase));
                session.Get<Email>(upperCase.TheEmail).TheEmail.Should().Be(lowerCase.TheEmail);
                session.Get<Email>(lowerCase.TheEmail).Should().Be(session.Get<Email>(upperCase.TheEmail));

                session.Delete<Email>(upperCase.TheEmail);
                Assert.Throws<NoSuchDocumentException>(() => session.Delete<Email>(upperCase.TheEmail));
                Assert.Throws<NoSuchDocumentException>(() => session.Delete<Email>(lowerCase.TheEmail));


                uow.Commit();
            }
        }
DocumentDbTests