/// <summary> /// Initializes a new instance of the <see cref="PersistenceTestBuilder{T}"/> class. /// </summary> /// <param name="sessionProvider">The service which provides an <see cref="NHibernate.ISession"/>.</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(IGetsSession sessionProvider, T entity, Action <IGetsSession> 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] IGetsSession sessionProvider, PersistenceTestBuilder sut, [NoRecursion] SampleEntity entity, [Frozen] ISession 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(sessionProvider); Assert.That(executed, Is.True); }
public void WithSetup_does_not_use_transaction_when_specified_not_to([Frozen] IGetsSession sessionProvider, PersistenceTestBuilder sut, [NoRecursion] SampleEntity entity, ISession session, ITransaction tran) { Mock.Get(sessionProvider).Setup(x => x.GetSession()).Returns(session); Mock.Get(session).Setup(x => x.BeginTransaction()).Returns(tran); var action = GetSetup(getter => { /* Noop */ }); var result = (PersistenceTestBuilder <SampleEntity>)AsSetupChooser(sut) .WithSetup(action, false) .WithEntity(entity); result.Setup(sessionProvider); Mock.Get(session).Verify(x => x.BeginTransaction(), Times.Never); }
public void WithEqualityRule_uses_rule_in_spec(IGetsEqualityResult <SampleEntity> equalityRule, IGetsSession 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 WithEqualityRule_can_configure_a_rule(IEqualityComparer <string> comparer, IGetsSession 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, IGetsSession 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); }
/// <summary> /// Initializes a new instance of the <see cref="PersistenceTestBuilder"/> class. /// </summary> /// <param name="sessionProvider">A session provider.</param> public PersistenceTestBuilder(IGetsSession 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(IGetsSession 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)); }