public void depdendencies_are_incremented_when_property_set() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new Mock <IRepositoryFactory>(); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var factory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var parent = factory.Create(new Parent { Id = "parent" }, session); var child = factory.Create(new Child { Id = "child" }, session); parent.Child = child; var parentState = stateTracker.Get(parent); Assert.Equal(2, parentState.Dependencies.Sequence); var childState = stateTracker.Get(child); Assert.Equal(1, childState.Dependencies.Sequence); } }
public void dependencies_are_incremented_as_relationships_are_created() { var stateTracker = new EntityStateCache(); var stateFactory = new Mock <IEntityStateCacheFactory>(); stateFactory.Setup(x => x.Create()).Returns(stateTracker); var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var repositoryFactory = new RepositoryFactory(proxyFactory); repositoryFactory.Register <Organisation>(session => new Mapper <Organisation>(session, metadataFactory)); repositoryFactory.Register <AccessGroup>(session => new Mapper <AccessGroup>(session, metadataFactory)); repositoryFactory.Register <Site>(session => new Mapper <Site>(session, metadataFactory)); repositoryFactory.Register <Person>(session => new Mapper <Person>(session, metadataFactory)); var sessionFactory = new GraphSessionFactory(queryExecutorFactory.Object, repositoryFactory, stateFactory.Object, proxyFactory); using (var session = sessionFactory.OpenSession()) { var organisation = session.Create(new Organisation { Id = "organisation" }); var site = session.Create(new Site { Id = "site" }); var accessGroup = session.Create(new AccessGroup { Id = "accessGroup" }); var person = session.Create(new Person { Id = "person" }); organisation.Add(site); organisation.Add(accessGroup); site.Add(accessGroup); person.Add(organisation); person.Add(site); var organisationMetadata = stateTracker.Get(organisation); var siteMetadata = stateTracker.Get(site); var accessGroupMetadata = stateTracker.Get(accessGroup); var personMetadata = stateTracker.Get(person); Assert.Equal(1, accessGroupMetadata.Dependencies.Sequence); Assert.Equal(2, siteMetadata.Dependencies.Sequence); Assert.Equal(3, organisationMetadata.Dependencies.Sequence); Assert.Equal(4, personMetadata.Dependencies.Sequence); } }
public void change_tracking_is_applied_when_entity_set_in_constructor() { var metadataFactory = new AttributeMetadataFactory(new NullLogger()); var queryExecutorFactory = new Mock <IQueryExecutorFactory>(); var mapper = new Mock <IMapper <Parent> >(); var repositoryFactory = new Mock <IRepositoryFactory>(); repositoryFactory.Setup(x => x.Create(It.IsAny <IGraphSession>(), It.IsAny <Type>())).Returns <IGraphSession, Type>((s, t) => new GenericAbstractRepository <Parent>(mapper.Object, s, new DynamicProxyFactory(metadataFactory, new NullLogger()))); var stateTracker = new EntityStateCache(); var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger()); using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory)) { var proxy = session.Create(new Parent { Id = "1", Child = new Child { Id = "2" } }); var state = stateTracker.Get(proxy.Child); Assert.Equal(EntityStatus.New, state.Status); } }