示例#1
0
        public void ShouldReturnErrorWhenForeignKeyReferencesNonExistingPrimaryKeyValue()
        {
            var addmlFlatFileDefinition = new AddmlFlatFileDefinitionBuilder().Build();
            var recordDef = new AddmlRecordDefinitionBuilder()
                            .WithAddmlFlatFileDefinition(addmlFlatFileDefinition)
                            .Build();

            AddmlFieldDefinition primaryKeyFieldDef = recordDef.AddAddmlFieldDefinition("id", null, null, new IntegerDataType(), true, false,
                                                                                        null, null, null, null, null, true);
            var primaryKeyField = new Field(primaryKeyFieldDef, "1001");

            AddmlFieldDefinition foreignKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                                      .WithForeignKey(primaryKeyFieldDef)
                                                      .Build();

            var foreignKeyField = new Field(foreignKeyFieldDef, "25");

            var controlForeignKey = new ControlForeignKey();

            controlForeignKey.Run(primaryKeyField);
            controlForeignKey.Run(foreignKeyField);

            controlForeignKey.EndOfFile();
            TestRun testRun = controlForeignKey.GetTestRun();

            testRun.IsSuccess().Should().BeFalse();
            testRun.Results.Count.Should().Be(1);
        }
示例#2
0
        public void ShouldReturnNoErrorsWhenAllForeignKeysExists()
        {
            var addmlFlatFileDefinition = new AddmlFlatFileDefinitionBuilder().Build();
            var recordDef = new AddmlRecordDefinitionBuilder()
                            .WithAddmlFlatFileDefinition(addmlFlatFileDefinition)
                            .Build();

            AddmlFieldDefinition primaryKeyFieldDef = recordDef.AddAddmlFieldDefinition("id", null, null, new IntegerDataType(), true, false,
                                                                                        null, null, null, null, null, true);
            var primaryKeyField = new Field(primaryKeyFieldDef, "1001");

            AddmlFieldDefinition foreignKeyFieldDef = recordDef.AddAddmlFieldDefinition("foreignKeyId", null, null, new IntegerDataType(), true, false,
                                                                                        null, null, null, null, null, false);
            var foreignKeyField = new Field(foreignKeyFieldDef, "1001");

            var controlForeignKey = new ControlForeignKey();

            controlForeignKey.Run(primaryKeyField);
            controlForeignKey.Run(foreignKeyField);

            controlForeignKey.EndOfFile();
            TestRun testRun = controlForeignKey.GetTestRun();

            testRun.IsSuccess().Should().BeTrue();
        }
示例#3
0
        private void TestBooleanDataType(AddmlDefinition addmlDefinition)
        {
            AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[3];

            addmlFlatFileDefinition.Name.Should().Be("ffd_6");
            addmlFlatFileDefinition.FileName.Should().Be("jegerK.dat");
            AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[10];

            addmlFieldDefinition.Name.Should().Be("avgift");
            addmlFieldDefinition.Type.Should().Be(new BooleanDataType("J/N"));
        }
示例#4
0
        private void TestFloatDataType(AddmlDefinition addmlDefinition)
        {
            AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[5];

            addmlFlatFileDefinition.Name.Should().Be("ffd_8");
            addmlFlatFileDefinition.FileName.Should().Be("betalt.dat");
            AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[8];

            addmlFieldDefinition.Name.Should().Be("beløp");
            addmlFieldDefinition.Type.Should().Be(new FloatDataType());
        }
示例#5
0
        private void TestDateDataType(AddmlDefinition addmlDefinition)
        {
            AddmlFlatFileDefinition addmlFlatFileDefinition = addmlDefinition.AddmlFlatFileDefinitions[2];

            addmlFlatFileDefinition.Name.Should().Be("ffd_5");
            addmlFlatFileDefinition.FileName.Should().Be("ikkejeg.dat");
            AddmlFieldDefinition addmlFieldDefinition = addmlFlatFileDefinition.AddmlRecordDefinitions[0].AddmlFieldDefinitions[35];

            addmlFieldDefinition.Name.Should().Be("fradato");
            addmlFieldDefinition.Type.Should().Be(new DateDataType("ddmmyyyy"));
        }
示例#6
0
        private Record GetCurrentRecord()
        {
            List <Field> fields = new List <Field>();

            string currentLine = _lines.Current;

            string[] strings = currentLine.Split(new[] { _fieldDelimiter }, StringSplitOptions.None);

            string recordIdentifier = null;

            if (_recordIdentifierPosition.HasValue)
            {
                recordIdentifier = strings[_recordIdentifierPosition.Value];
            }
            AddmlRecordDefinition       recordDefinition = GetAddmlRecordDefinition(recordIdentifier);
            List <AddmlFieldDefinition> fieldDefinitions = recordDefinition.AddmlFieldDefinitions;

            if (fieldDefinitions.Count != strings.Length)
            {
                int    maxFields = 40;
                string fielddata = currentLine.Length <= maxFields ? currentLine : currentLine.Substring(0, maxFields - 1);
                throw new ArkadeAddmlDelimiterException(
                          $"{Resources.AddmlMessages.UnexpectedNumberOfFields}: {strings.Length}/{fieldDefinitions.Count}",
                          recordDefinition.Name,
                          fielddata);
            }

            for (int i = 0; i < strings.Length; i++)
            {
                string s = strings[i];
                AddmlFieldDefinition fieldDefinition = fieldDefinitions[i];
                fields.Add(new Field(fieldDefinition, s));
            }

            return(new Record(recordDefinition, fields));
        }
示例#7
0
 public Field(AddmlFieldDefinition definition, string value)
 {
     Definition = definition;
     Value      = value;
 }
        public A_16_ControlForeignKeyCombinedKeyTest()
        {
            _attachmentRecordDef = new AddmlRecordDefinitionBuilder()
                                   .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                   .Build();

            _messageIdPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                           .WithRecordDefinition(_attachmentRecordDef)
                                           .WithName("MessageId")
                                           .IsPartOfPrimaryKey(true)
                                           .Build();
            _attachmentNumberPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                                  .WithRecordDefinition(_attachmentRecordDef)
                                                  .WithName("AttachmentNumber")
                                                  .IsPartOfPrimaryKey(true)
                                                  .Build();

            _documentRecordDef = new AddmlRecordDefinitionBuilder()
                                 .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                 .Build();
            _documentPrimaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                          .WithRecordDefinition(_documentRecordDef)
                                          .WithName("DocumentId")
                                          .IsPartOfPrimaryKey(true)
                                          .Build();

            AddmlForeignKey addmlForeignKeyAttachment = new AddmlForeignKey("fk1-attachment");
            AddmlForeignKey addmlForeignKeyDocument   = new AddmlForeignKey("fk2-document");

            _recordWithBothCombinedAndSingleForeignKeyDef = new AddmlRecordDefinitionBuilder()
                                                            .WithAddmlFlatFileDefinition(new AddmlFlatFileDefinitionBuilder().Build())
                                                            .WithRecordProcess(A_16_ControlForeignKey.Name)
                                                            .WithForeignKey(addmlForeignKeyAttachment)
                                                            .WithForeignKey(addmlForeignKeyDocument)
                                                            .Build();
            _primaryKeyFieldDef = new AddmlFieldDefinitionBuilder()
                                  .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                  .WithName("Id")
                                  .IsPartOfPrimaryKey(true)
                                  .Build();
            _foreignKeyMessageIdFieldDef = new AddmlFieldDefinitionBuilder()
                                           .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                           .WithName("MessageId")
                                           .Build();
            _foreignKeyAttachmentNumberFieldDef = new AddmlFieldDefinitionBuilder()
                                                  .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                                  .WithName("AttachmentNumber")
                                                  .Build();

            addmlForeignKeyAttachment.ForeignKeys.Add(_foreignKeyMessageIdFieldDef);
            addmlForeignKeyAttachment.ForeignKeys.Add(_foreignKeyAttachmentNumberFieldDef);
            addmlForeignKeyAttachment.ForeignKeyReferenceIndexes.Add(_messageIdPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyAttachment.ForeignKeyReferenceIndexes.Add(_attachmentNumberPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyAttachment.ForeignKeyReferenceFields.Add(_messageIdPrimaryKeyFieldDef);
            addmlForeignKeyAttachment.ForeignKeyReferenceFields.Add(_attachmentNumberPrimaryKeyFieldDef);

            _foreignKeyDocumentIdFieldDef = new AddmlFieldDefinitionBuilder()
                                            .WithRecordDefinition(_recordWithBothCombinedAndSingleForeignKeyDef)
                                            .WithName("DocumentId")
                                            .Build();

            addmlForeignKeyDocument.ForeignKeys.Add(_foreignKeyDocumentIdFieldDef);
            addmlForeignKeyDocument.ForeignKeyReferenceIndexes.Add(_documentPrimaryKeyFieldDef.GetIndex());
            addmlForeignKeyDocument.ForeignKeyReferenceFields.Add(_documentPrimaryKeyFieldDef);
        }
 public AddmlFieldDefinitionBuilder WithForeignKey(AddmlFieldDefinition foreignKey)
 {
     _foreignKey = foreignKey;
     return(this);
 }