protected SisoDatabase(ISisoConnectionInfo connectionInfo, IDbProviderFactory dbProviderFactory) { Ensure.That(connectionInfo, "connectionInfo").IsNotNull(); Ensure.That(dbProviderFactory, "dbProviderFactory").IsNotNull(); _lockObject = new object(); _connectionInfo = connectionInfo; _providerFactory = dbProviderFactory; Settings = ProviderFactory.GetSettings(); ServerClient = ProviderFactory.GetServerClient(ConnectionInfo); StructureSchemas = new StructureSchemas(new StructureTypeFactory(), new AutoStructureSchemaBuilder()); Serializer = new DefaultSisoSerializer(); StructureBuilders = new StructureBuilders(() => Serializer, schema => ProviderFactory.GetGuidStructureIdGenerator(), (schema, dbClient) => ProviderFactory.GetIdentityStructureIdGenerator(dbClient)); Maintenance = new SisoDatabaseMaintenance(this); _dbSchemas = ProviderFactory.GetDbSchemaManagerFor(this); }
public void UseManualIds_Should_make_ResolveBuilderForInsert_to_return_builder_with_EmptyStructureIdGenerator() { var serializerFake = new Mock <IStructureSerializer>(); var structureBuilders = new StructureBuilders( () => serializerFake.Object, s => Mock.Of <IStructureIdGenerator>(), (s, d) => Mock.Of <IIdentityStructureIdGenerator>()); var dbFake = new Mock <ISisoDatabase>(); dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders); dbFake.Object.Configure().UseManualIds(); var builder = structureBuilders.ResolveBuilderForInsert(Mock.Of <IStructureSchema>(), Mock.Of <IDbClient>()); Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType()); }
public void UseGuidStructureIdGeneratorResolvedBy_Should_make_ResolveBuilderForInsert_to_return_builder_with_configured_id_generator() { var serializerFake = new Mock <IStructureSerializer>(); var structureBuilders = new StructureBuilders( () => serializerFake.Object, s => Mock.Of <IStructureIdGenerator>(), (s, d) => Mock.Of <IIdentityStructureIdGenerator>()); var dbFake = new Mock <ISisoDatabase>(); dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders); dbFake.Object.Configure().UseGuidStructureIdGeneratorResolvedBy(s => new EmptyStructureIdGenerator()); var builder = structureBuilders.ResolveBuilderForInsert(StructureSchemaTestFactory.Stub <MyClassWithGuidId>(generateIdAccessor: true), Mock.Of <IDbClient>()); Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType()); }
public void UseAutoIds_Should_make_ResolveBuilderForInsert_to_return_builder_for_autoIds_but_still_resolve_idgenerators() { var schemaFake = new Mock <IStructureSchema>(); schemaFake.SetupGet(f => f.IdAccessor).Returns(() => { var id = new Mock <IIdAccessor>(); id.SetupGet(f => f.IdType).Returns(StructureIdTypes.Guid); return(id.Object); }); var serializerFake = new Mock <IStructureSerializer>(); var structureBuilders = new StructureBuilders( () => serializerFake.Object, s => Mock.Of <IStructureIdGenerator>(), (s, d) => Mock.Of <IIdentityStructureIdGenerator>()); var dbFake = new Mock <ISisoDatabase>(); dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders); dbFake.Object.Configure().UseAutoIds(); var builder = structureBuilders.ResolveBuilderForInsert(schemaFake.Object, Mock.Of <IDbClient>()); Assert.AreEqual(typeof(StructureBuilderAutoId), builder.GetType()); }