protected override void VisitBatch(BatchBuilder item)
 {
     CreateBatchOperation();
     foreach (var command in item.Commands())
     {
         command.Accept(this);
     }
     base.VisitBatch(item);
 }
示例#2
0
        public unsafe void should_create_batch_with_correct_values()
        {
            var fakeOne1 = new TestStructComponentOne {
                Data = 10
            };
            var fakeOne2 = new TestStructComponentOne {
                Data = 20
            };
            var fakeOnes = new[] { fakeOne1, fakeOne2 };

            var fakeTwo1 = new TestStructComponentTwo {
                Data = 1.5f
            };
            var fakeTwo2 = new TestStructComponentTwo {
                Data = 2.6f
            };
            var fakeTwos = new[] { fakeTwo1, fakeTwo2 };

            var mockComponentDatabase = Substitute.For <IComponentDatabase>();

            mockComponentDatabase.GetComponents <TestStructComponentOne>(Arg.Any <int>()).Returns(fakeOnes);
            mockComponentDatabase.GetComponents <TestStructComponentTwo>(Arg.Any <int>()).Returns(fakeTwos);

            var mockTypeLookup = Substitute.For <IComponentTypeLookup>();

            mockTypeLookup.GetComponentType(typeof(TestStructComponentOne)).Returns(0);
            mockTypeLookup.GetComponentType(typeof(TestStructComponentTwo)).Returns(1);

            var fakeEntity1 = Substitute.For <IEntity>();

            fakeEntity1.Id.Returns(1);
            fakeEntity1.ComponentAllocations.Returns(new[] { 0, 0 });

            var fakeEntity2 = Substitute.For <IEntity>();

            fakeEntity2.Id.Returns(2);
            fakeEntity2.ComponentAllocations.Returns(new[] { 1, 1 });

            var fakeEntities = new [] { fakeEntity1, fakeEntity2 };

            var batchBuilder = new BatchBuilder <TestStructComponentOne, TestStructComponentTwo>(mockComponentDatabase, mockTypeLookup);

            var batch   = batchBuilder.Build(fakeEntities);
            var batches = batch.Batches;

            Assert.Equal(fakeEntities.Length, batches.Length);
            Assert.Equal(fakeEntities[0].Id, batches[0].EntityId);
            Assert.Equal(fakeOne1.Data, (*batches[0].Component1).Data);
            Assert.Equal(fakeTwo1.Data, (*batches[0].Component2).Data);
            Assert.Equal(fakeEntities[1].Id, batches[1].EntityId);
            Assert.Equal(fakeOne2.Data, (*batches[1].Component1).Data);
            Assert.Equal(fakeTwo2.Data, (*batches[1].Component2).Data);
        }
        public void CreateTable()
        {
            var batchJob = new BatchJob();
            var builder  = new BatchBuilder(batchJob)
                           .Description("User")
                           .TargetTable("dbo.User")
                           .CanInsert()
                           .CanUpdate()
                           .Field(f => f
                                  .Name("EmailAddress")
                                  .DisplayName("Email Address")
                                  .DataType <string>()
                                  .IsKey()
                                  )
                           .Field(f => f
                                  .Name("FirstName")
                                  .DisplayName("First Name")
                                  .DataType <string>()
                                  )
                           .Field(f => f
                                  .Name("LastName")
                                  .DisplayName("Last Name")
                                  .DataType <string>()
                                  )
                           .Field(f => f
                                  .Name("IsValidated")
                                  .DisplayName("Validated")
                                  .DataType <bool>()
                                  )
                           .Field(f => f
                                  .Name("LockoutCount")
                                  .DisplayName("Lockout Count")
                                  .DataType <int?>()
                                  .CanBeNull()
                                  )
                           .Field(f => f
                                  .Name("Updated")
                                  .DisplayName("Updated")
                                  .DataType <DateTimeOffset>()
                                  .Default(FieldDefault.CurrentDate)
                                  );

            batchJob.Should().NotBeNull();
            batchJob.Fields.Count.Should().Be(6);

            batchJob.FileName = "Testing.csv";

            builder.Field("EmailAddress", f => f.Index(0));
            builder.Field("IsValidated", f => f.Index(1));
            builder.Field("LastName", f => f.Index(2));
            builder.Field("FirstName", f => f.Index(3));
            builder.Field("LockoutCount", f => f.Index(4));

            batchJob.Data = new[]
            {
                new[] { "email", "validated", "last", "first", "lockout" },
                new[] { "*****@*****.**", "true", "last1", "first1", "" },
                new[] { "*****@*****.**", "false", "", "first2", "" },
                new[] { "*****@*****.**", "", "last3", "first3", "2" },
            };

            var batchFactory   = new BatchFactory(new[] { new BatchValidator() }, null);
            var batchProcessor = new BatchProcessor(NullLogger <BatchProcessor> .Instance, batchFactory, null);

            batchProcessor.Should().NotBeNull();

            var dataTable = batchProcessor.CreateTable(batchJob);

            dataTable.Should().NotBeNull();

            dataTable.Columns.Count.Should().Be(6);

            dataTable.Columns[0].ColumnName.Should().Be("EmailAddress");
            dataTable.Columns[0].DataType.Should().Be <string>();

            dataTable.Columns[1].ColumnName.Should().Be("FirstName");
            dataTable.Columns[1].DataType.Should().Be <string>();

            dataTable.Columns[2].ColumnName.Should().Be("LastName");
            dataTable.Columns[2].DataType.Should().Be <string>();

            dataTable.Columns[3].ColumnName.Should().Be("IsValidated");
            dataTable.Columns[3].DataType.Should().Be <bool>();

            dataTable.Columns[4].ColumnName.Should().Be("LockoutCount");
            dataTable.Columns[4].DataType.Should().Be <int>();

            dataTable.Rows.Count.Should().Be(3);

            dataTable.Rows[0][0].Should().Be("*****@*****.**");
            dataTable.Rows[0][1].Should().Be("first1");
            dataTable.Rows[0][2].Should().Be("last1");
            dataTable.Rows[0][3].Should().Be(true);
            dataTable.Rows[0][4].Should().Be(DBNull.Value);

            dataTable.Rows[1][0].Should().Be("*****@*****.**");
            dataTable.Rows[1][1].Should().Be("first2");
            dataTable.Rows[1][2].Should().Be("");
            dataTable.Rows[1][3].Should().Be(false);
            dataTable.Rows[1][4].Should().Be(DBNull.Value);

            dataTable.Rows[2][0].Should().Be("*****@*****.**");
            dataTable.Rows[2][1].Should().Be("first3");
            dataTable.Rows[2][2].Should().Be("last3");
            dataTable.Rows[2][3].Should().Be(false);
            dataTable.Rows[2][4].Should().Be(2);
        }
 protected override void VisitBatch(BatchBuilder item)
 {
     CreateBatchOperation();
     foreach (var command in item.Commands())
     {
         command.Accept(this);
     }
     base.VisitBatch(item);
 }