/// <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)); }
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); }
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)); }
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); }
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); }
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)); }
/// <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)); }
/// <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)); }