{
  "stats": {
    "suites": 157,
    "tests": 146,
    "passes": 146,
    "pending": 0,
    "failures": 0,
    "start": "2026-01-27T22:07:06.094Z",
    "end": "2026-01-27T22:09:00.179Z",
    "duration": 114085,
    "testsRegistered": 146,
    "passPercent": 100,
    "pendingPercent": 0,
    "other": 0,
    "hasOther": false,
    "skipped": 0,
    "hasSkipped": false
  },
  "results": [
    {
      "uuid": "bd1ba631-f344-4d5b-8064-3aa358e0f750",
      "title": "",
      "fullFile": "",
      "file": "",
      "beforeHooks": [],
      "afterHooks": [
        {
          "title": "\"after each\" hook in \"{root}\"",
          "fullTitle": "\"after each\" hook in \"{root}\"",
          "timedOut": false,
          "duration": 0,
          "state": null,
          "speed": null,
          "pass": false,
          "fail": false,
          "pending": false,
          "context": null,
          "code": "checkForUnfulfilledExpectations.call(this);\nrecordedExpects = [];",
          "err": {},
          "uuid": "929dceaa-c682-4b05-9033-e5af9f3c5bde",
          "parentUUID": "bd1ba631-f344-4d5b-8064-3aa358e0f750",
          "isHook": true,
          "skipped": false
        }
      ],
      "tests": [],
      "suites": [
        {
          "uuid": "23d7da9a-d868-4a9b-98da-6e89dfb93527",
          "title": "tests for /v2.0/data/datasets/{datasetid}/taxa",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "fa105df1-5812-4df0-89cb-232d93c54a26",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Taxa\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/taxa tests for get should respond 200 for \"Taxa\"",
                  "timedOut": false,
                  "duration": 663,
                  "state": "passed",
                  "speed": "medium",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/taxa', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "554bc454-a9c0-405c-8b3b-9c7648d8fc76",
                  "parentUUID": "fa105df1-5812-4df0-89cb-232d93c54a26",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "554bc454-a9c0-405c-8b3b-9c7648d8fc76"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 663,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "0c39bcc8-22ef-4abd-94af-1377b2418601",
          "title": "tests for /v2.0/apps/depositionalenvironments/root",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js",
          "file": "/test/v2.0-apps-depositionalenvironments-root-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "35af41ef-6270-4529-8770-b603df11c4b4",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js",
              "file": "/test/v2.0-apps-depositionalenvironments-root-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/depositionalenvironments/root tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 82,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depositionalenvironments/root', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "ff5e5302-2f48-49d1-95fd-707e505bb0f8",
                  "parentUUID": "35af41ef-6270-4529-8770-b603df11c4b4",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "ff5e5302-2f48-49d1-95fd-707e505bb0f8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 82,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "4001faff-a965-40d4-8668-907e0165d17b",
          "title": "tests for /v2.0/data/sites/{siteid}/datasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "977de630-3d73-41d5-b0bb-d80764df9766",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 119,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/2130/datasets', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "1a382bc8-32d4-403c-8715-ccd271084150",
                  "parentUUID": "977de630-3d73-41d5-b0bb-d80764df9766",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "1a382bc8-32d4-403c-8715-ccd271084150"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 119,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "ea82cb84-bb54-459e-8abc-03e63ec0ae04",
          "title": "tests for /v2.0/data/contacts",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-test.js",
          "file": "/test/v2.0-data-contacts-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "429526eb-aa66-4240-919f-01061cb61d07",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-test.js",
              "file": "/test/v2.0-data-contacts-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"contact\"",
                  "fullTitle": "tests for /v2.0/data/contacts tests for get should respond 200 for \"contact\"",
                  "timedOut": false,
                  "duration": 86,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts', { \n    'qs': {\"contactid\":16344,\"familyname\":\"va\",\"contactname\":\"CRiRvaalLDp\",\"contactstatus\":\"defunct\",\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "e401ff61-c452-4028-9026-06a11f68efd5",
                  "parentUUID": "429526eb-aa66-4240-919f-01061cb61d07",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "e401ff61-c452-4028-9026-06a11f68efd5"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 86,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "9da5c587-3645-4e43-991f-263a286626c6",
          "title": "Get occurrence data any number of ways:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/occurrence.js",
          "file": "/test/occurrence.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Get occurrence by singular id & return same id:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrence by singular id & return same id:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/12')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "833e3d3b-28f3-40a7-8ac0-36d25080f97c",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get the Flyover test call:",
              "fullTitle": "Get occurrence data any number of ways: Get the Flyover test call:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences?taxonname=rhinocerotidae,megacerops,moeritherium,ceratogaulus,gomphotherium,deinotherium,condylarthra,paraceratherium,mesonychia,pantodonta,hyaenodon,thylacosmilus,glyptodon,castoroides,toxodon,megatherium,arctodus,smilodon,mammuthus,mammut,coelodonta,megaloceras,gigantopithecus,phlegethontia,temnospondyli,lepospondyli,ichthyosauria,sauropterygia,mosasauroidea,pterosauromorpha,titanoboa,megalania,placodus,tanystropheidae,hyperodapedon,stagonolepis,scutosaurus,pareiasauria,archelon,stupendemys,protostega,placodermi,leedsichthys,onychodontiformes,acanthostega,ichthyostega,crassigyrinus,ornithosuchus,erpetosuchidae,protosuchus,dakosaurus,geosaurus,deinosuchus&lower=true&limit=999999&loc=POLYGON((-122.56 39.94,-115.21 41.96,-107.99 43.42,-100.51 44.41,-92.85 44.91,-83.49 44.84,-74.25 44.02,-70.19 43.38,-69.36 42.75,-69.02 41.76,-69.13 41.07,-69.5 40.47,-70.07 40.06,-70.75 39.9,-78.36 40.86,-85.79 41.33,-93.27 41.3,-100.68 40.78,-105.86 40.12,-111.42 39.12,-116.79 37.86,-122.28 36.29,-122.98 36.35,-123.61 36.67,-124.06 37.21,-124.27 37.88,-124.21 38.58,-123.89 39.2,-123.35 39.65,-122.56 39.94))')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "da24fb62-a811-4bd2-b9fb-e76c215f8cce",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Failing Canis test works:",
              "fullTitle": "Get occurrence data any number of ways: Failing Canis test works:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "// This casuses timeout fails for some reason.  It's frustrating.\napi.get('v2.0/data/occurrences?taxonname=Canis&lower=true&limit=999999')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "c2dd92e3-5193-49e9-ab87-fe1c36c553f8",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrence by taxon:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrence by taxon:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/12/occurrences')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "f9de6f16-a516-4120-a04f-840adebd3c12",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Break occurrences by flipping altitudes:",
              "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping altitudes:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?altmax=3000&altmin=5000')\n  .set('Accept', 'application/json')\n  .expect(500);\ndone();",
              "err": {},
              "uuid": "56b03599-76db-4106-b8a9-4dd6523cb4f1",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Break occurrences by flipping ages:",
              "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping ages:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?ageyoung=5000&ageold=3000')\n  .set('Accept', 'application/json')\n  .expect(500);\ndone();",
              "err": {},
              "uuid": "2f6ff9dc-b370-48d3-8db0-72557258b051",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Occurrences filter by age:",
              "fullTitle": "Get occurrence data any number of ways: Occurrences filter by age:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?ageyoung=3000&ageold=5000')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "5f0c26e7-5afe-4acf-891b-596282dca5d7",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrences with comma separated fields:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated fields:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/' +\n  '?siteid=12,13,14,15&taxonname=Betula&limit=200')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    const allSite = res.body['data'];\n    const siteids = [];\n    for (let i = 0; i < allSite.length; i++) {\n      siteids.push(allSite[i]['site']['siteid']);\n    };\n    const uniqueSites = Array.from(new Set(siteids)).sort(function(a, b) {\n      return a - b;\n    });\n    return (uniqueSites.every((item) => [12, 13, 14, 15].includes(item)));\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "0b96098e-353c-4266-9432-aeea0cd95a24",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrences with comma separated taxa:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated taxa:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return (res.body.data.length > 0);\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "26b74915-fe25-401e-8fc2-3ad01a027ddc",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get hierarchical occurrences with comma separated taxa:",
              "fullTitle": "Get occurrence data any number of ways: Get hierarchical occurrences with comma separated taxa:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25&lower=true')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return (res.body.data.length > 0);\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "efa56cf5-e826-4104-b972-0d272df223ca",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrences returns lower taxa:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrences returns lower taxa:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?taxonname=Myrica&lower=true&limit=200')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    const allTaxa = res.body['data'];\n    const taxaids = [];\n    for (let i = 0; i < allTaxa.length; i++) {\n      taxaids.push(allTaxa[i]['sample']['taxonname']);\n    };\n    const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n    return uniqueTaxa.length > 1;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "63e9cfb4-cb78-49ac-a561-e017077a4e15",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrences with mammals and lower taxa works:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrences with mammals and lower taxa works:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?taxonname=Homo&lower=true&limit=25')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    const allTaxa = res.body['data'];\n    const taxaids = [];\n    for (let i = 0; i < allTaxa.length; i++) {\n      taxaids.push(allTaxa[i]['sample']['taxonname']);\n    };\n    const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n    return uniqueTaxa.length > 1 & allTaxa.length > 0;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "95408cc9-f9ec-4c4c-912d-6c615b36fd73",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get occurrences using taxon and age bounds:",
              "fullTitle": "Get occurrence data any number of ways: Get occurrences using taxon and age bounds:",
              "timedOut": false,
              "duration": 0,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences/?ageyoung=2000&ageold=3000&taxonname=Pinus')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(200);\ndone();",
              "err": {},
              "uuid": "d938ed9f-19c4-4ca1-b71f-27876f3f11ae",
              "parentUUID": "9da5c587-3645-4e43-991f-263a286626c6",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "833e3d3b-28f3-40a7-8ac0-36d25080f97c",
            "da24fb62-a811-4bd2-b9fb-e76c215f8cce",
            "c2dd92e3-5193-49e9-ab87-fe1c36c553f8",
            "f9de6f16-a516-4120-a04f-840adebd3c12",
            "56b03599-76db-4106-b8a9-4dd6523cb4f1",
            "2f6ff9dc-b370-48d3-8db0-72557258b051",
            "5f0c26e7-5afe-4acf-891b-596282dca5d7",
            "0b96098e-353c-4266-9432-aeea0cd95a24",
            "26b74915-fe25-401e-8fc2-3ad01a027ddc",
            "efa56cf5-e826-4104-b972-0d272df223ca",
            "63e9cfb4-cb78-49ac-a561-e017077a4e15",
            "95408cc9-f9ec-4c4c-912d-6c615b36fd73",
            "d938ed9f-19c4-4ca1-b71f-27876f3f11ae"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 30000
        },
        {
          "uuid": "4fccc025-337d-46c3-93cf-54ce79cc559c",
          "title": "tests for /v1.5/data/downloads/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js",
          "file": "/test/v1.5-data-downloads-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "10dc3426-2c7f-4d14-9a0f-368a094fbe8c",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js",
              "file": "/test/v1.5-data-downloads-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned download object.\"",
                  "fullTitle": "tests for /v1.5/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"",
                  "timedOut": false,
                  "duration": 725,
                  "state": "passed",
                  "speed": "medium",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/downloads/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8006e50c-87ad-413f-af3c-bee0da55d183",
                  "parentUUID": "10dc3426-2c7f-4d14-9a0f-368a094fbe8c",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8006e50c-87ad-413f-af3c-bee0da55d183"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 725,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "58275220-c084-4a34-9245-cd1ec93a16fd",
          "title": "tests for /v1.5/data/occurrence/{occurrenceid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js",
          "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "7100b788-0840-4035-9583-9242275535ca",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js",
              "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A single occurrence object.\"",
                  "fullTitle": "tests for /v1.5/data/occurrence/{occurrenceid} tests for get should respond 200 for \"A single occurrence object.\"",
                  "timedOut": false,
                  "duration": 85,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/occurrence/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "86b3580e-6d2c-4d37-918e-5b1988187bf8",
                  "parentUUID": "7100b788-0840-4035-9583-9242275535ca",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "86b3580e-6d2c-4d37-918e-5b1988187bf8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 85,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "3ef0aa79-2024-459e-8337-0fbec5497efd",
          "title": "Get contact data:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/contacts.js",
          "file": "/test/contacts.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "The default limit of 25 should be reached for contact data:",
              "fullTitle": "Get contact data: The default limit of 25 should be reached for contact data:",
              "timedOut": false,
              "duration": 84,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts/?contactstatus=retired')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data.length, 25);\n    done();\n  });",
              "err": {},
              "uuid": "0dee4310-24c5-49d7-b1ef-6661602b5b41",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "The example in the swagger should return an object:",
              "fullTitle": "Get contact data: The example in the swagger should return an object:",
              "timedOut": false,
              "duration": 89,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts?familyname=Grimm&contactstatus=active&limit=25')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data[0]['familyname'], 'Grimm');\n    done();\n  });",
              "err": {},
              "uuid": "54d5125d-cd29-49b4-b8e0-7fd25fde3824",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Contact queries should be case insensitive:",
              "fullTitle": "Get contact data: Contact queries should be case insensitive:",
              "timedOut": false,
              "duration": 85,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts/?contactstatus=Retired')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data.length, 25);\n    done();\n  });",
              "err": {},
              "uuid": "d42b0c2f-9e5b-4a5e-a9cd-6acf8a7a745c",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Changing the limit should change the number of contacts retrieved:",
              "fullTitle": "Get contact data: Changing the limit should change the number of contacts retrieved:",
              "timedOut": false,
              "duration": 103,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts/?status=retired&limit=30')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data.length, 30);\n    done();\n  });",
              "err": {},
              "uuid": "ab7dbac4-2c83-42ae-9d22-5e519a55ba56",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "A single contact (12) should be returned.",
              "fullTitle": "Get contact data: A single contact (12) should be returned.",
              "timedOut": false,
              "duration": 82,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts/12')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data[0]['contactid'], 12);\n    done();\n  });",
              "err": {},
              "uuid": "fa6ec0dd-27ba-4431-8dd2-e0bba9af4491",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "All contacts from datasets should be returned.",
              "fullTitle": "Get contact data: All contacts from datasets should be returned.",
              "timedOut": false,
              "duration": 80,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/12,13/contacts')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(res.body.data.length, 2);\n    done();\n  });",
              "err": {},
              "uuid": "bad1358e-88ae-4918-aed5-45ee968bf744",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "The length of returned contacts should be equivalent to the number of datasets.",
              "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of datasets.",
              "timedOut": false,
              "duration": 79,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/12,13/contacts')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    const test = [];\n    assert.strictEqual(test.length, 0);\n    done();\n  });",
              "err": {},
              "uuid": "1e182b8d-52b7-4d28-bbc2-e56c9089506a",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "The length of returned contacts should be equivalent to the number of sites.",
              "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of sites.",
              "timedOut": false,
              "duration": 85,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/102,1435,1,27/contacts')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    if (err) return done(err);\n    assert.strictEqual(Object.keys(res.body.data).length, 4);\n    done();\n  });",
              "err": {},
              "uuid": "7f4a63bf-af1a-47d9-87fe-f8eaad392056",
              "parentUUID": "3ef0aa79-2024-459e-8337-0fbec5497efd",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "0dee4310-24c5-49d7-b1ef-6661602b5b41",
            "54d5125d-cd29-49b4-b8e0-7fd25fde3824",
            "d42b0c2f-9e5b-4a5e-a9cd-6acf8a7a745c",
            "ab7dbac4-2c83-42ae-9d22-5e519a55ba56",
            "fa6ec0dd-27ba-4431-8dd2-e0bba9af4491",
            "bad1358e-88ae-4918-aed5-45ee968bf744",
            "1e182b8d-52b7-4d28-bbc2-e56c9089506a",
            "7f4a63bf-af1a-47d9-87fe-f8eaad392056"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 687,
          "root": false,
          "rootEmpty": false,
          "_timeout": 5000
        },
        {
          "uuid": "19d1a9f9-b3d3-4f5d-86a4-645104c000c0",
          "title": "tests for /v1.5/data/sites/{siteid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-sites-{siteid}-test.js",
          "file": "/test/v1.5-data-sites-{siteid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "5e6660e2-a66c-47ce-b9ec-be9c845bd6c1",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-sites-{siteid}-test.js",
              "file": "/test/v1.5-data-sites-{siteid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of site elements.\"",
                  "fullTitle": "tests for /v1.5/data/sites/{siteid} tests for get should respond 200 for \"An array of site elements.\"",
                  "timedOut": false,
                  "duration": 83,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/sites/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "aac256e5-f695-4c16-8d58-cb2acb59f315",
                  "parentUUID": "5e6660e2-a66c-47ce-b9ec-be9c845bd6c1",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "aac256e5-f695-4c16-8d58-cb2acb59f315"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 83,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "c5b8d5e7-7547-4465-8f9c-fdd65eca86fa",
          "title": "tests for /v1.5/apps/DatasetTypes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-DatasetTypes-test.js",
          "file": "/test/v1.5-apps-DatasetTypes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "497699e3-592e-4f42-9f7c-760d3120236c",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-DatasetTypes-test.js",
              "file": "/test/v1.5-apps-DatasetTypes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"",
                  "fullTitle": "tests for /v1.5/apps/DatasetTypes tests for get should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"",
                  "timedOut": false,
                  "duration": 118,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/DatasetTypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "73c9d460-b4fd-4d32-b501-6a00901d80ca",
                  "parentUUID": "497699e3-592e-4f42-9f7c-760d3120236c",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "73c9d460-b4fd-4d32-b501-6a00901d80ca"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 118,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "200db3ea-5c71-42d4-a1b9-4f1bfdae3c03",
          "title": "tests for /v2.0/data/occurrences/{occurrenceid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js",
          "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "8c51f5e4-f7e2-4dbd-9a95-6d263f7e6ffc",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js",
              "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"occurrence\"",
                  "fullTitle": "tests for /v2.0/data/occurrences/{occurrenceid} tests for get should respond 200 for \"occurrence\"",
                  "timedOut": false,
                  "duration": 91,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences/500', { \n    'qs': {\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "06104d8a-0617-4b15-9e0e-62964ef1cca9",
                  "parentUUID": "8c51f5e4-f7e2-4dbd-9a95-6d263f7e6ffc",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "06104d8a-0617-4b15-9e0e-62964ef1cca9"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 91,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "10b6f497-c111-4ce2-8e3d-00bb9535bfb9",
          "title": "tests for /v2.0/data/downloads/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js",
          "file": "/test/v2.0-data-downloads-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "245ca261-e015-48e7-af2e-3377ccc8fac9",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js",
              "file": "/test/v2.0-data-downloads-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned download object.\"",
                  "fullTitle": "tests for /v2.0/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"",
                  "timedOut": false,
                  "duration": 3314,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/downloads/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "6853105d-cd3b-4a05-b93d-b4f45e8cb196",
                  "parentUUID": "245ca261-e015-48e7-af2e-3377ccc8fac9",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "6853105d-cd3b-4a05-b93d-b4f45e8cb196"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 3314,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "49af3130-72d1-44dc-bbb5-3e8abde2cae0",
          "title": "tests for /v2.0/apps/keywords",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-keywords-test.js",
          "file": "/test/v2.0-apps-keywords-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "8c371878-f6a8-41c8-80ae-22f7ccc440e9",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-keywords-test.js",
              "file": "/test/v2.0-apps-keywords-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A list of all keywords used for analysis units in the database.\"",
                  "fullTitle": "tests for /v2.0/apps/keywords tests for get should respond 200 for \"A list of all keywords used for analysis units in the database.\"",
                  "timedOut": false,
                  "duration": 80,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/keywords', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "0cf20c2c-1d68-4584-ad6d-81a46cef73c4",
                  "parentUUID": "8c371878-f6a8-41c8-80ae-22f7ccc440e9",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "0cf20c2c-1d68-4584-ad6d-81a46cef73c4"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 80,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "06f086b5-ddc3-4d7b-b075-68a7002b751e",
          "title": "tests for /v2.0/apps/collectiontypes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-collectiontypes-test.js",
          "file": "/test/v2.0-apps-collectiontypes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "f39c6faf-0a6b-429e-adc5-eb038054228b",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-collectiontypes-test.js",
              "file": "/test/v2.0-apps-collectiontypes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/collectiontypes tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 80,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/collectiontypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "4459cd1e-6ac1-4f06-b28e-ca0d1c65279b",
                  "parentUUID": "f39c6faf-0a6b-429e-adc5-eb038054228b",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "4459cd1e-6ac1-4f06-b28e-ca0d1c65279b"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 80,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
          "title": "Get taxon data:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/taxa.js",
          "file": "/test/taxa.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "v2.0: An empty query returns the first 25 taxa.",
              "fullTitle": "Get taxon data: v2.0: An empty query returns the first 25 taxa.",
              "timedOut": false,
              "duration": 123,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/')\n  .set('Accept', 'application/json')\n  .expect(200, done);",
              "err": {},
              "uuid": "6dc48752-52ff-4c8f-87ef-ef3b51eafd14",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: A single taxon should be returned by id:",
              "fullTitle": "Get taxon data: v2.0: A single taxon should be returned by id:",
              "timedOut": false,
              "duration": 81,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/12')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data[0]['taxonid'], 12);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "14947775-1a98-45aa-8672-12556db64d4b",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: Taxon queries should be case insensitive:",
              "fullTitle": "Get taxon data: v2.0: Taxon queries should be case insensitive:",
              "timedOut": false,
              "duration": 159,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=abies')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data[0]['taxonid'], 1);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "18296e1c-5fba-4229-8660-0f0bb5521bc6",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: Taxon queries should accept comma separated lists:",
              "fullTitle": "Get taxon data: v2.0: Taxon queries should accept comma separated lists:",
              "timedOut": false,
              "duration": 163,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data[0]['taxonid'], 1);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "5530e9d5-de8b-47f0-a915-9593375d8491",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: Hierarchical taxon queries should accept comma separated lists:",
              "fullTitle": "Get taxon data: v2.0: Hierarchical taxon queries should accept comma separated lists:",
              "timedOut": false,
              "duration": 290,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea&lower=true')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    const data = res.body.data;\n    const higher = [...new Set(data.map((x) => x.highertaxonid))];\n    /* There should be four unique higher taxon IDs:\n          * One for `Abies`\n          * One for `Picea`\n          * The rest pointing to Abies & Picea.\n        */\n    assert.strictEqual(higher.length, 4);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "5a3a761f-12a2-4df4-9022-d00070b4a2f7",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: Taxon queries should accept `*` as a wildcard:",
              "fullTitle": "Get taxon data: v2.0: Taxon queries should accept `*` as a wildcard:",
              "timedOut": false,
              "duration": 165,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=abie*')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data[0]['taxonid'], 1);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "47ad926d-dd20-44a9-830a-69188df54765",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: The default limit of 25 should be reached for taxon data:",
              "fullTitle": "Get taxon data: v2.0: The default limit of 25 should be reached for taxon data:",
              "timedOut": false,
              "duration": 677,
              "state": "passed",
              "speed": "medium",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=a*')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data.length, 25);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "a502783f-a098-4cec-a10c-cd01b2226c38",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "v2.0: Changing the limit should change the number of taxa retrieved:",
              "fullTitle": "Get taxon data: v2.0: Changing the limit should change the number of taxa retrieved:",
              "timedOut": false,
              "duration": 366,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/taxa/?taxonname=a*&limit=30')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.strictEqual(res.body.data.length, 30);\n    done();\n    if (err) {\n      console.log(err.message);\n    };\n  });",
              "err": {},
              "uuid": "5111e824-fc2c-4497-82b7-a1ee08b1f047",
              "parentUUID": "3e71b4a8-6c28-4fbf-933d-16f24ab71bf1",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "6dc48752-52ff-4c8f-87ef-ef3b51eafd14",
            "14947775-1a98-45aa-8672-12556db64d4b",
            "18296e1c-5fba-4229-8660-0f0bb5521bc6",
            "5530e9d5-de8b-47f0-a915-9593375d8491",
            "5a3a761f-12a2-4df4-9022-d00070b4a2f7",
            "47ad926d-dd20-44a9-830a-69188df54765",
            "a502783f-a098-4cec-a10c-cd01b2226c38",
            "5111e824-fc2c-4497-82b7-a1ee08b1f047"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 2024,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "b393aa08-0e28-4295-96fb-b368962b2a06",
          "title": "tests for /v2.0/apps/taxagrouptypes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js",
          "file": "/test/v2.0-apps-taxagrouptypes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "ddded0ec-886e-499e-8bdf-5588feb65404",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js",
              "file": "/test/v2.0-apps-taxagrouptypes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/taxagrouptypes tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 151,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxagrouptypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "65b95cf4-9f63-45f1-9d9f-ece251b0b642",
                  "parentUUID": "ddded0ec-886e-499e-8bdf-5588feb65404",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "65b95cf4-9f63-45f1-9d9f-ece251b0b642"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 151,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "5ff0575c-d4c2-44f6-a6a1-66e895a98e99",
          "title": "tests for /v2.0/data/dbtables/{table}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-dbtables-{table}-test.js",
          "file": "/test/v2.0-data-dbtables-{table}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "77e576d2-0e09-426c-9dbb-36dc6e897dc5",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-dbtables-{table}-test.js",
              "file": "/test/v2.0-data-dbtables-{table}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned table.\"",
                  "fullTitle": "tests for /v2.0/data/dbtables/{table} tests for get should respond 200 for \"Returned table.\"",
                  "timedOut": false,
                  "duration": 80,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables/elitidsintnisiDuis', { \n    'qs': {\"count\":false,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8ff1c53a-ad29-41ac-99cf-1bc660d6cadb",
                  "parentUUID": "77e576d2-0e09-426c-9dbb-36dc6e897dc5",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8ff1c53a-ad29-41ac-99cf-1bc660d6cadb"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 80,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "a9d6f110-0b4c-43b0-9976-a14668bdeeb2",
          "title": "tests for /v2.0/apps/taphonomysystems",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taphonomysystems-test.js",
          "file": "/test/v2.0-apps-taphonomysystems-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "fceb8aa5-bc11-4f64-9c5f-920097c345a8",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taphonomysystems-test.js",
              "file": "/test/v2.0-apps-taphonomysystems-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/taphonomysystems tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 84,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taphonomysystems', { \n    'qs': {\"datasettypeid\":18},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "a5cc6e4a-26d0-4d32-ad05-50eea18addf5",
                  "parentUUID": "fceb8aa5-bc11-4f64-9c5f-920097c345a8",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "a5cc6e4a-26d0-4d32-ad05-50eea18addf5"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 84,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "e76216d0-9a00-477f-b72c-7767a7bc9152",
          "title": "tests for /v2.0/data/dbtables",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-dbtables-test.js",
          "file": "/test/v2.0-data-dbtables-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "e0ddfdf3-2be8-406a-b48e-e45d2850a5aa",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-dbtables-test.js",
              "file": "/test/v2.0-data-dbtables-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned table.\"",
                  "fullTitle": "tests for /v2.0/data/dbtables tests for get should respond 200 for \"Returned table.\"",
                  "timedOut": false,
                  "duration": 81,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables', { \n    'qs': {\"table\":\"Duis pariatur\",\"count\":false,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "708dccc3-161c-49a2-8197-beff2c28423a",
                  "parentUUID": "e0ddfdf3-2be8-406a-b48e-e45d2850a5aa",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "708dccc3-161c-49a2-8197-beff2c28423a"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 81,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "f48aa06e-6477-4a06-867d-48c2041533c3",
          "title": "tests for /v2.0/data/occurrences",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-occurrences-test.js",
          "file": "/test/v2.0-data-occurrences-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "b27f2759-34be-4e95-bf1b-87c1ec63e846",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-occurrences-test.js",
              "file": "/test/v2.0-data-occurrences-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"occurrence\"",
                  "fullTitle": "tests for /v2.0/data/occurrences tests for get should respond 200 for \"occurrence\"",
                  "timedOut": false,
                  "duration": 133,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences', { \n    'qs': {\"taxonname\":\"in laborum\",\"taxonid\":8523,\"siteid\":7926,\"sitename\":\"et Lorem exercitation\",\"datasettype\":\"X-ray fluorescence (XRF)\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":956783,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "53817d9f-b211-4e80-880a-fcbe02b46e1d",
                  "parentUUID": "b27f2759-34be-4e95-bf1b-87c1ec63e846",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "53817d9f-b211-4e80-880a-fcbe02b46e1d"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 133,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "522f9ef4-6224-4a99-aedc-32ff07109177",
          "title": "tests for /v2.0/data/spatial/lakes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-lakes-test.js",
          "file": "/test/v2.0-data-spatial-lakes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "c73d1a5b-dd50-422e-bfdf-360f8d6cb5c0",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-lakes-test.js",
              "file": "/test/v2.0-data-spatial-lakes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):<br> * Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"",
                  "fullTitle": "tests for /v2.0/data/spatial/lakes tests for get should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):<br> * Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"",
                  "timedOut": false,
                  "duration": 230,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/lakes', { \n    'qs': {\"siteid\":22014,\"buffer\":7113,\"prec\": 1000,\"proj\": 4326},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "6957026d-dcee-4971-9b80-a16d135917e1",
                  "parentUUID": "c73d1a5b-dd50-422e-bfdf-360f8d6cb5c0",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "6957026d-dcee-4971-9b80-a16d135917e1"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 230,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "535e1099-3e91-4eea-8351-588fd64517a1",
          "title": "tests for /v2.0/data/datasets/{datasetid}/sites",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "db0728fc-660f-4020-9e2c-54cefa4c0cc5",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Site\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/sites tests for get should respond 200 for \"Site\"",
                  "timedOut": false,
                  "duration": 85,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/sites', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "110aed8c-4fc1-4ece-bcb0-8465a814b78f",
                  "parentUUID": "db0728fc-660f-4020-9e2c-54cefa4c0cc5",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "110aed8c-4fc1-4ece-bcb0-8465a814b78f"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 85,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "6d373f47-7d74-4e5a-b98e-b054a27de9b7",
          "title": "tests for /v2.0/data/chronologies/{chronid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js",
          "file": "/test/v2.0-data-chronologies-{chronid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "f6e3faa6-7047-4ef1-a86b-369a5276792c",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js",
              "file": "/test/v2.0-data-chronologies-{chronid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A Neotoma chronology object.\"",
                  "fullTitle": "tests for /v2.0/data/chronologies/{chronid} tests for get should respond 200 for \"A Neotoma chronology object.\"",
                  "timedOut": false,
                  "duration": 88,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/chronologies/2377', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "dea1276b-7176-430b-b648-d64fb9f4cd2a",
                  "parentUUID": "f6e3faa6-7047-4ef1-a86b-369a5276792c",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "dea1276b-7176-430b-b648-d64fb9f4cd2a"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 88,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "fcbb9a9d-5f21-484e-a419-375153e36840",
          "title": "tests for /v2.0/data/datasets/{datasetid}/doi",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "0494865a-1e11-463b-87ac-302c48e452f1",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"DOI\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/doi tests for get should respond 200 for \"DOI\"",
                  "timedOut": false,
                  "duration": 79,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/doi', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8867300c-043e-4528-890a-a245dd8acf94",
                  "parentUUID": "0494865a-1e11-463b-87ac-302c48e452f1",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8867300c-043e-4528-890a-a245dd8acf94"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 79,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "6caceaaf-2c39-4b7d-9018-9eb2bfc42859",
          "title": "tests for /v1.5/data/contacts/{contactid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js",
          "file": "/test/v1.5-data-contacts-{contactid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "e0fd4ee3-7bbb-47a4-817d-f7dc058dee72",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js",
              "file": "/test/v1.5-data-contacts-{contactid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Contact\"",
                  "fullTitle": "tests for /v1.5/data/contacts/{contactid} tests for get should respond 200 for \"Contact\"",
                  "timedOut": false,
                  "duration": 78,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/contacts/-43687448', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "1b1c9f83-2a11-48f3-8de4-38166f094d39",
                  "parentUUID": "e0fd4ee3-7bbb-47a4-817d-f7dc058dee72",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "1b1c9f83-2a11-48f3-8de4-38166f094d39"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 78,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "33d10cab-8aff-4a39-a342-53bb1b3d2a0c",
          "title": "tests for /v2.0/data/datasets_elc/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js",
          "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "fed6b626-69e9-4985-8bf2-0cbf3bccc470",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js",
              "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"",
                  "fullTitle": "tests for /v2.0/data/datasets_elc/{datasetid} tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"",
                  "timedOut": false,
                  "duration": 2573,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "4dc35000-c8dd-4696-9ba9-66452cbfda6d",
                  "parentUUID": "fed6b626-69e9-4985-8bf2-0cbf3bccc470",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "4dc35000-c8dd-4696-9ba9-66452cbfda6d"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 2573,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "dc04a7ea-0178-4c76-a06d-0371908bd2b8",
          "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js",
          "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "06d3f518-802f-416a-a47e-2a087b4433d8",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js",
              "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of sites.\"",
                  "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites tests for get should respond 200 for \"An array of sites.\"",
                  "timedOut": false,
                  "duration": 91,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/4146/sites', { \n    'qs': {\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "0e65cb4d-75f1-446a-bab6-d938354bd087",
                  "parentUUID": "06d3f518-802f-416a-a47e-2a087b4433d8",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "0e65cb4d-75f1-446a-bab6-d938354bd087"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 91,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "f73d7b3d-b2a3-4bea-b91c-2797f619e588",
          "title": "tests for /v2.0/data/sites/{siteid}/chronologies",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "3ee1b47a-6165-49bb-b0da-fa083d830359",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"chronology\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid}/chronologies tests for get should respond 200 for \"chronology\"",
                  "timedOut": false,
                  "duration": 936,
                  "state": "passed",
                  "speed": "medium",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/1711/chronologies', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "d279d0cc-9599-4418-a415-445d972b8ac3",
                  "parentUUID": "3ee1b47a-6165-49bb-b0da-fa083d830359",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "d279d0cc-9599-4418-a415-445d972b8ac3"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 936,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "cc4b16f4-677f-45fd-bcc4-fb1726833620",
          "title": "tests for /v2.0/data/datasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-test.js",
          "file": "/test/v2.0-data-datasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "ea70fe89-4c72-4a37-876d-90b16401109e",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-test.js",
              "file": "/test/v2.0-data-datasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/datasets tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 303,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets', { \n    'qs': {\"sitename\":\"ut cillum consectetur\",\"database\":\"St. Croix Watershed Research Station of the Science Museum of Minnesota\",\"datasettype\":\"macroinvertebrate\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":31891,\"datasetid\":23595575,\"doi\":\"10B18997295/TZX21W4\",\"gpid\":5392,\"keyword\":\"modern\",\"contactid\":20234,\"taxa\":\"exercitation amet irure Excepteur\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":7003042,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "bd6c8f6a-6cd0-44b1-b78b-de09410a6da9",
                  "parentUUID": "ea70fe89-4c72-4a37-876d-90b16401109e",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "bd6c8f6a-6cd0-44b1-b78b-de09410a6da9"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 303,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "55006dca-b29c-4a54-81ce-de26289e627d",
          "title": "tests for /v2.0/data/datasets/{datasetid}/contacts",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "cf1fee6e-054b-4b20-a439-ab110296248d",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"contact\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/contacts tests for get should respond 200 for \"contact\"",
                  "timedOut": false,
                  "duration": 78,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/contacts', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "4839f92a-f628-42d6-918e-6ff3320bf694",
                  "parentUUID": "cf1fee6e-054b-4b20-a439-ab110296248d",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "4839f92a-f628-42d6-918e-6ff3320bf694"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 78,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "e07fa6e2-6101-411f-98cd-6105349198f4",
          "title": "Get geopolitical data:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/geopolitical.js",
          "file": "/test/geopolitical.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "An empty query returns a valid response.",
              "fullTitle": "Get geopolitical data: An empty query returns a valid response.",
              "timedOut": false,
              "duration": 105,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/geopoliticalunits/')\n  .set('Accept', 'application/json')\n  .expect(200, done);",
              "err": {},
              "uuid": "21640fca-2846-4018-bebc-15deb656af33",
              "parentUUID": "e07fa6e2-6101-411f-98cd-6105349198f4",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "The default limit of 25 should be reached for country level data:",
              "fullTitle": "Get geopolitical data: The default limit of 25 should be reached for country level data:",
              "timedOut": false,
              "duration": 86,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/geopoliticalunits/?rank=1')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.equal(res.body.data.length, 25);\n    done();\n  });",
              "err": {},
              "uuid": "abb29302-3742-43ce-8241-60f826f778f7",
              "parentUUID": "e07fa6e2-6101-411f-98cd-6105349198f4",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Changing the limit should change the number of countries retrieved:",
              "fullTitle": "Get geopolitical data: Changing the limit should change the number of countries retrieved:",
              "timedOut": false,
              "duration": 80,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/geopoliticalunits/?rank=1&limit=30')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.equal(res.body.data.length, 30);\n    done();\n  });",
              "err": {},
              "uuid": "19f7696c-a0d0-45af-997c-a28a04d26d56",
              "parentUUID": "e07fa6e2-6101-411f-98cd-6105349198f4",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "A single geopolitical unit (12) should be returned.",
              "fullTitle": "Get geopolitical data: A single geopolitical unit (12) should be returned.",
              "timedOut": false,
              "duration": 79,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/geopoliticalunits/12')\n  .set('Accept', 'application/json')\n  .end(function(err, res) {\n    assert.equal(res.body.data[0]['geopoliticalid'], 12);\n    done();\n  });",
              "err": {},
              "uuid": "ed7d8d03-264f-4e29-9c16-cd45f75ecc88",
              "parentUUID": "e07fa6e2-6101-411f-98cd-6105349198f4",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "21640fca-2846-4018-bebc-15deb656af33",
            "abb29302-3742-43ce-8241-60f826f778f7",
            "19f7696c-a0d0-45af-997c-a28a04d26d56",
            "ed7d8d03-264f-4e29-9c16-cd45f75ecc88"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 350,
          "root": false,
          "rootEmpty": false,
          "_timeout": 5000
        },
        {
          "uuid": "c8c04131-448e-4687-8b41-d8c64b6af536",
          "title": "Any path goes to the api documentation:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/neotoma_test.js",
          "file": "/test/neotoma_test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "`api-docs` redirects to the api documentation.",
              "fullTitle": "Any path goes to the api documentation: `api-docs` redirects to the api documentation.",
              "timedOut": false,
              "duration": 2,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2')\n  .set('Accept', 'application/json')\n  .expect(302, done);",
              "err": {},
              "uuid": "56b67ff7-1c75-4350-936c-3d7771479133",
              "parentUUID": "c8c04131-448e-4687-8b41-d8c64b6af536",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "56b67ff7-1c75-4350-936c-3d7771479133"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 2,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
          "title": "Get publication data any number of ways:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/publications.js",
          "file": "/test/publications.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Get publication by singular id & return same id:",
              "fullTitle": "Get publication data any number of ways: Get publication by singular id & return same id:",
              "timedOut": false,
              "duration": 92,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/publications/12')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body.data[0].publication.publicationid === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "fd70363a-0b34-4984-8ac0-35a2bb54f45f",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publication by comma sepatarated ids:",
              "fullTitle": "Get publication data any number of ways: Get publication by comma sepatarated ids:",
              "timedOut": false,
              "duration": 84,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/publications/12,13')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body.data.map((x) => x.publicationid) == [12, 13];\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "7d523473-2821-40c6-9da2-78cfdc72ad8f",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publication by querying author:",
              "fullTitle": "Get publication data any number of ways: Get publication by querying author:",
              "timedOut": false,
              "duration": 346,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/publications?familyname=Grimm')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body.data.result.length > 0;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "fcf36476-e1be-4189-9d97-01e5ec941d82",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publications using pubs with missing links:",
              "fullTitle": "Get publication data any number of ways: Get publications using pubs with missing links:",
              "timedOut": false,
              "duration": 91,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/publications?publicationid=12,14,1412,99999')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body.data.result.length > 0;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "3c398781-8bae-423c-87fb-32cfbe1bd098",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publication by site id:",
              "fullTitle": "Get publication data any number of ways: Get publication by site id:",
              "timedOut": false,
              "duration": 88,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/12/publications')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body.data.length > 0;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "438458a3-21f3-4a1e-a2ad-be122fec9624",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publication by site id finds pubs for all sites:",
              "fullTitle": "Get publication data any number of ways: Get publication by site id finds pubs for all sites:",
              "timedOut": false,
              "duration": 95,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/12,13,14,15/publications')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    const flatten = (list) => list.reduce(\n      (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n    );\n    const sites = [12, 13, 14, 15];\n    const siteids = flatten(res.body.data.map((x) => x.siteid));\n    return sites.every((x) => siteids.includes(x));\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "7f5aa9a5-42bc-40df-8831-8500cc0d9de0",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get publication by dataset id finds pubs for all datasets:",
              "fullTitle": "Get publication data any number of ways: Get publication by dataset id finds pubs for all datasets:",
              "timedOut": false,
              "duration": 94,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/12,13,2201,6000/publications')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    const flatten = (list) => list.reduce(\n      (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n    );\n    const datasets = [12, 6000, 13, 2201];\n    const datasetids = flatten(res.body.data.map((x) => x.datasetid));\n    return datasets.every((x) => datasetids.includes(x));\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "9d838ea8-80dd-404b-a4fb-e601feb9618b",
              "parentUUID": "03f4cf03-4205-45fb-9d3d-a2f3dc489f8c",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "fd70363a-0b34-4984-8ac0-35a2bb54f45f",
            "7d523473-2821-40c6-9da2-78cfdc72ad8f",
            "fcf36476-e1be-4189-9d97-01e5ec941d82",
            "3c398781-8bae-423c-87fb-32cfbe1bd098",
            "438458a3-21f3-4a1e-a2ad-be122fec9624",
            "7f5aa9a5-42bc-40df-8831-8500cc0d9de0",
            "9d838ea8-80dd-404b-a4fb-e601feb9618b"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 890,
          "root": false,
          "rootEmpty": false,
          "_timeout": 15000
        },
        {
          "uuid": "9c5b87a1-cddf-439a-b522-11428453060e",
          "title": "tests for /v2.0/data/summary/rawbymonth",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js",
          "file": "/test/v2.0-data-summary-rawbymonth-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "1215b9c6-ac60-489b-ba0b-6c842c0f6735",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js",
              "file": "/test/v2.0-data-summary-rawbymonth-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A count of the data objects added to Neotoma.\"",
                  "fullTitle": "tests for /v2.0/data/summary/rawbymonth tests for get should respond 200 for \"A count of the data objects added to Neotoma.\"",
                  "timedOut": false,
                  "duration": 15623,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/rawbymonth', { \n    'qs': {\"start\": 1,\"end\": 10},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "e464bab8-5dff-4096-8687-5694ff636681",
                  "parentUUID": "1215b9c6-ac60-489b-ba0b-6c842c0f6735",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "e464bab8-5dff-4096-8687-5694ff636681"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 15623,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "80edfff0-4fa4-4b32-af40-d247e51b7be3",
          "title": "tests for /v2.0/data/datasets/{datasetid}/chronologies",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "de39b591-9069-4087-bbbf-475177c7fcfc",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"chronology\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/chronologies tests for get should respond 200 for \"chronology\"",
                  "timedOut": false,
                  "duration": 88,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/chronologies', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "1c55f978-5206-4cf8-9859-e031288dd1bc",
                  "parentUUID": "de39b591-9069-4087-bbbf-475177c7fcfc",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "1c55f978-5206-4cf8-9859-e031288dd1bc"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 88,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "210371e4-4fab-4cb0-a9bd-eece9649e8b3",
          "title": "tests for /v2.0/data/geopoliticalunits/{gpid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js",
          "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "bde09a8b-1f9f-49f5-9ad7-9ce3b9ed4133",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js",
              "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of geopolitical units.\"",
                  "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"",
                  "timedOut": false,
                  "duration": 78,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/523', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "d862e0fa-8ae8-4213-b7be-37780444c861",
                  "parentUUID": "bde09a8b-1f9f-49f5-9ad7-9ce3b9ed4133",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "d862e0fa-8ae8-4213-b7be-37780444c861"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 78,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "2cbe9c0e-7489-4b70-b363-b13f74fb08ea",
          "title": "tests for /v1.5/dbtables/{table}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-dbtables-{table}-test.js",
          "file": "/test/v1.5-dbtables-{table}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "30ca43a0-f387-4cbd-8afd-bb833691ce32",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-dbtables-{table}-test.js",
              "file": "/test/v1.5-dbtables-{table}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned table.\"",
                  "fullTitle": "tests for /v1.5/dbtables/{table} tests for get should respond 200 for \"Returned table.\"",
                  "timedOut": false,
                  "duration": 78,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/dbtables/geochrontypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8b06f0c3-2027-4804-8023-cba7d520b1ee",
                  "parentUUID": "30ca43a0-f387-4cbd-8afd-bb833691ce32",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8b06f0c3-2027-4804-8023-cba7d520b1ee"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 78,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "2cff37d3-5de1-49c0-bd8d-58421df55e6d",
          "title": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "db2ad6a2-bfd4-4b4a-b0a0-d9c67c6b6794",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of geopolitical units.\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"",
                  "timedOut": false,
                  "duration": 82,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/geopoliticalunits', { \n    'qs': {\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "cbc66d22-e7b8-4851-a3a1-562ee6a87c92",
                  "parentUUID": "db2ad6a2-bfd4-4b4a-b0a0-d9c67c6b6794",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "cbc66d22-e7b8-4851-a3a1-562ee6a87c92"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 82,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "009382e2-b23f-4e2a-916e-e0f55d62ec3d",
          "title": "tests for /v2.0/data/speleothems/{collectionunitid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js",
          "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "20d53d0c-b235-4015-994b-da6067ecc8e0",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js",
              "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"",
                  "fullTitle": "tests for /v2.0/data/speleothems/{collectionunitid} tests for get should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"",
                  "timedOut": false,
                  "duration": 90,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/speleothems/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "9a3ea332-0a9c-4d62-9280-1ec77805529a",
                  "parentUUID": "20d53d0c-b235-4015-994b-da6067ecc8e0",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "9a3ea332-0a9c-4d62-9280-1ec77805529a"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 90,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "3ff3bff5-b4e1-4e1c-b9ca-67890a2de15d",
          "title": "tests for /v2.0/apps/taxaindatasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taxaindatasets-test.js",
          "file": "/test/v2.0-apps-taxaindatasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "dc3ab41c-0c57-49ea-a29e-8a378961c965",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-taxaindatasets-test.js",
              "file": "/test/v2.0-apps-taxaindatasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"",
                  "fullTitle": "tests for /v2.0/apps/taxaindatasets tests for get should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"",
                  "timedOut": false,
                  "duration": 1300,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxaindatasets', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "a014795d-c2de-467c-8241-596135cf9881",
                  "parentUUID": "dc3ab41c-0c57-49ea-a29e-8a378961c965",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "a014795d-c2de-467c-8241-596135cf9881"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 1300,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "69257e0b-66cf-4c74-b2d3-3f117f164407",
          "title": "tests for /v2.0/data/sites/{siteid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "d4462293-80f1-4209-9cf6-4af823eaa2eb",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of sites.\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid} tests for get should respond 200 for \"An array of sites.\"",
                  "timedOut": false,
                  "duration": 208,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "26f8757c-0b3b-4e35-b759-1ad5f11c29a8",
                  "parentUUID": "d4462293-80f1-4209-9cf6-4af823eaa2eb",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "26f8757c-0b3b-4e35-b759-1ad5f11c29a8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 208,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "bde1f8a7-7be6-4423-979a-73270de8c412",
          "title": "tests for /v2.0/apps/authorpis",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-authorpis-test.js",
          "file": "/test/v2.0-apps-authorpis-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "8e58046c-f13b-42cd-ab0f-aa268b0964a6",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-authorpis-test.js",
              "file": "/test/v2.0-apps-authorpis-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/authorpis tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 257,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/authorpis', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "ee31fb51-5755-467b-83db-7f1e2e615d28",
                  "parentUUID": "8e58046c-f13b-42cd-ab0f-aa268b0964a6",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "ee31fb51-5755-467b-83db-7f1e2e615d28"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 257,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "68f8c70f-4a33-4786-9f93-cee4259d1877",
          "title": "tests for /v2.0/data/sites/{siteid}/contacts",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "afc44a25-9407-484e-b334-c1c57c1faf15",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"contact\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid}/contacts tests for get should respond 200 for \"contact\"",
                  "timedOut": false,
                  "duration": 82,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/contacts', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "44fc619f-9398-4aaa-84cb-35c04b1d424e",
                  "parentUUID": "afc44a25-9407-484e-b334-c1c57c1faf15",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "44fc619f-9398-4aaa-84cb-35c04b1d424e"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 82,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "2e4a7626-176b-4ee6-9004-2226d2f1caf2",
          "title": "tests for /v1.5/data/geopoliticalunits/{gpid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js",
          "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "4d843b6f-fb83-4821-9eff-212c26c0d417",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js",
              "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of geopolitical units.\"",
                  "fullTitle": "tests for /v1.5/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"",
                  "timedOut": false,
                  "duration": 79,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits/7324', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "b02fccd1-80f3-4213-9b3b-36274f8d545b",
                  "parentUUID": "4d843b6f-fb83-4821-9eff-212c26c0d417",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "b02fccd1-80f3-4213-9b3b-36274f8d545b"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 79,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "501216de-4c9b-4f76-975e-8e803ec1412f",
          "title": "tests for /v2.0/apps/constdb",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-test.js",
          "file": "/test/v2.0-apps-constdb-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "eeda346e-214e-41fe-b348-6f401251ba67",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-test.js",
              "file": "/test/v2.0-apps-constdb-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"",
                  "fullTitle": "tests for /v2.0/apps/constdb tests for get should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"",
                  "timedOut": false,
                  "duration": 19703,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "3cd606bb-3a21-44ea-af0d-e013b4aaf084",
                  "parentUUID": "eeda346e-214e-41fe-b348-6f401251ba67",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "3cd606bb-3a21-44ea-af0d-e013b4aaf084"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 19703,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "12b97d25-0e2a-4c74-8563-6c23c865ed4c",
          "title": "tests for /v2.0/data/spatial/icesheet",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-icesheet-test.js",
          "file": "/test/v2.0-data-spatial-icesheet-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "cd080ccb-bb4b-44f3-b181-13a398bc8c70",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-icesheet-test.js",
              "file": "/test/v2.0-data-spatial-icesheet-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"",
                  "fullTitle": "tests for /v2.0/data/spatial/icesheet tests for get should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"",
                  "timedOut": false,
                  "duration": 186,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/icesheet', { \n    'qs': {\"age\":7703,\"proj\": 4326,\"prec\": 1000},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "855ca891-74f6-4339-94b5-0dc188695086",
                  "parentUUID": "cd080ccb-bb4b-44f3-b181-13a398bc8c70",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "855ca891-74f6-4339-94b5-0dc188695086"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 186,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "d51f0e4e-d772-40a7-800d-20e71ab47016",
          "title": "tests for /v2.0/data/spatial/faunal",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-faunal-test.js",
          "file": "/test/v2.0-data-spatial-faunal-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "4227aa3b-652f-43f2-a877-e8cd0a983e08",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-spatial-faunal-test.js",
              "file": "/test/v2.0-data-spatial-faunal-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:<br> * Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).<br> * Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"",
                  "fullTitle": "tests for /v2.0/data/spatial/faunal tests for get should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:<br> * Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).<br> * Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"",
                  "timedOut": false,
                  "duration": 88,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/faunal', { \n    'qs': {\"sciname\":\"nulla cupidatat pariatur laboris aliquip\",\"proj\": 4326,\"prec\": 1000},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "5fc48012-4701-48cd-b5db-28c5e484a66d",
                  "parentUUID": "4227aa3b-652f-43f2-a877-e8cd0a983e08",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "5fc48012-4701-48cd-b5db-28c5e484a66d"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 88,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "d3fcfc9a-e1bf-4398-9d97-a191b04762fa",
          "title": "tests for /v2.0/data/taxa/{taxonid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js",
          "file": "/test/v2.0-data-taxa-{taxonid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "eda3410c-ad60-4c59-a429-69d3984623fe",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js",
              "file": "/test/v2.0-data-taxa-{taxonid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A taxon or array of taxa.\"",
                  "fullTitle": "tests for /v2.0/data/taxa/{taxonid} tests for get should respond 200 for \"A taxon or array of taxa.\"",
                  "timedOut": false,
                  "duration": 81,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "3e1631bf-4ad7-40d7-8d7f-3f2e4bca0737",
                  "parentUUID": "eda3410c-ad60-4c59-a429-69d3984623fe",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "3e1631bf-4ad7-40d7-8d7f-3f2e4bca0737"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 81,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "efe960be-453f-4fad-9122-91743bd96c53",
          "title": "tests for /v2.0/apps/constdb/datasetages",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js",
          "file": "/test/v2.0-apps-constdb-datasetages-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "357ad4d6-1fe5-4a7a-857f-584152960feb",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js",
              "file": "/test/v2.0-apps-constdb-datasetages-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"",
                  "fullTitle": "tests for /v2.0/apps/constdb/datasetages tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"",
                  "timedOut": false,
                  "duration": 11173,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetages', { \n    'qs': {\"dbid\":7},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "47f2a7a0-cea8-4a6c-ac14-e67050ce00f8",
                  "parentUUID": "357ad4d6-1fe5-4a7a-857f-584152960feb",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "47f2a7a0-cea8-4a6c-ac14-e67050ce00f8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 11173,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "b30639c3-87ac-42d0-986a-bbc3d98a4de8",
          "title": "tests for /v1.5/apps/collectionTypes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-collectionTypes-test.js",
          "file": "/test/v1.5-apps-collectionTypes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "9b151228-8fd2-407e-b0fe-932a85472b32",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-collectionTypes-test.js",
              "file": "/test/v1.5-apps-collectionTypes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"",
                  "fullTitle": "tests for /v1.5/apps/collectionTypes tests for get should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"",
                  "timedOut": false,
                  "duration": 78,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/collectionTypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "7e6a4844-4c6c-48a7-a934-a6d34531b6cb",
                  "parentUUID": "9b151228-8fd2-407e-b0fe-932a85472b32",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "7e6a4844-4c6c-48a7-a934-a6d34531b6cb"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 78,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "2fb813bd-eec0-4e49-af82-7fddfc8f5d5f",
          "title": "tests for /v1.5/data/geopoliticalunits",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-geopoliticalunits-test.js",
          "file": "/test/v1.5-data-geopoliticalunits-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "f33e24f3-a873-4aaa-8f0a-b2761ec56476",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-geopoliticalunits-test.js",
              "file": "/test/v1.5-data-geopoliticalunits-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of geopolitical units.\"",
                  "fullTitle": "tests for /v1.5/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"",
                  "timedOut": false,
                  "duration": 104,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits', { \n    'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":4,\"lower\":false},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "ec6ad1eb-ef7f-4a63-b577-4937be6e5fcf",
                  "parentUUID": "f33e24f3-a873-4aaa-8f0a-b2761ec56476",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "ec6ad1eb-ef7f-4a63-b577-4937be6e5fcf"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 104,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "1fd79d22-af9b-4154-89a3-333ebaa9e00e",
          "title": "tests for /v2.0/data/publications",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-publications-test.js",
          "file": "/test/v2.0-data-publications-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "57bff6ff-924b-400e-bd66-958f3e698770",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-publications-test.js",
              "file": "/test/v2.0-data-publications-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A list of publications.\"",
                  "fullTitle": "tests for /v2.0/data/publications tests for get should respond 200 for \"A list of publications.\"",
                  "timedOut": false,
                  "duration": 84,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications', { \n    'qs': {\"publicationid\":16502,\"datasetid\":78894653,\"siteid\":36633,\"familyname\":\"jBMy \",\"pubtype\":\"Undergraduate thesis\",\"year\":1584,\"search\":\"adipisicing ad ut\",\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "a51be199-a644-4db2-91fd-7b3381544a2b",
                  "parentUUID": "57bff6ff-924b-400e-bd66-958f3e698770",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "a51be199-a644-4db2-91fd-7b3381544a2b"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 84,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "7bdcd896-44c4-4b19-9109-8a754fe96387",
          "title": "tests for /v2.0/data/geopoliticalunits",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-test.js",
          "file": "/test/v2.0-data-geopoliticalunits-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "6d27439a-9565-40a5-ad2e-0c697da87446",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-test.js",
              "file": "/test/v2.0-data-geopoliticalunits-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of geopolitical units.\"",
                  "fullTitle": "tests for /v2.0/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"",
                  "timedOut": false,
                  "duration": 79,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits', { \n    'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":3,\"lower\":false},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "67cabe8f-21c2-44a3-8629-315de2a2cc2b",
                  "parentUUID": "6d27439a-9565-40a5-ad2e-0c697da87446",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "67cabe8f-21c2-44a3-8629-315de2a2cc2b"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 79,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "108428d3-19fd-468b-9a24-3090d748a7de",
          "title": "tests for /v1.5/data/datasets/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js",
          "file": "/test/v1.5-data-datasets-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "195e7ea1-7ccf-443a-bc98-cdf319d78851",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js",
              "file": "/test/v1.5-data-datasets-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v1.5/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 1931,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/data/datasets/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "a774bb29-e4a4-462e-acaf-f73e9868288a",
                  "parentUUID": "195e7ea1-7ccf-443a-bc98-cdf319d78851",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "a774bb29-e4a4-462e-acaf-f73e9868288a"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 1931,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "3a45a7ad-c7dc-4243-9d84-8eb528244217",
          "title": "tests for /v2.0/data/pollen/{id}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-pollen-{id}-test.js",
          "file": "/test/v2.0-data-pollen-{id}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "32e4946f-7244-4779-abbc-b9503f9fd376",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-pollen-{id}-test.js",
              "file": "/test/v2.0-data-pollen-{id}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"",
                  "fullTitle": "tests for /v2.0/data/pollen/{id} tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"",
                  "timedOut": false,
                  "duration": 2,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen/446', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8fdde587-a9f2-4667-bb3d-313af597019c",
                  "parentUUID": "32e4946f-7244-4779-abbc-b9503f9fd376",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8fdde587-a9f2-4667-bb3d-313af597019c"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 2,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "8a36cc1b-5039-462b-ae3c-99f79e96b533",
          "title": "tests for /v2.0/data/taxa",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-test.js",
          "file": "/test/v2.0-data-taxa-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "0f8a9cd7-a90e-464f-9c6b-9f66a74fe95f",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-test.js",
              "file": "/test/v2.0-data-taxa-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A taxon or array of taxa.\"",
                  "fullTitle": "tests for /v2.0/data/taxa tests for get should respond 200 for \"A taxon or array of taxa.\"",
                  "timedOut": false,
                  "duration": 171,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { \n    'qs': {\"taxonname\":\"in labore proident\",\"taxagroup\":\"est esse dolore\",\"ecolgroup\":\"dolor exercitation nostrud\",\"status\":0,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "371fdd5a-94e6-43e9-a78b-2ea3e00dc890",
                  "parentUUID": "0f8a9cd7-a90e-464f-9c6b-9f66a74fe95f",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "371fdd5a-94e6-43e9-a78b-2ea3e00dc890"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 171,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "4334453b-db3b-41a8-b28a-b4954d097886",
          "title": "tests for /v1.5/apps/TaxaInDatasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js",
          "file": "/test/v1.5-apps-TaxaInDatasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "90417f4b-a921-4c9e-bd8a-e6615527a5b4",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js",
              "file": "/test/v1.5-apps-TaxaInDatasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of taxon identities with associated dataset IDs.\"",
                  "fullTitle": "tests for /v1.5/apps/TaxaInDatasets tests for get should respond 200 for \"An array of taxon identities with associated dataset IDs.\"",
                  "timedOut": false,
                  "duration": 1366,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/TaxaInDatasets', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "6bffe801-3bbc-4ea7-ae16-fa98b1be2bff",
                  "parentUUID": "90417f4b-a921-4c9e-bd8a-e6615527a5b4",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "6bffe801-3bbc-4ea7-ae16-fa98b1be2bff"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 1366,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "35250d30-e58a-4e24-861d-7529cb9f503f",
          "title": "tests for /v2.0/data/summary/dstypemonth",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js",
          "file": "/test/v2.0-data-summary-dstypemonth-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "bebf9f7e-247f-4dd0-ae48-0ff14e7837b2",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js",
              "file": "/test/v2.0-data-summary-dstypemonth-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"",
                  "fullTitle": "tests for /v2.0/data/summary/dstypemonth tests for get should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"",
                  "timedOut": false,
                  "duration": 204,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dstypemonth', { \n    'qs': {\"start\": 1,\"end\": 10},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "b28c012d-458d-4dfd-bd18-a4c0b645a3f7",
                  "parentUUID": "bebf9f7e-247f-4dd0-ae48-0ff14e7837b2",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "b28c012d-458d-4dfd-bd18-a4c0b645a3f7"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 204,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
          "title": "Get site data any number of ways:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/sites.js",
          "file": "/test/sites.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Get site by singular id & return same id:",
              "fullTitle": "Get site data any number of ways: Get site by singular id & return same id:",
              "timedOut": false,
              "duration": 85,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/12')\n  .set('Accept', 'application/json')\n  .end((err, res) => {\n    if (err) return done(err);\n    expect(res.body['data'][0]['siteid'] === 12 & Object.keys(res.body['data'][0]).length > 0);\n    done();\n  });",
              "err": {},
              "uuid": "e4c4a5ad-9a9e-4a09-a320-cd8ea405911f",
              "parentUUID": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get site by altitude:",
              "fullTitle": "Get site data any number of ways: Get site by altitude:",
              "timedOut": false,
              "duration": 1447,
              "state": "passed",
              "speed": "slow",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/?altmax=5000&altmin=3000')\n  .set('Accept', 'application/json')\n  .end((err, res) => {\n    if (err) return done(err);\n    expect(Object.keys(res.body['data'][0]).length > 0);\n    done();\n  });",
              "err": {},
              "uuid": "e3c8a918-b5e1-4517-aaa3-7c710f206b84",
              "parentUUID": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Break sites by flipping altitudes:",
              "fullTitle": "Get site data any number of ways: Break sites by flipping altitudes:",
              "timedOut": false,
              "duration": 1,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/?altmax=3000&altmin=5000')\n  .set('Accept', 'application/json')\n  .end((err, res) => {\n    if (err) return done(err);\n    expect(res.body.status === 'failure');\n    done();\n  });",
              "err": {},
              "uuid": "82576689-1f69-4686-bfa0-af9854bcc1ae",
              "parentUUID": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Break sites by passing invalid siteid:",
              "fullTitle": "Get site data any number of ways: Break sites by passing invalid siteid:",
              "timedOut": false,
              "duration": 78,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/abcd')\n  .set('Accept', 'application/json')\n  .end((err, res) => {\n    if (err) return done(err);\n    expect(500, done);\n    done();\n  });",
              "err": {},
              "uuid": "00a82c44-e729-4142-975a-9d94196e11a9",
              "parentUUID": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get site by contact information for multiple authors:",
              "fullTitle": "Get site data any number of ways: Get site by contact information for multiple authors:",
              "timedOut": false,
              "duration": 106,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/contacts/12,13/sites')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length === 2;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "2c572ff2-84b0-4686-83e8-5e0d4bfff268",
              "parentUUID": "6142ef7b-d36f-4e8d-8bf6-2835547b999e",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "e4c4a5ad-9a9e-4a09-a320-cd8ea405911f",
            "e3c8a918-b5e1-4517-aaa3-7c710f206b84",
            "82576689-1f69-4686-bfa0-af9854bcc1ae",
            "00a82c44-e729-4142-975a-9d94196e11a9",
            "2c572ff2-84b0-4686-83e8-5e0d4bfff268"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 1717,
          "root": false,
          "rootEmpty": false,
          "_timeout": 5000
        },
        {
          "uuid": "dcc100c9-916f-4da7-a881-46ae2b47d984",
          "title": "Get datasets any number of ways:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/datasets.js",
          "file": "/test/datasets.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Asking for the datasets associated with Lake Tulane work:",
              "fullTitle": "Get datasets any number of ways: Asking for the datasets associated with Lake Tulane work:",
              "timedOut": false,
              "duration": 137,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/2570/datasets')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).includes('site');\n  })\n  .expect(function(res) {\n    return res.body['data'][0].site.siteid === 2570;\n  })\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]['site']['datasets'][0]).includes('datasetid');\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "d06421b4-8a4f-4160-9274-172b505d5c2a",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset by singular id & return same id:",
              "fullTitle": "Get datasets any number of ways: Get dataset by singular id & return same id:",
              "timedOut": false,
              "duration": 105,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/12')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['siteid'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "bf97995d-632f-4726-b5e4-be4b7fc31d16",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset from siteid gives us siteids back and datasets:",
              "fullTitle": "Get datasets any number of ways: Get dataset from siteid gives us siteids back and datasets:",
              "timedOut": false,
              "duration": 93,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites/123/datasets')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body['data'][0].site.siteid === 123;\n  })\n  .expect(function(res) {\n    return res.body['data'][0].site.datasets.length > 0;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "f7606501-9dad-48d5-97c5-146c1490cf5b",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset by comma separated ids & return same ids:",
              "fullTitle": "Get datasets any number of ways: Get dataset by comma separated ids & return same ids:",
              "timedOut": false,
              "duration": 106,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/?siteid=12,13,14')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data']).length > 0;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "76810f24-0eaa-4e6b-a33d-8459d9e5a67c",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Returns all key elements of the object:",
              "fullTitle": "Get datasets any number of ways: Returns all key elements of the object:",
              "timedOut": false,
              "duration": 1,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/12')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data']).includes('site', 'dataset');\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "8296fec1-1544-429a-82b4-76ad59641b37",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Limits work:",
              "fullTitle": "Get datasets any number of ways: Limits work:",
              "timedOut": false,
              "duration": 239,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/?altmax=3&limit=10')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data']).length == 10;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "fa9df147-5e67-4164-8b91-b1abc4e40c82",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Works with age validation:",
              "fullTitle": "Get datasets any number of ways: Works with age validation:",
              "timedOut": false,
              "duration": 29505,
              "state": "passed",
              "speed": "slow",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/?ageyoung=1200&ageold=1500&altmax=3')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    let test = true;\n    for (let i = 0; i < res.body['data'].length; i++) {\n      test = test &\n        res.body['data'][i]['site']['datasets'][0]['agerange']['ageyoung'] < 1200 &\n        res.body['data'][i]['site']['datasets'][0]['agerange']['ageold'] > 1500;\n      if (test === false) { return test; }\n    }\n    return true;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "6adf9342-6c46-46b5-9ed7-3f1caad78a32",
              "parentUUID": "dcc100c9-916f-4da7-a881-46ae2b47d984",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "d06421b4-8a4f-4160-9274-172b505d5c2a",
            "bf97995d-632f-4726-b5e4-be4b7fc31d16",
            "f7606501-9dad-48d5-97c5-146c1490cf5b",
            "76810f24-0eaa-4e6b-a33d-8459d9e5a67c",
            "8296fec1-1544-429a-82b4-76ad59641b37",
            "fa9df147-5e67-4164-8b91-b1abc4e40c82",
            "6adf9342-6c46-46b5-9ed7-3f1caad78a32"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 30186,
          "root": false,
          "rootEmpty": false,
          "_timeout": 50000
        },
        {
          "uuid": "6d0d148c-aa53-4264-96d0-ae845494dedf",
          "title": "tests for /v2.0/data/datasets/{datasetid}/lithology",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "4eb7520b-8551-4790-96be-be91835425ff",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Lithology\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/lithology tests for get should respond 200 for \"Lithology\"",
                  "timedOut": false,
                  "duration": 100,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/lithology', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "f88ef683-f637-400e-a3b3-2409db9b7722",
                  "parentUUID": "4eb7520b-8551-4790-96be-be91835425ff",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "f88ef683-f637-400e-a3b3-2409db9b7722"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 100,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "888c9af0-684b-497f-9e10-c4f82df34ffb",
          "title": "tests for /v2.0/data/sites",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-test.js",
          "file": "/test/v2.0-data-sites-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "8254803b-6299-4bdd-b89f-73b9086c21c9",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-test.js",
              "file": "/test/v2.0-data-sites-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of sites.\"",
                  "fullTitle": "tests for /v2.0/data/sites tests for get should respond 200 for \"An array of sites.\"",
                  "timedOut": false,
                  "duration": 964,
                  "state": "passed",
                  "speed": "medium",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites', { \n    'qs': {\"sitename\":\"sunt\",\"database\":\"Canadian Museum of Nature-Delorme Ostracoda-Surface Samples\",\"datasettype\":\"specimen stable isotope\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":42988,\"datasetid\":60309948,\"doi\":\"1021436435/Q7\",\"gpid\":5392,\"keyword\":\"beyond radiocarbon\",\"contactid\":13502,\"taxa\":\"minim\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":4640795,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "62fe955e-2153-483c-8045-aa062e3e490e",
                  "parentUUID": "8254803b-6299-4bdd-b89f-73b9086c21c9",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "62fe955e-2153-483c-8045-aa062e3e490e"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 964,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "08472e39-f343-4b97-9686-d034a9e1ffd7",
          "title": "Get Neotoma data with geoJSON extents:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/spatial.js",
          "file": "/test/spatial.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Get occurrence data using a simple geoJSON:",
              "fullTitle": "Get Neotoma data with geoJSON extents: Get occurrence data using a simple geoJSON:",
              "timedOut": false,
              "duration": 446,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "c97858af-cab2-421b-8b13-1bfa655a8657",
              "parentUUID": "08472e39-f343-4b97-9686-d034a9e1ffd7",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get site data using a simple geoJSON:",
              "fullTitle": "Get Neotoma data with geoJSON extents: Get site data using a simple geoJSON:",
              "timedOut": false,
              "duration": 1165,
              "state": "passed",
              "speed": "slow",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "cda55941-dcd7-46b8-874d-7111a2136bfd",
              "parentUUID": "08472e39-f343-4b97-9686-d034a9e1ffd7",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset data using a simple geoJSON:",
              "fullTitle": "Get Neotoma data with geoJSON extents: Get dataset data using a simple geoJSON:",
              "timedOut": false,
              "duration": 3485,
              "state": "passed",
              "speed": "slow",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "2948d74c-3f7d-4d77-b401-d68cea4adb76",
              "parentUUID": "08472e39-f343-4b97-9686-d034a9e1ffd7",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "c97858af-cab2-421b-8b13-1bfa655a8657",
            "cda55941-dcd7-46b8-874d-7111a2136bfd",
            "2948d74c-3f7d-4d77-b401-d68cea4adb76"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 5096,
          "root": false,
          "rootEmpty": false,
          "_timeout": 15000
        },
        {
          "uuid": "e4ecc915-14cb-4527-bd31-87ef3e43c7e0",
          "title": "Get Neotoma data with WKT extents:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/spatial.js",
          "file": "/test/spatial.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "Get occurrence data using a simple WKT:",
              "fullTitle": "Get Neotoma data with WKT extents: Get occurrence data using a simple WKT:",
              "timedOut": false,
              "duration": 248,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/occurrences?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "ca9c596b-8f59-42b3-9840-deee6bc95f5b",
              "parentUUID": "e4ecc915-14cb-4527-bd31-87ef3e43c7e0",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get site data using a simple WKT:",
              "fullTitle": "Get Neotoma data with WKT extents: Get site data using a simple WKT:",
              "timedOut": false,
              "duration": 208,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/sites?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "833f696c-fa60-4f91-953f-822b2bbaf676",
              "parentUUID": "e4ecc915-14cb-4527-bd31-87ef3e43c7e0",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset data using a simple WKT:",
              "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:",
              "timedOut": false,
              "duration": 196,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "5e3fbd66-1755-48ec-af1f-717e8aa84141",
              "parentUUID": "e4ecc915-14cb-4527-bd31-87ef3e43c7e0",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "Get dataset data using a simple WKT:",
              "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:",
              "timedOut": false,
              "duration": 185,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets?loc=POLYGON((139.8%20-33.7,%20150.1%20-33.7,%20150.1%20-39.1,%20139.8%20-39.1,%20139.8%20-33.7))')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return Object.keys(res.body['data'][0]).length > 0;\n  })\n  .expect(function(res) {\n    return res.body['data'][0]['occurrence'] === 12;\n  })\n  .expect(200, done);",
              "err": {},
              "uuid": "6901e9cd-d4b1-4451-b6f2-b7df9e47d580",
              "parentUUID": "e4ecc915-14cb-4527-bd31-87ef3e43c7e0",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "ca9c596b-8f59-42b3-9840-deee6bc95f5b",
            "833f696c-fa60-4f91-953f-822b2bbaf676",
            "5e3fbd66-1755-48ec-af1f-717e8aa84141",
            "6901e9cd-d4b1-4451-b6f2-b7df9e47d580"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 837,
          "root": false,
          "rootEmpty": false,
          "_timeout": 15000
        },
        {
          "uuid": "9e0cc6c0-285b-42ed-9a57-225aa75e8e45",
          "title": "tests for /v2.0/data/taxa/{taxonid}/occurrences",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js",
          "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "d0e1cf6c-e77e-4d71-8124-873e3f55f003",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js",
              "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"occurrence\"",
                  "fullTitle": "tests for /v2.0/data/taxa/{taxonid}/occurrences tests for get should respond 200 for \"occurrence\"",
                  "timedOut": false,
                  "duration": 110,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500/occurrences', { \n    'qs': {\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "25efa9ff-ce82-464b-8466-1e0f490ebcf8",
                  "parentUUID": "d0e1cf6c-e77e-4d71-8124-873e3f55f003",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "25efa9ff-ce82-464b-8466-1e0f490ebcf8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 110,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "a997f614-01f6-4643-89d4-16c581652ee5",
          "title": "tests for /v2.0/apps/datasettypes",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-datasettypes-test.js",
          "file": "/test/v2.0-apps-datasettypes-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "c73f2d2c-68ce-42c8-84d7-cbd762080567",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-datasettypes-test.js",
              "file": "/test/v2.0-apps-datasettypes-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A table of Neotoma collection types.\"",
                  "fullTitle": "tests for /v2.0/apps/datasettypes tests for get should respond 200 for \"A table of Neotoma collection types.\"",
                  "timedOut": false,
                  "duration": 106,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/datasettypes', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "9e344e6a-f4a9-42a6-8877-3904c5bcc7df",
                  "parentUUID": "c73f2d2c-68ce-42c8-84d7-cbd762080567",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "9e344e6a-f4a9-42a6-8877-3904c5bcc7df"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 106,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "6304dbe7-4f83-48b9-8262-85a82b58b620",
          "title": "tests for /v2.0/data/datasets_elc",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets_elc-test.js",
          "file": "/test/v2.0-data-datasets_elc-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "ba126699-d46e-45c7-9cd7-b3db1a8819d3",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets_elc-test.js",
              "file": "/test/v2.0-data-datasets_elc-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"",
                  "fullTitle": "tests for /v2.0/data/datasets_elc tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"",
                  "timedOut": false,
                  "duration": 99,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc', { \n    'qs': {\"siteid\":2501,\"contactid\":8324,\"datasettype\":\"ostracode\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":22149359},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "a01ef758-6671-4a97-bcce-63d7309589f8",
                  "parentUUID": "ba126699-d46e-45c7-9cd7-b3db1a8819d3",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "a01ef758-6671-4a97-bcce-63d7309589f8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 99,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "78fd5283-b35f-4c3c-81e9-a5ae5c9ed61d",
          "title": "tests for /v2.0/data/contacts/{contactid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js",
          "file": "/test/v2.0-data-contacts-{contactid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "a5553805-9423-4398-b501-87767827199f",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js",
              "file": "/test/v2.0-data-contacts-{contactid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A Neotoma contacts object.\"",
                  "fullTitle": "tests for /v2.0/data/contacts/{contactid} tests for get should respond 200 for \"A Neotoma contacts object.\"",
                  "timedOut": false,
                  "duration": 83,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "5e3f84a8-7800-4be1-a2e8-c4b5009987a7",
                  "parentUUID": "a5553805-9423-4398-b501-87767827199f",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "5e3f84a8-7800-4be1-a2e8-c4b5009987a7"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 83,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "55c8dd39-8e4f-4156-9f23-ee9dd7462c8b",
          "title": "tests for /v2.0/data/frozen/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js",
          "file": "/test/v2.0-data-frozen-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "305795ab-ad91-4122-8c10-c4f8217ae037",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js",
              "file": "/test/v2.0-data-frozen-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returned download object.\"",
                  "fullTitle": "tests for /v2.0/data/frozen/{datasetid} tests for get should respond 200 for \"Returned download object.\"",
                  "timedOut": false,
                  "duration": 162,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/frozen/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "6b9ee9ca-7ae6-4c0a-9778-0dffd034e5ed",
                  "parentUUID": "305795ab-ad91-4122-8c10-c4f8217ae037",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "6b9ee9ca-7ae6-4c0a-9778-0dffd034e5ed"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 162,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "6be281bc-e31f-495b-9f6d-65ba837464bc",
          "title": "Tests for Explorer App Services",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/explorerCalls.js",
          "file": "/test/explorerCalls.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "a9fd6282-63e4-4f57-926e-2221560f48f7",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/explorerCalls.js",
              "file": "/test/explorerCalls.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for TaxaGroupTypes",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaGroupTypes",
                  "timedOut": false,
                  "duration": 142,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/TaxaGroupTypes', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "fca1cc1f-d376-4911-b838-ba9927c855f2",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for TaphonomyTypes",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomyTypes",
                  "timedOut": false,
                  "duration": 4,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/TaphonomyTypes', {\n  qs: {\n    taphonomicSystemId: 1,\n  },\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "e2a22c0b-cbc9-4e9e-8c20-5a0fe163cc47",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for TaphonomySystems",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomySystems",
                  "timedOut": false,
                  "duration": 82,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/TaphonomySystems', {\n  qs: {\n    datasetTypeId: 1,\n  },\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "115bdce3-8940-44f9-bd88-485f9869ac2a",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for ElementTypes",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for ElementTypes",
                  "timedOut": false,
                  "duration": 86,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/ElementTypes', {\n  qs: {\n    taxagroupid: 1,\n  },\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "cd33393b-5299-4c46-ac8a-48dd9571ac30",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for TaxaInDatasets (a slow service)",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaInDatasets (a slow service)",
                  "timedOut": false,
                  "duration": 1304,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/TaxaInDatasets', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "6aaeb21c-3725-427b-99d3-2034dea9000d",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for collectionTypes",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for collectionTypes",
                  "timedOut": false,
                  "duration": 80,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/collectionTypes', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "9d184395-29ad-4e24-945d-b0a3cb7fa033",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for keywords",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for keywords",
                  "timedOut": false,
                  "duration": 80,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/keywords', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "73233af4-71f7-45fc-8400-c6d0edb24161",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for authorpis",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for authorpis",
                  "timedOut": false,
                  "duration": 271,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/authorpis', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "225f954c-fca1-4f40-8bb5-c05b329922cb",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for DepositionalEnvironments",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DepositionalEnvironments",
                  "timedOut": false,
                  "duration": 3,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/DepositionalEnvironments', {\n  qs: {idProperty: 1},\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "5858ca7b-ef5a-48bf-84e7-0b4e16bee6d3",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for Search",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Search",
                  "timedOut": false,
                  "duration": 1,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('post', appServicesLocation + '/Search', {\n  qs: {search: '{\"datasetTypeId\":21}',\n    time: true},\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "2667c036-68a5-42c5-99e0-f245685f1ea9",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for DatasetTypes",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DatasetTypes",
                  "timedOut": false,
                  "duration": 94,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/DatasetTypes', {\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "681607b0-48a8-47b8-9c92-52a12e963ab8",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for RelativeAges",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for RelativeAges",
                  "timedOut": false,
                  "duration": 160,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/RelativeAges', {\n  qs: {agescaleid: 1},\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "98f6d834-0736-4ce9-9c02-618b277a5127",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                },
                {
                  "title": "should respond 200 for Geochronologies",
                  "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Geochronologies",
                  "timedOut": false,
                  "duration": 2,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "const response = request('get', appServicesLocation + '/Geochronologies', {\n  qs: {datasetId: 1001},\n  time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "f6f4327c-4e6e-4422-bb4a-9613e8a23244",
                  "parentUUID": "a9fd6282-63e4-4f57-926e-2221560f48f7",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "fca1cc1f-d376-4911-b838-ba9927c855f2",
                "e2a22c0b-cbc9-4e9e-8c20-5a0fe163cc47",
                "115bdce3-8940-44f9-bd88-485f9869ac2a",
                "cd33393b-5299-4c46-ac8a-48dd9571ac30",
                "6aaeb21c-3725-427b-99d3-2034dea9000d",
                "9d184395-29ad-4e24-945d-b0a3cb7fa033",
                "73233af4-71f7-45fc-8400-c6d0edb24161",
                "225f954c-fca1-4f40-8bb5-c05b329922cb",
                "5858ca7b-ef5a-48bf-84e7-0b4e16bee6d3",
                "2667c036-68a5-42c5-99e0-f245685f1ea9",
                "681607b0-48a8-47b8-9c92-52a12e963ab8",
                "98f6d834-0736-4ce9-9c02-618b277a5127",
                "f6f4327c-4e6e-4422-bb4a-9613e8a23244"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 2309,
              "root": false,
              "rootEmpty": false,
              "_timeout": 12000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 12000
        },
        {
          "uuid": "f123021b-4887-4bdf-8d37-2fa78e39d022",
          "title": "Get chronology data by datasetid:",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/chronologies.js",
          "file": "/test/chronologies.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "A call to two datasets returns two datasets of data:",
              "fullTitle": "Get chronology data by datasetid: A call to two datasets returns two datasets of data:",
              "timedOut": false,
              "duration": 1,
              "state": "passed",
              "speed": "fast",
              "pass": true,
              "fail": false,
              "pending": false,
              "context": null,
              "code": "api.get('v2.0/data/datasets/684,1001/chronologies')\n  .set('Accept', 'application/json')\n  .expect(function(res) {\n    return res.body['data'].length === 4;\n  })\n  .expect(200, done());",
              "err": {},
              "uuid": "a7cc83b9-d9d2-4bae-83ee-0aaf67daeca8",
              "parentUUID": "f123021b-4887-4bdf-8d37-2fa78e39d022",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [
            "a7cc83b9-d9d2-4bae-83ee-0aaf67daeca8"
          ],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 1,
          "root": false,
          "rootEmpty": false,
          "_timeout": 5000
        },
        {
          "uuid": "ce6abc2b-f982-4e27-8a9c-05a4dbd13b86",
          "title": "tests for /v2.0/data/pollen",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-pollen-test.js",
          "file": "/test/v2.0-data-pollen-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "c46fbcb5-02cd-454b-9b4f-12e124d05163",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-pollen-test.js",
              "file": "/test/v2.0-data-pollen-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"",
                  "fullTitle": "tests for /v2.0/data/pollen tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"",
                  "timedOut": false,
                  "duration": 1,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen', { \n    'qs': {\"taxonname\":\"cupidatat ullamco Lorem nisi aliquip\",\"taxonid\":20895,\"siteid\":22291,\"sitename\":\"et\",\"datasettype\":\"biomarker\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":16889037,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "1082d29c-5c00-43c5-b8f3-7a9cefcfec94",
                  "parentUUID": "c46fbcb5-02cd-454b-9b4f-12e124d05163",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "1082d29c-5c00-43c5-b8f3-7a9cefcfec94"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 1,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "01e5127b-afda-4a6f-9e6c-da16a964cfce",
          "title": "tests for /v2.0/data/sites/{siteid}/datasets_elc",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js",
          "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "be3ce129-bf25-4242-ba16-dc1a9aac4e0c",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js",
              "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets_elc tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 2317,
                  "state": "passed",
                  "speed": "slow",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/datasets_elc', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "018952eb-1a66-4738-b356-7fb378c6184d",
                  "parentUUID": "be3ce129-bf25-4242-ba16-dc1a9aac4e0c",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "018952eb-1a66-4738-b356-7fb378c6184d"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 2317,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "0b56d38a-9551-4ca3-a3bf-b0314a6939e5",
          "title": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js",
          "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "4d3de612-f6d1-4b3b-9397-b7cc335c37a8",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js",
              "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid} tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 89,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aggregatedatasets/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "c06577a1-a7bf-496f-ae82-847d965109ad",
                  "parentUUID": "4d3de612-f6d1-4b3b-9397-b7cc335c37a8",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "c06577a1-a7bf-496f-ae82-847d965109ad"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 89,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "1666ab9e-6eeb-44b6-ab27-33c8d052efad",
          "title": "tests for /v2.0/apps/constdb/datasetuploads",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js",
          "file": "/test/v2.0-apps-constdb-datasetuploads-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "66640f3c-2b1a-4439-87aa-21f71b14a8e7",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js",
              "file": "/test/v2.0-apps-constdb-datasetuploads-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"",
                  "fullTitle": "tests for /v2.0/apps/constdb/datasetuploads tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"",
                  "timedOut": false,
                  "duration": 94,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetuploads', { \n    'qs': {\"dbid\":17},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "730afc28-23b3-4a38-b129-8905ea8d0990",
                  "parentUUID": "66640f3c-2b1a-4439-87aa-21f71b14a8e7",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "730afc28-23b3-4a38-b129-8905ea8d0990"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 94,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "ac0963a2-af8e-49c9-bea0-06e78226f4be",
          "title": "tests for /v2.0/apps/constdb/datasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasets-test.js",
          "file": "/test/v2.0-apps-constdb-datasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "fe50dce6-4871-4487-8a34-0e30da0aefb6",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-constdb-datasets-test.js",
              "file": "/test/v2.0-apps-constdb-datasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"",
                  "fullTitle": "tests for /v2.0/apps/constdb/datasets tests for get should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"",
                  "timedOut": false,
                  "duration": 235,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasets', { \n    'qs': {\"dbid\":7},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "c0f0d0cf-2e38-45c2-890e-844c326e3a1f",
                  "parentUUID": "fe50dce6-4871-4487-8a34-0e30da0aefb6",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "c0f0d0cf-2e38-45c2-890e-844c326e3a1f"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 235,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "e0f35258-53e5-4b62-97ba-75bf60244deb",
          "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js",
          "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "113a3b3b-2644-4a4e-b310-6001e3f19a33",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js",
              "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 97,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/7248/datasets', { \n    'qs': {\"limit\": 10,\"offset\": 0},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "3b9b6694-ea93-4020-bfef-4fb477b17091",
                  "parentUUID": "113a3b3b-2644-4a4e-b310-6001e3f19a33",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "3b9b6694-ea93-4020-bfef-4fb477b17091"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 97,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "237b03d4-b018-4821-b1f9-65d4753ed0ae",
          "title": "tests for /v2.0/data/summary/dsdbmonth",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js",
          "file": "/test/v2.0-data-summary-dsdbmonth-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "48d109bd-50c0-45a0-917f-f0a6fb90297e",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js",
              "file": "/test/v2.0-data-summary-dsdbmonth-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A count of the datasets added by database for the requested period.\"",
                  "fullTitle": "tests for /v2.0/data/summary/dsdbmonth tests for get should respond 200 for \"A count of the datasets added by database for the requested period.\"",
                  "timedOut": false,
                  "duration": 213,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dsdbmonth', { \n    'qs': {\"start\": 1,\"end\": 10},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "7e93f5c7-d755-453b-be6e-7c483575684b",
                  "parentUUID": "48d109bd-50c0-45a0-917f-f0a6fb90297e",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "7e93f5c7-d755-453b-be6e-7c483575684b"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 213,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "fbc8e808-0677-491c-b25e-499a8ad60284",
          "title": "tests for /v2.0/data/datasets/db",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-db-test.js",
          "file": "/test/v2.0-data-datasets-db-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "5a130bc6-68db-4963-b05a-9659ac8ae553",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-db-test.js",
              "file": "/test/v2.0-data-datasets-db-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Datasets\"",
                  "fullTitle": "tests for /v2.0/data/datasets/db tests for get should respond 200 for \"Datasets\"",
                  "timedOut": false,
                  "duration": 918,
                  "state": "passed",
                  "speed": "medium",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/db', { \n    'qs': {\"limit\": 10,\"offset\": 0,\"database\":\"NDSU Insect Database\"},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "485e8199-c836-477c-b63c-2c9129fff6e3",
                  "parentUUID": "5a130bc6-68db-4963-b05a-9659ac8ae553",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "485e8199-c836-477c-b63c-2c9129fff6e3"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 918,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "53c0d9cf-58e0-4413-a007-863f2e0bf18f",
          "title": "tests for /v2.0/data/datasets/{datasetid}/publications",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "99618c15-c7c7-4dc6-8638-69fe84c8c763",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"Publication\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/publications tests for get should respond 200 for \"Publication\"",
                  "timedOut": false,
                  "duration": 102,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/publications', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "d271aad9-0a8b-436a-b427-ba0fdc8d5cbb",
                  "parentUUID": "99618c15-c7c7-4dc6-8638-69fe84c8c763",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "d271aad9-0a8b-436a-b427-ba0fdc8d5cbb"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 102,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "ae7fcff5-983a-4af7-819e-12fd88f39726",
          "title": "tests for /v2.0/data/contacts/{contactid}/sites",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js",
          "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "b720eb63-e615-4eb2-b13f-9973fa182cd7",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js",
              "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A Neotoma sites object.\"",
                  "fullTitle": "tests for /v2.0/data/contacts/{contactid}/sites tests for get should respond 200 for \"A Neotoma sites object.\"",
                  "timedOut": false,
                  "duration": 88,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/8571/sites', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "79988c7a-ec58-42ea-8268-33088c3853fd",
                  "parentUUID": "b720eb63-e615-4eb2-b13f-9973fa182cd7",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "79988c7a-ec58-42ea-8268-33088c3853fd"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 88,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "40e83aa6-04a8-4a6e-b1de-668ca96f8705",
          "title": "tests for /v2.0/data/publications/{publicationid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js",
          "file": "/test/v2.0-data-publications-{publicationid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "354fa8c3-6902-45e9-b2b0-950a55f9f354",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js",
              "file": "/test/v2.0-data-publications-{publicationid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"A list of publications.\"",
                  "fullTitle": "tests for /v2.0/data/publications/{publicationid} tests for get should respond 200 for \"A list of publications.\"",
                  "timedOut": false,
                  "duration": 89,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications/6927', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "8626fb62-8b73-41d3-991d-771b3a0a2e13",
                  "parentUUID": "354fa8c3-6902-45e9-b2b0-950a55f9f354",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "8626fb62-8b73-41d3-991d-771b3a0a2e13"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 89,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "0c3b3c59-2714-4da9-8a97-199551de6ad7",
          "title": "tests for /v2.0/data/datasets/{datasetid}",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js",
          "file": "/test/v2.0-data-datasets-{datasetid}-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "b6fbec16-5737-4dbf-9b73-46de6dcc866e",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js",
              "file": "/test/v2.0-data-datasets-{datasetid}-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"An array of datasets.\"",
                  "fullTitle": "tests for /v2.0/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"",
                  "timedOut": false,
                  "duration": 100,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500', { \n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "daa4bf06-374b-40f0-b870-6fb89dc183f8",
                  "parentUUID": "b6fbec16-5737-4dbf-9b73-46de6dcc866e",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "daa4bf06-374b-40f0-b870-6fb89dc183f8"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 100,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        },
        {
          "uuid": "214a284d-1491-4849-b5d7-9afc7314ddab",
          "title": "tests for /v2.0/apps/depenvt",
          "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-depenvt-test.js",
          "file": "/test/v2.0-apps-depenvt-test.js",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [],
          "suites": [
            {
              "uuid": "27db4242-aed8-46ce-b5f9-3755272b58fe",
              "title": "tests for get",
              "fullFile": "/home/simon/Documents/Neotoma/api_nodetest/test/v2.0-apps-depenvt-test.js",
              "file": "/test/v2.0-apps-depenvt-test.js",
              "beforeHooks": [],
              "afterHooks": [],
              "tests": [
                {
                  "title": "should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"",
                  "fullTitle": "tests for /v2.0/apps/depenvt tests for get should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"",
                  "timedOut": false,
                  "duration": 166,
                  "state": "passed",
                  "speed": "fast",
                  "pass": true,
                  "fail": false,
                  "pending": false,
                  "context": null,
                  "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depenvt', { \n    'qs': {\"siteid\":7138,\"datasetid\":98069349,\"collectionunitid\":52407},\n    'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();",
                  "err": {},
                  "uuid": "5c5df494-6d13-4139-b974-ceea0cabe868",
                  "parentUUID": "27db4242-aed8-46ce-b5f9-3755272b58fe",
                  "isHook": false,
                  "skipped": false
                }
              ],
              "suites": [],
              "passes": [
                "5c5df494-6d13-4139-b974-ceea0cabe868"
              ],
              "failures": [],
              "pending": [],
              "skipped": [],
              "duration": 166,
              "root": false,
              "rootEmpty": false,
              "_timeout": 300000
            }
          ],
          "passes": [],
          "failures": [],
          "pending": [],
          "skipped": [],
          "duration": 0,
          "root": false,
          "rootEmpty": false,
          "_timeout": 300000
        }
      ],
      "passes": [],
      "failures": [],
      "pending": [],
      "skipped": [],
      "duration": 0,
      "root": true,
      "rootEmpty": true,
      "_timeout": 300000
    }
  ],
  "meta": {
    "mocha": {
      "version": "11.7.5"
    },
    "mochawesome": {
      "options": {
        "quiet": false,
        "reportFilename": "tests",
        "saveHtml": true,
        "saveJson": true,
        "consoleReporter": "spec",
        "useInlineDiffs": false,
        "code": true
      },
      "version": "7.1.4"
    },
    "marge": {
      "options": {
        "reportDir": "public",
        "reportFilename": "tests"
      },
      "version": "6.3.2"
    }
  }
}