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