コード例 #1
0
        public void WithEqualityRule_uses_rule_in_spec(IGetsEqualityResult <SampleEntity> equalityRule,
                                                       IGetsDataConnection sessionProvider,
                                                       [NoRecursion] SampleEntity entity,
                                                       ITestsPersistence <SampleEntity> tester)
        {
            Mock.Get(tester).Setup(x => x.GetTestResult()).Returns(() => null);
            PersistenceTestSpec <SampleEntity> specification = null;
            var builder = new PersistenceTestBuilder <SampleEntity>(sessionProvider, entity, null, spec =>
            {
                specification = spec;
                return(tester);
            });
            var sut = AsComparerChooser(builder);

            sut.WithEqualityRule(equalityRule);

            Assert.That(specification?.EqualityRule, Is.SameAs(equalityRule));
        }
コード例 #2
0
        public void WithSetup_does_not_use_transaction_when_specified_not_to([Frozen] IGetsDataConnection sessionProvider,
                                                                             PersistenceTestBuilder sut,
                                                                             [NoRecursion] SampleEntity entity,
                                                                             IDataConnection session,
                                                                             IGetsTransaction tranFactory,
                                                                             ITransaction tran)
        {
            Mock.Get(sessionProvider).Setup(x => x.GetConnection()).Returns(session);
            Mock.Get(session).Setup(x => x.GetTransactionFactory()).Returns(tranFactory);
            Mock.Get(tranFactory).Setup(x => x.GetTransaction()).Returns(tran);
            var action = GetSetup(getter => { /* Noop */ });

            var result = (PersistenceTestBuilder <SampleEntity>)AsSetupChooser(sut)
                         .WithSetup(action, false)
                         .WithEntity(entity);

            result.Setup(session);

            Mock.Get(tranFactory).Verify(x => x.GetTransaction(), Times.Never);
        }
コード例 #3
0
        public void WithEqualityRule_can_configure_a_rule(IEqualityComparer <string> comparer,
                                                          IGetsDataConnection sessionProvider,
                                                          [NoRecursion] SampleEntity entity,
                                                          ITestsPersistence <SampleEntity> tester)
        {
            Mock.Get(tester).Setup(x => x.GetTestResult()).Returns(() => null);
            PersistenceTestSpec <SampleEntity> specification = null;
            var builder = new PersistenceTestBuilder <SampleEntity>(sessionProvider, entity, null, spec =>
            {
                specification = spec;
                return(tester);
            });
            var sut = AsComparerChooser(builder);

            sut.WithEqualityRule(b => b.ForProperty(x => x.StringProperty, c => c.UsingComparer(comparer)));
            specification?.EqualityRule?.GetEqualityResult(entity, entity);

            Mock.Get(comparer)
            .Verify(x => x.Equals(entity.StringProperty, entity.StringProperty), Times.Once);
        }
コード例 #4
0
        public void GetTestResult_evicts_the_entity_retrieves_it_and_compares_it([Frozen] IDataConnection session,
                                                                                 IGetsTransaction tranFactory,
                                                                                 [Frozen] ITransaction tran,
                                                                                 IPersister persister,
                                                                                 IQuery query,
                                                                                 [Frozen, NoRecursion] SampleEntity entity,
                                                                                 [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec,
                                                                                 object id)
        {
            var evicted = false;

            var sut = new PersistenceTester <SampleEntity>(spec);

            Mock.Get(spec.SessionProvider).Setup(x => x.GetConnection()).Returns(session);
            Mock.Get(session)
            .Setup(x => x.GetTransactionFactory())
            .Returns(tranFactory);
            Mock.Get(tranFactory)
            .Setup(x => x.GetTransaction())
            .Returns(tran);
            Mock.Get(session).Setup(x => x.GetPersister()).Returns(persister);
            Mock.Get(session).Setup(x => x.GetQuery()).Returns(query);
            Mock.Get(persister)
            .Setup(x => x.Add(entity, null))
            .Returns(id);
            Mock.Get(session)
            .Setup(x => x.EvictFromCache(entity))
            .Callback(() => evicted = true);

            var retrievedEntity = new SampleEntity();

            Mock.Get(query)
            .Setup(x => x.Get <SampleEntity>(id))
            .Returns(() => evicted? retrievedEntity : entity);

            sut.GetTestResult();

            Mock.Get(spec.EqualityRule).Verify(x => x.GetEqualityResult(entity, retrievedEntity), Times.Once);
        }
コード例 #5
0
        public void WithEqualityComparer_uses_comparer_in_spec(IEqualityComparer <SampleEntity> comparer,
                                                               IGetsDataConnection sessionProvider,
                                                               [NoRecursion] SampleEntity entity,
                                                               ITestsPersistence <SampleEntity> tester)
        {
            Mock.Get(tester).Setup(x => x.GetTestResult()).Returns(() => null);
            PersistenceTestSpec <SampleEntity> specification = null;
            var builder = new PersistenceTestBuilder <SampleEntity>(sessionProvider, entity, null, spec =>
            {
                specification = spec;
                return(tester);
            });
            var sut = AsComparerChooser(builder);

            // Select the comparer and then execute the rule from the spec
            // so that the comparer should be executed with it
            sut.WithEqualityComparer(comparer);
            specification?.EqualityRule?.GetEqualityResult(entity, entity);

            Mock.Get(comparer)
            .Verify(x => x.Equals(entity, entity), Times.Once);
        }
コード例 #6
0
        public void GetTestResult_does_not_record_error_for_setup_action_if_it_was_not_provided([Frozen, NoRecursion] SampleEntity entity,
                                                                                                [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec)
        {
            var sut = new PersistenceTester <SampleEntity>(spec);

            var result = sut.GetTestResult();

            Assert.That(result?.SetupException, Is.Null);
        }