< Summary

Information
Class: ValidateLib.Metadata.Validators.PrimaryKeyValidator
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\Metadata\Validators\PrimaryKeyValidator.cs
Line coverage
95%
Covered lines: 19
Uncovered lines: 1
Coverable lines: 20
Total lines: 48
Line coverage: 95%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBlocks covered Blocks not covered
Validate(...)210
DoesReferencedColumnExist(...)201

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\Metadata\Validators\PrimaryKeyValidator.cs

#LineLine coverage
 1using ValidateLib.ErrorsAndWarnings.Warnings;
 2using ValidateLib.Metadata.Descriptors;
 3
 4namespace ValidateLib.Metadata.Validators
 5{
 6    public class PrimaryKeyValidator : IMValidator<SchemaDescriptor>
 7    {
 8        public List<Warning> Validate(SchemaDescriptor schemaDescriptor)
 9        {
 110            List<Warning> warnings = new List<Warning>();
 111            if (schemaDescriptor.primaryKey is not null)
 12            {
 113                var primaryKeyDescriptor = schemaDescriptor.primaryKey._value;
 114                bool validPrimaryKeyDescriptor = true;
 115                string? nonExistingColumnName = null;
 116                foreach (var primaryKeyColumnName in primaryKeyDescriptor!)
 17                {
 118                    if (!DoesReferencedColumnExist(schemaDescriptor, primaryKeyColumnName))
 19                    {
 120                        validPrimaryKeyDescriptor = false;
 121                        nonExistingColumnName = primaryKeyColumnName;
 22                    }
 23                }
 124                if (!validPrimaryKeyDescriptor)
 25                {
 126                    warnings.Add(WarningFactory.GetReferencedCOlumnDoesNotExistWarning("primaryKey", nonExistingColumnNa
 127                    schemaDescriptor.primaryKey = null;
 28                }
 29            }
 130            return warnings;
 31        }
 32
 33        static bool DoesReferencedColumnExist(SchemaDescriptor schemaDescriptor, string referencedColumnName)
 34        {
 135            if (schemaDescriptor.columns is not null)
 36            {
 137                foreach (var column in schemaDescriptor.columns._value!)
 38                {
 139                    if (column.name is null) continue;
 140                    else if (column.name._value == referencedColumnName) return true;
 41                }
 142                return false;
 43            }
 044            else return false;
 145        }
 46
 47    }
 48}