openownership / lib-cove-bods

Check that your data complies with the Beneficial Ownership Data Standard (BODS) using our install our data review library to analyse files via your command line interface
https://datareview.openownership.org/
Other
1 stars 0 forks source link

Additional check - duplicate statementId #128

Closed kathryn-ods closed 1 month ago

kathryn-ods commented 2 months ago

Once a Statement is published it SHOULD NOT be republished with the same statement identifier (statementId) and different property values

Check: each statementId is only used once

On fail: Error message - multiple statements are using the same statement identifier Info message - statement identifier (statementId): [VALUE]

kathryn-ods commented 2 months ago

We could only test for something being republished assuming both the original and the republished statements were uploaded as part of the same data set? This test is sort of simplifying the requirement by just saying you shouldn't have multiple statements with the same statementId. Is that ok @kd-ods?

kathryn-ods commented 2 months ago

Valid data (generic test data)

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity"
      }
    }
  },
  {
    "statementId": "019a93f1-e470-42e9-957b-03559861b2e2",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "10478c6cf6de",
    "recordType": "person",
    "recordDetails": {
      "isComponent": false,
      "personType": "knownPerson"
    }
  },
  {
    "statementId": "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "93b53022ae6a",
    "recordType": "relationship",
    "recordDetails": {
      "isComponent": false,
      "subject": "c359f58d2977",
      "interestedParty": "10478c6cf6de"
    }
  }
]

Invalid data 1 - 100% duplicated statement

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity"
      }
    }
  },
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity"
      }
    }
  },
  {
    "statementId": "019a93f1-e470-42e9-957b-03559861b2e2",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "10478c6cf6de",
    "recordType": "person",
    "recordDetails": {
      "isComponent": false,
      "personType": "knownPerson"
    }
  },
  {
    "statementId": "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "93b53022ae6a",
    "recordType": "relationship",
    "recordDetails": {
      "isComponent": false,
      "subject": "c359f58d2977",
      "interestedParty": "10478c6cf6de"
    }
  }
]

Invalid data 2 - slightly different statements

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity"
      }
    }
  },
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-04-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "legalEntity"
      }
    }
  },
  {
    "statementId": "019a93f1-e470-42e9-957b-03559861b2e2",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "10478c6cf6de",
    "recordType": "person",
    "recordDetails": {
      "isComponent": false,
      "personType": "knownPerson"
    }
  },
  {
    "statementId": "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "93b53022ae6a",
    "recordType": "relationship",
    "recordDetails": {
      "isComponent": false,
      "subject": "c359f58d2977",
      "interestedParty": "10478c6cf6de"
    }
  }
]
kd-ods commented 2 months ago

Is that ok @kd-ods?

Yes

kathryn-ods commented 1 month ago

I've consolidated this ticket into #130 - slightly different scenarios but covered by the same test.