public void UseGuidStructureIdGeneratorResolvedBy_Should_make_ForInserts_to_return_builder_with_configured_id_generator()
        {
            var serializerFake = new Mock<ISisoDbSerializer>();
            var structureBuilders = new StructureBuilders(() => serializerFake.Object);
            var dbFake = new Mock<ISisoDatabase>();
            dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders);

            dbFake.Object.Configure().UseGuidStructureIdGeneratorResolvedBy(() => new EmptyStructureIdGenerator());
            var builder = structureBuilders.ForInserts(StructureSchemaTestFactory.Stub<MyClassWithGuidId>(generateIdAccessor: true), Mock.Of<IIdentityStructureIdGenerator>());

            Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType());
        }
        public void UseManualStructureIdAssignment_Should_make_ForInserts_to_return_builder_with_EmptyStructureIdGenerator()
        {
            var serializerFake = new Mock<ISisoDbSerializer>();
            var structureBuilders = new StructureBuilders(() => serializerFake.Object);
            var dbFake = new Mock<ISisoDatabase>();
            dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders);

            dbFake.Object.Configure().UseManualStructureIdAssignment();
            var builder = structureBuilders.ForInserts(Mock.Of<IStructureSchema>(), Mock.Of<IIdentityStructureIdGenerator>());

            Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType());
        }
        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 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());
        }