calculateEntityCoverage calculates coverage for a single entity
(ref SchemaCoverage, shape file.Shape)
| 175 | |
| 176 | // calculateEntityCoverage calculates coverage for a single entity |
| 177 | func calculateEntityCoverage(ref SchemaCoverage, shape file.Shape) EntityCoverageInfo { |
| 178 | entityCoverageInfo := newEntityCoverageInfo(ref.EntityName) |
| 179 | |
| 180 | // Calculate relationships coverage |
| 181 | entityCoverageInfo.UncoveredRelationships = findUncoveredRelationships( |
| 182 | ref.EntityName, |
| 183 | ref.Relationships, |
| 184 | shape.Relationships, |
| 185 | ) |
| 186 | entityCoverageInfo.CoverageRelationshipsPercent = calculateCoveragePercent( |
| 187 | ref.Relationships, |
| 188 | entityCoverageInfo.UncoveredRelationships, |
| 189 | ) |
| 190 | |
| 191 | // Calculate attributes coverage |
| 192 | entityCoverageInfo.UncoveredAttributes = findUncoveredAttributes( |
| 193 | ref.EntityName, |
| 194 | ref.Attributes, |
| 195 | shape.Attributes, |
| 196 | ) |
| 197 | entityCoverageInfo.CoverageAttributesPercent = calculateCoveragePercent( |
| 198 | ref.Attributes, |
| 199 | entityCoverageInfo.UncoveredAttributes, |
| 200 | ) |
| 201 | |
| 202 | // Calculate assertions coverage for each scenario |
| 203 | for _, scenario := range shape.Scenarios { |
| 204 | uncovered := findUncoveredAssertions( |
| 205 | ref.EntityName, |
| 206 | ref.Assertions, |
| 207 | scenario.Checks, |
| 208 | scenario.EntityFilters, |
| 209 | ) |
| 210 | // Only add to UncoveredAssertions if there are uncovered assertions |
| 211 | if len(uncovered) > 0 { |
| 212 | entityCoverageInfo.UncoveredAssertions[scenario.Name] = uncovered |
| 213 | } |
| 214 | entityCoverageInfo.CoverageAssertionsPercent[scenario.Name] = calculateCoveragePercent( |
| 215 | ref.Assertions, |
| 216 | uncovered, |
| 217 | ) |
| 218 | } |
| 219 | |
| 220 | return entityCoverageInfo |
| 221 | } |
| 222 | |
| 223 | // newEntityCoverageInfo creates a new EntityCoverageInfo with initialized fields |
| 224 | func newEntityCoverageInfo(entityName string) EntityCoverageInfo { |
no test coverage detected