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); }
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(); }
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")); }
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()); }
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")); }
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)); }
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); }