{
  "id": 11983145,
  "title": "Three tiny CSV fixtures that catch different importer mistakes",
  "url": "https://urgent.news/2026/10/04/three-tiny-csv-fixtures-that-catch-different-importer-mistakes",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-04T18:41:26.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/karol_kurzydym_4f36580c50/three-tiny-csv-fixtures-that-catch-different-importer-mistakes-cha"
  },
  "original_language": "en",
  "account": "One additional test case that has identified an importer bug in the reporter's suite involves a repeating ID. The CSV input is:\n\nid,name\n001,Ada\n001,Jan\n\nAccording to the CSV specification, an importer should fail this test case since the IDs are repeated. However, a tolerant importer that silently overwrites the previous record with the last occurrence of the ID could parse this as:\n\nid,name\n001,Jan\n\nThis behavior may appear correct at first glance, but it represents a business decision that should be explicitly stated in the importer's test suite. Recording the input's encoding and delimiter alongside each fixture aids in diagnosing the issue. While the CSV itself is technically valid, the importer's handling of the duplicate ID does not align with its intended purpose or the data's accuracy.",
  "summary": "A well-formed CSV can still carry the wrong meaning for your importer. Here are three fictional inputs, with explicit expectations, that you can copy into a test suite without uploading any customer data. An identifier is a string id,postal_code 0007,00123 Expected cells: [\"0007\", \"00123\"] . If your application converts both values to integers, it has changed the identifiers. Whether to convert a…",
  "key_points": [
    "Repeating ID in CSV input causes importer bug",
    "Tolerant importer silently overwrites records",
    "Explicitly stating business decision in test suite essential"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}