import {AreaQuery} from "./area_query"; import m2ToHectaresRounded = AreaQuery.m2ToHectaresRounded; import {GroupableTabularData} from "../visualisation"; import unclassifiedEntry = AreaQuery.unclassifiedEntry; import responseToGroupableTabularData = AreaQuery.responseToGroupableTabularData; import smapResponseToGroupableTabularData = AreaQuery.smapResponseToGroupableTabularData; import 'jest'; describe("testing area_query methods", () => { test("Check create grouped data", () => { let wetlandsData = {"response":{"area":1.2696955142129995E10,"layers":[{"name":"wetlands_historic","raster":false,"rows":[{"columns":[{"name":"Class","value":"0"},{"name":"Class Description","value":"Bog (h)"},{"name":"Class Color","value":"#96825f"},{"name":"Class Area","value":1193385.2268798929},{"name":"Class Abbreviation","value":"hBog"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":1},{"columns":[{"name":"Class","value":"1"},{"name":"Class Description","value":"Fen (h)"},{"name":"Class Color","value":"#b4d264"},{"name":"Class Area","value":2.2564951721090887E7},{"name":"Class Abbreviation","value":"hFen"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":2},{"columns":[{"name":"Class","value":"4"},{"name":"Class Description","value":"Marsh (h)"},{"name":"Class Color","value":"#b4ffff"},{"name":"Class Area","value":1.0637068368865106E8},{"name":"Class Abbreviation","value":"hMsh"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":3},{"columns":[{"name":"Class","value":"6"},{"name":"Class Description","value":"Seepage (h)"},{"name":"Class Color","value":"#96ff96"},{"name":"Class Area","value":502906.0858355875},{"name":"Class Abbreviation","value":"hSee"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":4},{"columns":[{"name":"Class","value":"7"},{"name":"Class Description","value":"Swamp (h)"},{"name":"Class Color","value":"#009600"},{"name":"Class Area","value":3.6707830513018495E8},{"name":"Class Abbreviation","value":"hSwp"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":5}]},{"name":"wetlands_current","raster":false,"rows":[{"columns":[{"name":"Class","value":"0"},{"name":"Class Description","value":"Bog (c)"},{"name":"Class Color","value":"#6e5a4b"},{"name":"Class Area","value":836520.5371468561},{"name":"Class Abbreviation","value":"cBog"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":1},{"columns":[{"name":"Class","value":"1"},{"name":"Class Description","value":"Fen (c)"},{"name":"Class Color","value":"#82a03c"},{"name":"Class Area","value":763947.1750264161},{"name":"Class Abbreviation","value":"cFen"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":2},{"columns":[{"name":"Class","value":"4"},{"name":"Class Description","value":"Marsh (c)"},{"name":"Class Color","value":"#82ffff"},{"name":"Class Area","value":1.073485052356672E7},{"name":"Class Abbreviation","value":"cMsh"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":3},{"columns":[{"name":"Class","value":"6"},{"name":"Class Description","value":"Seepage (c)"},{"name":"Class Color","value":"#1eff1e"},{"name":"Class Area","value":446029.3938245664},{"name":"Class Abbreviation","value":"cSee"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":4},{"columns":[{"name":"Class","value":"7"},{"name":"Class Description","value":"Swamp (c)"},{"name":"Class Color","value":"#005000"},{"name":"Class Area","value":1.7461434136260334E7},{"name":"Class Abbreviation","value":"cSwp"},{"name":"Class Flags","value":3},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":false,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":5}]}],"pointHeight":0}} let groupedData = AreaQuery.responseToGroupableTabularData(wetlandsData); groupedData.forEach((d) => { expect(['wetlands_historic', 'wetlands_current']).toContain(d.group); expect(d.name).toBeDefined(); expect(d.value).toBeDefined(); expect(d.color).toBeDefined(); }) }); test("m2ToHectaresRounded", () => { let aHectare = 100 * 100; let area = 26 * aHectare + 23; expect(m2ToHectaresRounded(area)).toEqual(26); expect(m2ToHectaresRounded(5121 * aHectare)).toEqual(5120); }); test("test unclassifiedEntry", () => { const rows : GroupableTabularData[] = [{ group: 'layer-a', value: 10000, color: '#FF3F3F', name: 'a class', abbr: 'ac' }]; const uncProto = {group: 'layer-a', value: 0, abbr: 'unc', name: 'unclassified', color: 'black'}; const unc = unclassifiedEntry(rows, 10100, uncProto); expect(unc.value).toEqual(100); expect(unc.group).toEqual('layer-a'); expect(unc.abbr).toEqual('unc'); expect(unc.name).toEqual('unclassified'); expect(unc.color).toEqual('black'); const tolerance = 100; const underTolerance = unclassifiedEntry(rows, 10099, uncProto, tolerance); expect(underTolerance).toBeNull(); }); test("test unclassified with groupableData", () => { const areaQueryData = {"response":{"area":20000,"layers":[{"name":"lenz_prot_areas","raster":false,"rows":[{"columns":[{"name":"Class","value":"0"},{"name":"Class Description","value":"Protected Areas"},{"name":"Class Color","value":"#BB5A3C"},{"name":"Class Area","value":10000},{"name":"Class Abbreviation","value":"Prot"},{"name":"Class Flags","value":11},{"name":"Class Flags Hash","value":{"SHOW_LONG_NAME_IN_CONTENTS":false,"HIDE_FROM_CONTENTS_PAGE":true,"VISUALISATION":true,"QUERY_ABLE":true}}],"number":1}]}],"pointHeight":0}}; const rows = responseToGroupableTabularData(areaQueryData); expect(rows.length).toEqual(1); const rowsWithUnc = responseToGroupableTabularData(areaQueryData, true); expect(rowsWithUnc.length).toEqual(2); // expect(rowsWithUnc[1].abbr).toEqual(2); const unc = rowsWithUnc.find(r => r.abbr == 'unc'); expect(unc.value).toEqual(10000); expect(rows[0].value + unc.value).toEqual(20000); expect(areaQueryData.response.area - rows[0].value).toEqual(unc.value); }); test("test conversion of SMap data", () => { const areaQueryData = {"response":{"unclassified":0,"siblings":[{"area":385.1842280505331,"name":"Enfi_2a.1","proportion":0.0063394375913527826},{"area":2702.1083165054,"name":"GOJ_1a.1","proportion":0.04447182877725206},{"area":4134.208505530056,"name":"Hast_17a.1","proportion":0.06804161464007112},{"area":36114.74798929415,"name":"Orono_93a.1","proportion":0.5943836074604997},{"area":1801.4055443369336,"name":"Papan_1a.1","proportion":0.029647885851501375},{"area":14081.608504082495,"name":"Part_7a.1","proportion":0.23175787531410075},{"area":1540.7369122021323,"name":"Rose_2a.2","proportion":0.02535775036541113}],"totalSiblings":60759.99999999022,"paw":151.74,"totalSmapArea":60760.000000001695,"soils":[{"area":42951.064811329605,"classNo":1,"description":"Deep"},{"area":14081.608504082495,"classNo":3,"description":"Shallow"},{"area":3342.142456539066,"classNo":2,"description":"Moderately Deep"},{"area":385.18422805053314,"classNo":4,"description":"Very Shallow"}],"totalArea":60759.99999999022}}; const rows = smapResponseToGroupableTabularData(areaQueryData, false, 0, { 1: '#648232', 2: '#96C86E', 3: '#D2D296', 4: '#D2AA5A' }, false); expect(rows.length).toEqual(4); rows.forEach(d => { expect(d.name).toBeDefined(); expect(d.value).toBeDefined(); expect(d.color).toBeDefined(); }) }) });