Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PersistenceTestBuilder{T}"/> class.
 /// </summary>
 /// <param name="sessionProvider">The service which provides an <see cref="IDataConnection"/>.</param>
 /// <param name="entity">The entity instance to be tested.</param>
 /// <param name="setup">An optional setup/pre-test function.</param>
 /// <param name="testerFactory">An optional function which gets an <see cref="ITestsPersistence{T}"/> from a test specification.</param>
 public PersistenceTestBuilder(IGetsDataConnection sessionProvider,
                               T entity,
                               Action <IDataConnection> setup,
                               Func <PersistenceTestSpec <T>, ITestsPersistence <T> > testerFactory = null)
 {
     this.SessionProvider = sessionProvider ?? throw new ArgumentNullException(nameof(sessionProvider));
     this.Entity          = entity ?? throw new ArgumentNullException(nameof(entity));
     this.Setup           = setup;
     this.testerFactory   = testerFactory ?? (spec => new PersistenceTester <T>(spec));
 }
Beispiel #2
0
        public void WithSetup_sets_setup_to_action_when_provided([Frozen] IGetsDataConnection sessionProvider,
                                                                 PersistenceTestBuilder sut,
                                                                 [NoRecursion] SampleEntity entity,
                                                                 [Frozen] IDataConnection session,
                                                                 [Frozen] ITransaction tran)
        {
            bool executed = false;
            var  action   = GetSetup(getter => { executed = true; });

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

            result.Setup(session);

            Assert.That(executed, Is.True);
        }
Beispiel #3
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));
        }
Beispiel #4
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);
        }
Beispiel #5
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);
        }
Beispiel #6
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);
        }
 public CachingDataConnectionFactoryAdapter(IGetsDataConnection wrapped)
 {
     this.wrapped = wrapped ?? throw new ArgumentNullException(nameof(wrapped));
 }
Beispiel #8
0
 /// <summary>
 /// Begins building a persistence test by specifying the service which will
 /// provide a connection to the ORM/Database.
 /// </summary>
 /// <returns>A persistence test builder object.</returns>
 /// <param name="connectionProvider">The connection provider.</param>
 public static PersistenceTestBuilder UsingConnectionProvider(IGetsDataConnection connectionProvider) => new PersistenceTestBuilder(connectionProvider);
 /// <summary>
 /// Initializes a new instance of the <see cref="PersistenceTestBuilder"/> class.
 /// </summary>
 /// <param name="sessionProvider">A session provider.</param>
 public PersistenceTestBuilder(IGetsDataConnection sessionProvider)
 {
     this.sessionProvider = sessionProvider ?? throw new ArgumentNullException(nameof(sessionProvider));
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PersistenceTestSpec{T}"/> class.
 /// </summary>
 /// <param name="sessionProvider">The session provider.</param>
 /// <param name="entity">The entity to be tested.</param>
 /// <param name="equalityRule">The equality rule.</param>
 public PersistenceTestSpec(IGetsDataConnection sessionProvider, T entity, IGetsEqualityResult <T> equalityRule)
 {
     SessionProvider = sessionProvider ?? throw new ArgumentNullException(nameof(sessionProvider));
     Entity          = entity ?? throw new ArgumentNullException(nameof(entity));
     EqualityRule    = equalityRule ?? throw new ArgumentNullException(nameof(equalityRule));
 }