{"version":3,"sources":["https://lively-kernel.org/voices/parsing-data/testing/avf-parser-test.js"],"names":["expect","AVFParser","describe","expectedKeys","expectedKeys2","before","getKeyArrayFromFile","it","url","prefix","result","loadKeysFromUrl","to","eql","testFileName","actualFileUrl","expectedFileUrl","storeKeysToFile","lively","files","loadFile","fetch","method","expectedRootKeys","beforeEach","push","assertExpectedRootKeysForKeySetOnLoad","timeout","firstCompressedIndividuals","loadCompressedIndividualsWithKeysFromFile","slice","forEach","compressedIndividual","have","keys","sizes","smallMockData","loadMockData","mediumMockData","largeMockData","length","assertExpectedRootKeysForKeySetOnRebuild","rebuildAndLoadCompressedIndividualsWithKeysFromFile","afterEach","fileUrl","keyFileContent","split","keySetFileName","assertExpectedRootKeysForKeys","be","an","instanceof","Object"],"mappings":"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","file":"avf-parser-test.js","sourcesContent":["import {expect} from 'src/external/chai.js'\nimport  {AVFParser} from 'https://lively-kernel.org/voices/parsing-data/avf-parser.js'\n\ndescribe('AVFParser', function() {\n  let expectedKeys;\n  let expectedKeys2;\n  \n  before(async function(){\n    expectedKeys = await getKeyArrayFromFile('https://lively-kernel.org/voices/parsing-data/testing/resources/expectedKeys1.txt')\n    expectedKeys2 = await getKeyArrayFromFile('https://lively-kernel.org/voices/parsing-data/testing/resources/expectedKeys2.txt')\n  })\n  \n  describe('load keys from an url', function () {\n    it('should return all keys with given prefix', async function () {\n      let url = \"https://lively-kernel.org/voices/parsing-data/testing/resources/example-coding-scheme.json\"\n      let prefix = \"rqa_s04e01_\"\n      let result = await AVFParser.loadKeysFromUrl(url, prefix)\n      \n      expect(result).to.eql(expectedKeys)\n    })\n  })\n  \n  describe('saveKeysToFile', function(){    \n    it('should save given keys to specified file in addition to basic keys', async function() { \n      let testFileName = \"expectedKeys\";\n      let actualFileUrl = \"https://lively-kernel.org/voices/BP2019RH1-data/keys/expectedKeys.txt\"\n      let expectedFileUrl =  \"https://lively-kernel.org/voices/parsing-data/testing/resources/expectedKeys.txt\"\n      await AVFParser.storeKeysToFile(expectedKeys, testFileName)\n      \n      expect(lively.files.loadFile(actualFileUrl)).to.eql(lively.files.loadFile(expectedFileUrl))\n    \n      await fetch(actualFileUrl, {method: 'DELETE'})\n    })\n  })\n  \n  describe('data loading', function(){\n    let expectedRootKeys;\n    \n    beforeEach(async function (){\n      expectedRootKeys = await getKeyArrayFromFile('https://lively-kernel.org/voices/BP2019RH1-data/keys/basicKeys.txt')\n      expectedRootKeys.push(\"themes\")\n      \n      await AVFParser.storeKeysToFile(expectedKeys, \"testKeys1\")\n      await AVFParser.storeKeysToFile(expectedKeys2, \"testKeys2\") \n    })\n    \n    describe('loadCompressedIndividualsWithKeysFromFile', function(){\n      it('should always put demographic information in root', async function(){\n        assertExpectedRootKeysForKeySetOnLoad(\"testKeys1\", expectedRootKeys)\n        assertExpectedRootKeysForKeySetOnLoad(\"testKeys2\", expectedRootKeys)\n      })\n\n      it('should put theme keys in theme root object', async function() {\n        this.timeout(0)\n        let firstCompressedIndividuals = await AVFParser.loadCompressedIndividualsWithKeysFromFile('testKeys1')\n        firstCompressedIndividuals = firstCompressedIndividuals.slice(0,5)\n        firstCompressedIndividuals.forEach((compressedIndividual) => {\n          expect(compressedIndividual[\"themes\"]).to.have.keys(expectedKeys)\n        })\n      })\n    })\n    \n    describe('loadMockData', function(){\n      it('should return a dataset with given size', async function(){\n        let sizes = [500, 7902, 13000]\n        let smallMockData = await AVFParser.loadMockData(sizes[0])\n        let mediumMockData = await AVFParser.loadMockData(sizes[1])\n        let largeMockData = await AVFParser.loadMockData(sizes[2])\n        expect(smallMockData.length).to.eql(sizes[0])\n        expect(mediumMockData.length).to.eql(sizes[1])\n        expect(largeMockData.length).to.eql(sizes[2])\n      })\n    })\n    \n    describe('rebuildAndLoadCompressedIndividualsWithKeysFromFile', function(){\n      it('should always put demographic information in root', async function(){\n        assertExpectedRootKeysForKeySetOnRebuild(\"testKeys1\", expectedRootKeys)\n        assertExpectedRootKeysForKeySetOnRebuild(\"testKeys2\", expectedRootKeys)\n      })  \n      \n      it('should put theme keys in theme root object', async function() {\n        this.timeout(0)\n\n        let firstCompressedIndividuals = await AVFParser.rebuildAndLoadCompressedIndividualsWithKeysFromFile('testKeys1')\n        firstCompressedIndividuals = firstCompressedIndividuals.slice(0,5)\n        firstCompressedIndividuals.forEach((compressedIndividual) => {\n          expect(compressedIndividual[\"themes\"]).to.have.keys(expectedKeys)\n        })\n      })\n    })\n\n    afterEach(async function() {\n      await fetch('https://lively-kernel.org/voices/BP2019RH1-data/keys/testKeys1.txt', {method: 'DELETE'})\n      await fetch('https://lively-kernel.org/voices/BP2019RH1-data/keys/testKeys2.txt', {method: 'DELETE'})\n    })\n  })  \n  \n  async function getKeyArrayFromFile(fileUrl){\n    let keyFileContent = await lively.files.loadFile(fileUrl)\n    return keyFileContent.split(\"\\n\");\n  }\n  \n  async function assertExpectedRootKeysForKeySetOnRebuild(keySetFileName, expectedRootKeys){\n    let firstCompressedIndividuals = await AVFParser.rebuildAndLoadCompressedIndividualsWithKeysFromFile(keySetFileName)\n    assertExpectedRootKeysForKeys(expectedRootKeys, firstCompressedIndividuals)\n  }\n  \n  async function assertExpectedRootKeysForKeySetOnLoad(keySetFileName, expectedRootKeys){\n    let firstCompressedIndividuals = await AVFParser.loadCompressedIndividualsWithKeysFromFile(keySetFileName)\n    assertExpectedRootKeysForKeys(expectedRootKeys, firstCompressedIndividuals)\n  }\n  \n  function assertExpectedRootKeysForKeys(expectedRootKeys, firstCompressedIndividuals){\n    firstCompressedIndividuals = firstCompressedIndividuals.slice(0, 5);\n    firstCompressedIndividuals.forEach((compressedIndividual) => {\n      expect(compressedIndividual).to.have.keys(expectedRootKeys)\n      expect(compressedIndividual[\"themes\"]).to.be.an.instanceof(Object)\n    })\n  }\n})"]}