예제 #1
0
        public void TestTimeZones(string timeZone, int expectedHour)
        {
            EntityType   type   = null;
            ImportConfig config = null;

            try
            {
                // Create Type
                type = new EntityType {
                    Fields =
                    {
                        new DateTimeField {
                            Name = "Incident Date Time"
                        }.As <Field>( )
                    }
                };
                type.Save( );

                var field = type.Fields[0];

                // Create Configuration
                config = new ImportConfig {
                    ImportFileType_Enum = ImportFileTypeEnum_Enumeration.ImportFileTypeExcel,
                    ImportConfigMapping = new ApiResourceMapping {
                        MappingSourceReference = "Incident",
                        ImportHeadingRow       = 4,
                        ImportDataRow          = 5,
                        MappedType             = type,
                        ResourceMemberMappings =
                        {
                            new ApiFieldMapping {
                                Name = "A", MappedField = Resource.Name_Field.As <Field>(),
                            }.As <ApiMemberMapping>( ),
                            new ApiFieldMapping {
                                Name = "C", MappedField = field
                            }.As <ApiMemberMapping>( )
                        }
                    }
                };
                config.Save( );

                // Run upload
                long importRunId;
                var  status = TestUpload(config, false, request =>
                {
                    if (timeZone == null)
                    {
                        request.HttpWebRequest.Headers.Remove("Tz");
                    }
                    else
                    {
                        request.HttpWebRequest.Headers["Tz"] = timeZone;
                    }
                }, out importRunId);

                Assert.That(importRunId, Is.GreaterThan(0));
                Assert.That(status.ImportStatus, Is.EqualTo(ImportStatus.Success), status.ImportMessages);
                Assert.That(status.RecordsSucceeded, Is.EqualTo(7), status.ImportMessages);
                Assert.That(status.RecordsFailed, Is.EqualTo(0), status.ImportMessages);

                // Imported value was 21/09/2012 18:00
                // Perth timezone is +8
                // Expect UTC of 21/09/2012 10:00

                // Look for uploaded entity
                IEntity entity = Factory.ScriptNameResolver.GetInstance("Power Outage", type.Id);
                Assert.That(entity, Is.Not.Null, "Find entity");
                DateTime?value = entity.GetField <DateTime>(field.Id);
                Assert.That(value, Is.EqualTo(new DateTime(2012, 09, 21, expectedHour, 0, 0, DateTimeKind.Utc)), "Check date-time value");
            }
            finally
            {
                config?.Delete( );
                type?.Delete( );
            }
        }
예제 #2
0
        public void TestTestRun( )
        {
            // TestRun should not save data

            EntityType   type   = null;
            ImportConfig config = null;

            try
            {
                // Create Type
                type = new EntityType
                {
                    Fields =
                    {
                        new DateTimeField {
                            Name = "Incident Date Time"
                        }.As <Field>( )
                    }
                };
                type.Save( );

                var field = type.Fields [0];

                // Create Configuration
                config = new ImportConfig
                {
                    ImportFileType_Enum = ImportFileTypeEnum_Enumeration.ImportFileTypeExcel,
                    ImportConfigMapping = new ApiResourceMapping
                    {
                        MappingSourceReference = "Incident",
                        ImportHeadingRow       = 4,
                        ImportDataRow          = 5,
                        MappedType             = type,
                        ResourceMemberMappings =
                        {
                            new ApiFieldMapping {
                                Name = "A", MappedField = Resource.Name_Field.As <Field>(),
                            }.As <ApiMemberMapping>( ),
                            new ApiFieldMapping {
                                Name = "C", MappedField = field
                            }.As <ApiMemberMapping>( )
                        }
                    }
                };
                config.Save( );

                // Run upload
                long       importRunId;
                const bool testRun = true;
                var        status  = TestUpload(config, testRun, null, out importRunId);

                Assert.That(importRunId, Is.GreaterThan(0));
                Assert.That(status.ImportStatus, Is.EqualTo(ImportStatus.Success), status.ImportMessages);
                Assert.That(status.RecordsSucceeded, Is.EqualTo(7), status.ImportMessages);
                Assert.That(status.RecordsFailed, Is.EqualTo(0), status.ImportMessages);

                // Look for uploaded entity
                IEntity entity = Factory.ScriptNameResolver.GetInstance("Power Outage", type.Id);
                Assert.That(entity, Is.Null, "Find entity");
            }
            finally
            {
                config?.Delete( );
                type?.Delete( );
            }
        }