@hestia-earth/data-validation 0.37.7 → 0.37.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +17 -0
  3. package/dist/validations.d.ts +10 -0
  4. package/dist/validations.js +10 -0
  5. package/package.json +4 -3
  6. package/search-results.json +22 -22
  7. package/src/version.ts +1 -1
  8. package/validation.json +629 -0
  9. package/.coveragerc +0 -14
  10. package/.dockerignore +0 -19
  11. package/.eslintignore +0 -17
  12. package/.eslintrc.js +0 -11
  13. package/.flake8 +0 -5
  14. package/.gitlab/issue_templates/new validation.md +0 -82
  15. package/.gitlab-ci.yml +0 -216
  16. package/.readthedocs.yml +0 -24
  17. package/CODEOWNERS +0 -11
  18. package/Dockerfile +0 -13
  19. package/MANIFEST.in +0 -2
  20. package/bin/hestia-validate-data +0 -80
  21. package/build_mocking.py +0 -14
  22. package/commitlint.config.js +0 -1
  23. package/docs/Makefile +0 -20
  24. package/docs/_static/styles.css +0 -4
  25. package/docs/_templates/custom-class-template.rst +0 -34
  26. package/docs/_templates/custom-module-template.rst +0 -66
  27. package/docs/_templates/layout.html +0 -4
  28. package/docs/conf.py +0 -74
  29. package/docs/index.rst +0 -42
  30. package/docs/make.bat +0 -35
  31. package/docs/requirements.txt +0 -13
  32. package/envs/.develop.env +0 -1
  33. package/envs/.master.env +0 -1
  34. package/guide-assets/.gitkeep +0 -0
  35. package/hestia_earth/validation/README.md +0 -5
  36. package/hestia_earth/validation/__init__.py +0 -32
  37. package/hestia_earth/validation/distribution.py +0 -22
  38. package/hestia_earth/validation/gee.py +0 -162
  39. package/hestia_earth/validation/log.py +0 -44
  40. package/hestia_earth/validation/models.py +0 -141
  41. package/hestia_earth/validation/preload_requests.py +0 -61
  42. package/hestia_earth/validation/terms.py +0 -88
  43. package/hestia_earth/validation/utils.py +0 -444
  44. package/hestia_earth/validation/validators/__init__.py +0 -141
  45. package/hestia_earth/validation/validators/aggregated_cycle.py +0 -32
  46. package/hestia_earth/validation/validators/aggregated_shared.py +0 -37
  47. package/hestia_earth/validation/validators/animal.py +0 -88
  48. package/hestia_earth/validation/validators/completeness.py +0 -252
  49. package/hestia_earth/validation/validators/cycle.py +0 -1123
  50. package/hestia_earth/validation/validators/distribution.py +0 -86
  51. package/hestia_earth/validation/validators/emission.py +0 -109
  52. package/hestia_earth/validation/validators/impact_assessment.py +0 -138
  53. package/hestia_earth/validation/validators/indicator.py +0 -154
  54. package/hestia_earth/validation/validators/infrastructure.py +0 -25
  55. package/hestia_earth/validation/validators/input.py +0 -268
  56. package/hestia_earth/validation/validators/management.py +0 -131
  57. package/hestia_earth/validation/validators/measurement.py +0 -368
  58. package/hestia_earth/validation/validators/organisation.py +0 -43
  59. package/hestia_earth/validation/validators/practice.py +0 -590
  60. package/hestia_earth/validation/validators/product.py +0 -263
  61. package/hestia_earth/validation/validators/property.py +0 -266
  62. package/hestia_earth/validation/validators/shared.py +0 -940
  63. package/hestia_earth/validation/validators/site.py +0 -312
  64. package/hestia_earth/validation/validators/source.py +0 -20
  65. package/hestia_earth/validation/validators/transformation.py +0 -250
  66. package/hestia_earth/validation/version.py +0 -1
  67. package/layer/build.sh +0 -34
  68. package/layer/deploy.sh +0 -18
  69. package/release.sh +0 -11
  70. package/requirements-ci.txt +0 -6
  71. package/requirements-test.txt +0 -4
  72. package/requirements.txt +0 -2
  73. package/run-docker-test.sh +0 -7
  74. package/run-docker.sh +0 -9
  75. package/run.py +0 -99
  76. package/scripts/build_docs.py +0 -283
  77. package/scripts/build_validation_list.py +0 -160
  78. package/scripts/guide-create-branch.sh +0 -15
  79. package/scripts/update-package-version.js +0 -28
  80. package/setup.py +0 -35
  81. package/tests/Dockerfile +0 -13
  82. package/tests/__init__.py +0 -3
  83. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-no-impactAssessment.json +0 -64
  84. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-world.json +0 -69
  85. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/valid.json +0 -69
  86. package/tests/fixtures/animal/duplicated-input-cycle/invalid.json +0 -98
  87. package/tests/fixtures/animal/duplicated-input-cycle/valid.json +0 -91
  88. package/tests/fixtures/animal/pregnancyRateTotal/invalid.json +0 -49
  89. package/tests/fixtures/animal/pregnancyRateTotal/valid.json +0 -60
  90. package/tests/fixtures/animal/required/invalid.json +0 -59
  91. package/tests/fixtures/animal/required/valid.json +0 -72
  92. package/tests/fixtures/completeness/all-values/warning.json +0 -22
  93. package/tests/fixtures/completeness/animalPopulation/invalid.json +0 -58
  94. package/tests/fixtures/completeness/animalPopulation/valid-animals.json +0 -71
  95. package/tests/fixtures/completeness/animalPopulation/valid-incomplete.json +0 -58
  96. package/tests/fixtures/completeness/animalPopulation/valid-no-liveAnimals.json +0 -37
  97. package/tests/fixtures/completeness/blank-nodes/agri-food processor-invalid.json +0 -52
  98. package/tests/fixtures/completeness/blank-nodes/invalid.json +0 -124
  99. package/tests/fixtures/completeness/blank-nodes/valid.json +0 -128
  100. package/tests/fixtures/completeness/cropland/site.json +0 -16
  101. package/tests/fixtures/completeness/cropland/valid.json +0 -22
  102. package/tests/fixtures/completeness/cropland/warning.json +0 -22
  103. package/tests/fixtures/completeness/freshForage/error-animals.json +0 -63
  104. package/tests/fixtures/completeness/freshForage/error-products.json +0 -65
  105. package/tests/fixtures/completeness/freshForage/valid-animal-inputs.json +0 -63
  106. package/tests/fixtures/completeness/freshForage/valid-animals.json +0 -63
  107. package/tests/fixtures/completeness/freshForage/valid-not-grazing-liveAnimal.json +0 -55
  108. package/tests/fixtures/completeness/freshForage/valid-not-liveAnimal.json +0 -47
  109. package/tests/fixtures/completeness/freshForage/valid-products.json +0 -68
  110. package/tests/fixtures/completeness/ingredient/invalid-agri-food-processor.json +0 -37
  111. package/tests/fixtures/completeness/ingredient/invalid.json +0 -49
  112. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-complete.json +0 -49
  113. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-incomplete.json +0 -37
  114. package/tests/fixtures/completeness/ingredient/valid.json +0 -49
  115. package/tests/fixtures/completeness/material/error.json +0 -49
  116. package/tests/fixtures/completeness/material/valid-fuel-material.json +0 -60
  117. package/tests/fixtures/completeness/material/valid-incomplete.json +0 -36
  118. package/tests/fixtures/completeness/material/valid-no-fuel.json +0 -36
  119. package/tests/fixtures/completeness/valid.json +0 -22
  120. package/tests/fixtures/cycle/aboveGroundCropResidue/invalid.json +0 -76
  121. package/tests/fixtures/cycle/aboveGroundCropResidue/valid.json +0 -76
  122. package/tests/fixtures/cycle/aggregated-valid.json +0 -102
  123. package/tests/fixtures/cycle/coverCrop/invalid.json +0 -64
  124. package/tests/fixtures/cycle/coverCrop/valid-not-coverCrop.json +0 -54
  125. package/tests/fixtures/cycle/coverCrop/valid.json +0 -64
  126. package/tests/fixtures/cycle/cropResidue/complete/invalid.json +0 -56
  127. package/tests/fixtures/cycle/cropResidue/complete/valid.json +0 -82
  128. package/tests/fixtures/cycle/cropResidue/incomplete/invalid.json +0 -42
  129. package/tests/fixtures/cycle/cropResidue/incomplete/valid.json +0 -56
  130. package/tests/fixtures/cycle/dates/invalid-emissions.json +0 -70
  131. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/invalid.json +0 -63
  132. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/valid.json +0 -63
  133. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates-year-only.json +0 -48
  134. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates.json +0 -48
  135. package/tests/fixtures/cycle/maximumCycleDuration/invalid.json +0 -48
  136. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates-year-only.json +0 -48
  137. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates.json +0 -48
  138. package/tests/fixtures/cycle/maximumCycleDuration/valid.json +0 -48
  139. package/tests/fixtures/cycle/otherSites/cycleDuration/invalid.json +0 -52
  140. package/tests/fixtures/cycle/otherSites/cycleDuration/valid-no-siteDuration.json +0 -40
  141. package/tests/fixtures/cycle/otherSites/cycleDuration/valid.json +0 -52
  142. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/invalid.json +0 -56
  143. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/valid.json +0 -65
  144. package/tests/fixtures/cycle/primary-product-as-input/invalid.json +0 -59
  145. package/tests/fixtures/cycle/primary-product-as-input/valid.json +0 -48
  146. package/tests/fixtures/cycle/product-linked-ia/cycle.json +0 -66
  147. package/tests/fixtures/cycle/product-linked-ia/invalid-multiple.json +0 -58
  148. package/tests/fixtures/cycle/product-linked-ia/valid.json +0 -57
  149. package/tests/fixtures/cycle/products/animals/invalid.json +0 -69
  150. package/tests/fixtures/cycle/products/animals/valid.json +0 -58
  151. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/invalid.json +0 -53
  152. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/valid.json +0 -53
  153. package/tests/fixtures/cycle/siteDuration/crop/invalid.json +0 -53
  154. package/tests/fixtures/cycle/siteDuration/crop/valid-different-duration.json +0 -53
  155. package/tests/fixtures/cycle/siteDuration/crop/valid-same-duration.json +0 -53
  156. package/tests/fixtures/cycle/siteDuration/invalid.json +0 -41
  157. package/tests/fixtures/cycle/siteDuration/valid-no-siteDuration.json +0 -40
  158. package/tests/fixtures/cycle/siteDuration/valid-otherSites.json +0 -48
  159. package/tests/fixtures/cycle/siteDuration/valid.json +0 -45
  160. package/tests/fixtures/cycle/substrate/required/invalid.json +0 -50
  161. package/tests/fixtures/cycle/substrate/required/valid.json +0 -60
  162. package/tests/fixtures/cycle/valid.json +0 -343
  163. package/tests/fixtures/emission/linked-terms/inputs/invalid.json +0 -78
  164. package/tests/fixtures/emission/linked-terms/inputs/valid.json +0 -106
  165. package/tests/fixtures/emission/linked-terms/transformation/error.json +0 -104
  166. package/tests/fixtures/emission/linked-terms/transformation/valid.json +0 -107
  167. package/tests/fixtures/emission/linked-terms/transformation/warning.json +0 -76
  168. package/tests/fixtures/emission/methodTier-background/invalid.json +0 -60
  169. package/tests/fixtures/emission/methodTier-background/valid.json +0 -60
  170. package/tests/fixtures/emission/not-relevant/invalid.json +0 -71
  171. package/tests/fixtures/emission/not-relevant/valid.json +0 -95
  172. package/tests/fixtures/emission/not-relevant-methodTier/invalid.json +0 -70
  173. package/tests/fixtures/emission/not-relevant-methodTier/valid.json +0 -95
  174. package/tests/fixtures/impactAssessment/aggregated-valid.json +0 -43
  175. package/tests/fixtures/impactAssessment/cycle-contains-product/invalid.json +0 -34
  176. package/tests/fixtures/impactAssessment/cycle-contains-product/valid.json +0 -34
  177. package/tests/fixtures/impactAssessment/cycle-endDate/invalid.json +0 -26
  178. package/tests/fixtures/impactAssessment/cycle-endDate/valid.json +0 -26
  179. package/tests/fixtures/impactAssessment/valid.json +0 -93
  180. package/tests/fixtures/indicator/characterisedIndicator-methodModel/invalid.json +0 -52
  181. package/tests/fixtures/indicator/characterisedIndicator-methodModel/valid.json +0 -52
  182. package/tests/fixtures/indicator/ionisingCompounds/invalid.json +0 -23
  183. package/tests/fixtures/indicator/ionisingCompounds/valid.json +0 -23
  184. package/tests/fixtures/indicator/landTransformation/invalid-grouped.json +0 -257
  185. package/tests/fixtures/indicator/landTransformation/invalid.json +0 -100
  186. package/tests/fixtures/indicator/landTransformation/valid-grouped-full.json +0 -507
  187. package/tests/fixtures/indicator/landTransformation/valid-grouped.json +0 -507
  188. package/tests/fixtures/indicator/landTransformation/valid.json +0 -100
  189. package/tests/fixtures/infrastructure/lifespan/invalid.json +0 -26
  190. package/tests/fixtures/infrastructure/lifespan/valid.json +0 -45
  191. package/tests/fixtures/input/animalFeed-fate/invalid.json +0 -103
  192. package/tests/fixtures/input/animalFeed-fate/valid.json +0 -90
  193. package/tests/fixtures/input/country/invalid.json +0 -64
  194. package/tests/fixtures/input/country/valid.json +0 -64
  195. package/tests/fixtures/input/distribution/animalHousing.json +0 -103
  196. package/tests/fixtures/input/distribution/complete/invalid.json +0 -177
  197. package/tests/fixtures/input/distribution/complete/valid.json +0 -163
  198. package/tests/fixtures/input/distribution/incomplete/valid.json +0 -139
  199. package/tests/fixtures/input/impactAssessment/invalid.json +0 -99
  200. package/tests/fixtures/input/impactAssessment/valid.json +0 -89
  201. package/tests/fixtures/input/input-as-product/invalid.json +0 -57
  202. package/tests/fixtures/input/input-as-product/valid.json +0 -59
  203. package/tests/fixtures/input/mustIncludeId/invalid.json +0 -13
  204. package/tests/fixtures/input/mustIncludeId/valid-multiple-ids.json +0 -31
  205. package/tests/fixtures/input/mustIncludeId/valid.json +0 -22
  206. package/tests/fixtures/input/saplings/invalid.json +0 -58
  207. package/tests/fixtures/input/saplings/valid-no-saplings.json +0 -58
  208. package/tests/fixtures/input/saplings/valid-not-plantation.json +0 -58
  209. package/tests/fixtures/input/saplings/valid.json +0 -58
  210. package/tests/fixtures/integration/distribution/product-yield-invalid.json +0 -54
  211. package/tests/fixtures/management/cycle-overlap/cycles.json +0 -39
  212. package/tests/fixtures/management/cycle-overlap/invalid.json +0 -26
  213. package/tests/fixtures/management/cycle-overlap/valid.json +0 -26
  214. package/tests/fixtures/management/exists/invalid.json +0 -13
  215. package/tests/fixtures/management/exists/valid.json +0 -25
  216. package/tests/fixtures/management/fallow-dates/invalid.json +0 -24
  217. package/tests/fixtures/management/fallow-dates/valid.json +0 -24
  218. package/tests/fixtures/management/termType/invalid-cropland.json +0 -35
  219. package/tests/fixtures/management/termType/invalid-permanent-pasture.json +0 -25
  220. package/tests/fixtures/management/termType/valid-cropland.json +0 -55
  221. package/tests/fixtures/management/termType/valid-no-management.json +0 -13
  222. package/tests/fixtures/management/termType/valid-permanent-pasture.json +0 -35
  223. package/tests/fixtures/measurement/depths/invalid.json +0 -44
  224. package/tests/fixtures/measurement/depths/valid.json +0 -50
  225. package/tests/fixtures/measurement/models/valid.json +0 -33
  226. package/tests/fixtures/measurement/models/warning-no-value.json +0 -30
  227. package/tests/fixtures/measurement/models/warning.json +0 -33
  228. package/tests/fixtures/measurement/pond-measurements/invalid.json +0 -11
  229. package/tests/fixtures/measurement/pond-measurements/valid.json +0 -23
  230. package/tests/fixtures/measurement/required-depths/error.json +0 -71
  231. package/tests/fixtures/measurement/required-depths/valid.json +0 -126
  232. package/tests/fixtures/measurement/required-depths/warning.json +0 -29
  233. package/tests/fixtures/measurement/soilTexture/missing-texture-value.json +0 -227
  234. package/tests/fixtures/measurement/soilTexture/percent-invalid.json +0 -110
  235. package/tests/fixtures/measurement/soilTexture/percent-missing-value.json +0 -43
  236. package/tests/fixtures/measurement/soilTexture/percent-valid.json +0 -110
  237. package/tests/fixtures/measurement/startDate-endDate-required/invalid.json +0 -32
  238. package/tests/fixtures/measurement/startDate-endDate-required/valid.json +0 -46
  239. package/tests/fixtures/measurement/unique/invalid.json +0 -28
  240. package/tests/fixtures/measurement/unique/valid.json +0 -16
  241. package/tests/fixtures/measurement/value-length/invalid.json +0 -46
  242. package/tests/fixtures/measurement/value-length/valid.json +0 -44
  243. package/tests/fixtures/measurement/water-salinity/invalid.json +0 -33
  244. package/tests/fixtures/measurement/water-salinity/valid-brakish.json +0 -40
  245. package/tests/fixtures/measurement/water-salinity/valid.json +0 -33
  246. package/tests/fixtures/organisation/valid.json +0 -26
  247. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/invalid.json +0 -63
  248. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/valid.json +0 -63
  249. package/tests/fixtures/practice/defaultValue/invalid.json +0 -12
  250. package/tests/fixtures/practice/defaultValue/valid.json +0 -15
  251. package/tests/fixtures/practice/excretaManagement/invalid.json +0 -50
  252. package/tests/fixtures/practice/excretaManagement/valid.json +0 -60
  253. package/tests/fixtures/practice/irrigated-complete/invalid.json +0 -47
  254. package/tests/fixtures/practice/irrigated-complete/valid-incomplete.json +0 -47
  255. package/tests/fixtures/practice/irrigated-complete/valid.json +0 -60
  256. package/tests/fixtures/practice/landCover-products/invalid.json +0 -58
  257. package/tests/fixtures/practice/landCover-products/valid-coverCrop.json +0 -69
  258. package/tests/fixtures/practice/landCover-products/valid.json +0 -58
  259. package/tests/fixtures/practice/liveAnimal-system/invalid.json +0 -58
  260. package/tests/fixtures/practice/liveAnimal-system/valid.json +0 -69
  261. package/tests/fixtures/practice/longFallowDuration/invalid.json +0 -20
  262. package/tests/fixtures/practice/longFallowDuration/valid.json +0 -20
  263. package/tests/fixtures/practice/noTillage/invalid.json +0 -23
  264. package/tests/fixtures/practice/noTillage/valid-value-not-100.json +0 -23
  265. package/tests/fixtures/practice/noTillage/valid.json +0 -21
  266. package/tests/fixtures/practice/pastureGrass/key-termType/invalid.json +0 -16
  267. package/tests/fixtures/practice/pastureGrass/key-termType/valid.json +0 -16
  268. package/tests/fixtures/practice/pastureGrass/key-value/invalid-numbers.json +0 -67
  269. package/tests/fixtures/practice/pastureGrass/key-value/invalid.json +0 -67
  270. package/tests/fixtures/practice/pastureGrass/key-value/valid.json +0 -67
  271. package/tests/fixtures/practice/pastureGrass/permanent-pasture/invalid.json +0 -37
  272. package/tests/fixtures/practice/pastureGrass/permanent-pasture/valid.json +0 -47
  273. package/tests/fixtures/practice/primaryPercent/invalid.json +0 -49
  274. package/tests/fixtures/practice/primaryPercent/valid.json +0 -49
  275. package/tests/fixtures/practice/processingOperation/invalid-no-primary.json +0 -48
  276. package/tests/fixtures/practice/processingOperation/invalid.json +0 -49
  277. package/tests/fixtures/practice/processingOperation/valid-cropland.json +0 -37
  278. package/tests/fixtures/practice/processingOperation/valid.json +0 -49
  279. package/tests/fixtures/practice/productivePhasePermanentCrops/invalid.json +0 -48
  280. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-0-value.json +0 -58
  281. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-no-value.json +0 -47
  282. package/tests/fixtures/practice/productivePhasePermanentCrops/valid.json +0 -48
  283. package/tests/fixtures/practice/site-management/invalid.json +0 -75
  284. package/tests/fixtures/practice/site-management/valid.json +0 -75
  285. package/tests/fixtures/practice/tillage-siteType/valid.json +0 -51
  286. package/tests/fixtures/practice/tillage-siteType/warning.json +0 -42
  287. package/tests/fixtures/practice/tillage-values/invalid-fullTillage.json +0 -61
  288. package/tests/fixtures/practice/tillage-values/invalid-noTillage.json +0 -61
  289. package/tests/fixtures/practice/tillage-values/valid.json +0 -61
  290. package/tests/fixtures/practice/waterRegime/rice/invalid.json +0 -59
  291. package/tests/fixtures/practice/waterRegime/rice/valid-0-value.json +0 -59
  292. package/tests/fixtures/practice/waterRegime/rice/valid.json +0 -58
  293. package/tests/fixtures/product/economicValueShare/invalid.json +0 -31
  294. package/tests/fixtures/product/economicValueShare/valid.json +0 -22
  295. package/tests/fixtures/product/excreta/invalid.json +0 -62
  296. package/tests/fixtures/product/excreta/valid.json +0 -62
  297. package/tests/fixtures/product/excreta/warning.json +0 -53
  298. package/tests/fixtures/product/excreta/with-system/invalid.json +0 -79
  299. package/tests/fixtures/product/excreta/with-system/valid.json +0 -88
  300. package/tests/fixtures/product/excreta/with-system/warning.json +0 -70
  301. package/tests/fixtures/product/fu_ha/invalid.json +0 -49
  302. package/tests/fixtures/product/fu_ha/valid.json +0 -49
  303. package/tests/fixtures/product/primary/invalid.json +0 -22
  304. package/tests/fixtures/product/primary/valid.json +0 -22
  305. package/tests/fixtures/product/value/valid.json +0 -26
  306. package/tests/fixtures/product/value/value-0/error.json +0 -40
  307. package/tests/fixtures/product/value/value-empty/warning.json +0 -23
  308. package/tests/fixtures/product/yield/invalid.json +0 -54
  309. package/tests/fixtures/product/yield/no-value.json +0 -75
  310. package/tests/fixtures/product/yield/valid.json +0 -54
  311. package/tests/fixtures/property/default-value/valid-allowed-exception.json +0 -61
  312. package/tests/fixtures/property/default-value/valid.json +0 -61
  313. package/tests/fixtures/property/default-value/warning.json +0 -61
  314. package/tests/fixtures/property/termType/invalid.json +0 -60
  315. package/tests/fixtures/property/termType/valid.json +0 -60
  316. package/tests/fixtures/property/value-min-max/invalid.json +0 -77
  317. package/tests/fixtures/property/value-min-max/valid-skip-maximum.json +0 -57
  318. package/tests/fixtures/property/value-min-max/valid.json +0 -78
  319. package/tests/fixtures/property/valueType/invalid.json +0 -79
  320. package/tests/fixtures/property/valueType/valid.json +0 -79
  321. package/tests/fixtures/property/volatileSolidsContent/invalid.json +0 -99
  322. package/tests/fixtures/property/volatileSolidsContent/valid.json +0 -99
  323. package/tests/fixtures/shared/coordinates/invalid.json +0 -18
  324. package/tests/fixtures/shared/coordinates/valid.json +0 -18
  325. package/tests/fixtures/shared/data-duplicates/valid.json +0 -113
  326. package/tests/fixtures/shared/data-duplicates/warning.json +0 -172
  327. package/tests/fixtures/shared/duplicated-term-units/invalid-animalProduct.json +0 -61
  328. package/tests/fixtures/shared/duplicated-term-units/invalid-organicFertiliser.json +0 -61
  329. package/tests/fixtures/shared/duplicated-term-units/valid.json +0 -49
  330. package/tests/fixtures/shared/list-country-region/invalid.json +0 -54
  331. package/tests/fixtures/shared/list-country-region/valid.json +0 -54
  332. package/tests/fixtures/shared/list-percent-value/invalid.json +0 -49
  333. package/tests/fixtures/shared/list-percent-value/valid.json +0 -52
  334. package/tests/fixtures/shared/list-valueType/invalid.json +0 -49
  335. package/tests/fixtures/shared/list-valueType/valid.json +0 -49
  336. package/tests/fixtures/shared/list-values-sum-100/management/with-properties/valid.json +0 -91
  337. package/tests/fixtures/shared/list-values-sum-100/measurements/missing-soil.json +0 -46
  338. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-high-value.json +0 -63
  339. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-valid.json +0 -40
  340. package/tests/fixtures/shared/list-values-sum-100/measurements/with-depth-high-value.json +0 -71
  341. package/tests/fixtures/shared/list-values-sum-100/practices/total-100.json +0 -61
  342. package/tests/fixtures/shared/list-values-sum-100/practices/total-110.json +0 -61
  343. package/tests/fixtures/shared/list-values-sum-100/practices/total-90.json +0 -61
  344. package/tests/fixtures/shared/min-max/value-above.json +0 -31
  345. package/tests/fixtures/shared/min-max/value-below.json +0 -31
  346. package/tests/fixtures/shared/min-max/value-valid.json +0 -45
  347. package/tests/fixtures/shared/model/emissions/invalid.json +0 -102
  348. package/tests/fixtures/shared/model/emissions/valid-variable-tolerance.json +0 -180
  349. package/tests/fixtures/shared/model/emissions/valid.json +0 -102
  350. package/tests/fixtures/shared/model/impacts/invalid.json +0 -75
  351. package/tests/fixtures/shared/model/impacts/valid.json +0 -75
  352. package/tests/fixtures/shared/model/inputs/valid-no-value.json +0 -84
  353. package/tests/fixtures/shared/model/inputs/valid.json +0 -87
  354. package/tests/fixtures/shared/model/inputs/warning.json +0 -87
  355. package/tests/fixtures/shared/model/products/valid-no-value.json +0 -88
  356. package/tests/fixtures/shared/model/products/valid.json +0 -91
  357. package/tests/fixtures/shared/model/products/warning.json +0 -91
  358. package/tests/fixtures/shared/otherModel/invalid.json +0 -69
  359. package/tests/fixtures/shared/otherModel/valid.json +0 -70
  360. package/tests/fixtures/shared/properties-duplicate-values/invalid.json +0 -61
  361. package/tests/fixtures/shared/properties-duplicate-values/valid.json +0 -57
  362. package/tests/fixtures/shared/properties-same-length/invalid.json +0 -62
  363. package/tests/fixtures/shared/properties-same-length/valid.json +0 -52
  364. package/tests/fixtures/shared/unit-percent/invalid.json +0 -34
  365. package/tests/fixtures/shared/unit-percent/valid.json +0 -60
  366. package/tests/fixtures/shared/unit-percent/warning.json +0 -52
  367. package/tests/fixtures/site/cycles-linked-ia/invalid.json +0 -129
  368. package/tests/fixtures/site/cycles-linked-ia/valid.json +0 -129
  369. package/tests/fixtures/site/valid.json +0 -138
  370. package/tests/fixtures/source/valid.json +0 -19
  371. package/tests/fixtures/transformation/excretaManagement/invalid.json +0 -47
  372. package/tests/fixtures/transformation/excretaManagement/valid.json +0 -59
  373. package/tests/fixtures/transformation/inputs-products/invalid.json +0 -43
  374. package/tests/fixtures/transformation/inputs-products/valid.json +0 -43
  375. package/tests/fixtures/transformation/linked-emission/invalid.json +0 -101
  376. package/tests/fixtures/transformation/linked-emission/valid.json +0 -107
  377. package/tests/fixtures/transformation/previousTransformationId/invalid-no-previous.json +0 -127
  378. package/tests/fixtures/transformation/previousTransformationId/invalid-previous-input.json +0 -100
  379. package/tests/fixtures/transformation/previousTransformationId/invalid-product-input.json +0 -106
  380. package/tests/fixtures/transformation/previousTransformationId/invalid-wrong-order.json +0 -136
  381. package/tests/fixtures/transformation/previousTransformationId/valid.json +0 -171
  382. package/tests/integration/__init__.py +0 -0
  383. package/tests/integration/test_product.py +0 -17
  384. package/tests/test_gee.py +0 -10
  385. package/tests/test_utils.py +0 -36
  386. package/tests/test_validation.py +0 -11
  387. package/tests/utils.py +0 -28
  388. package/tests/validators/__init__.py +0 -0
  389. package/tests/validators/test_aggregated_cycle.py +0 -44
  390. package/tests/validators/test_aggregated_shared.py +0 -63
  391. package/tests/validators/test_animal.py +0 -72
  392. package/tests/validators/test_completeness.py +0 -337
  393. package/tests/validators/test_cycle.py +0 -600
  394. package/tests/validators/test_emission.py +0 -170
  395. package/tests/validators/test_impact_assessment.py +0 -80
  396. package/tests/validators/test_indicator.py +0 -120
  397. package/tests/validators/test_infrastructure.py +0 -26
  398. package/tests/validators/test_input.py +0 -434
  399. package/tests/validators/test_management.py +0 -177
  400. package/tests/validators/test_measurement.py +0 -317
  401. package/tests/validators/test_organisation.py +0 -32
  402. package/tests/validators/test_practice.py +0 -490
  403. package/tests/validators/test_product.py +0 -291
  404. package/tests/validators/test_property.py +0 -143
  405. package/tests/validators/test_shared.py +0 -1139
  406. package/tests/validators/test_site.py +0 -151
  407. package/tests/validators/test_source.py +0 -15
  408. package/tests/validators/test_transformation.py +0 -151
  409. package/tests/validators/test_validators.py +0 -74
  410. package/tsconfig.dist.json +0 -9
  411. package/tsconfig.json +0 -25
@@ -1,434 +0,0 @@
1
- import os
2
- import json
3
- from unittest.mock import patch
4
-
5
- from tests.utils import fixtures_path
6
- from hestia_earth.validation.utils import _group_nodes
7
- from hestia_earth.validation.validators.input import (
8
- validate_must_include_id,
9
- validate_input_country,
10
- validate_related_impacts,
11
- validate_input_distribution_value,
12
- validate_animalFeed_requires_isAnimalFeed,
13
- validate_saplings,
14
- validate_input_is_product,
15
- )
16
-
17
- class_path = "hestia_earth.validation.validators.input"
18
- distribution_class_path = "hestia_earth.validation.validators.distribution"
19
- fixtures_folder = os.path.join(fixtures_path, "input")
20
-
21
-
22
- def test_validate_must_include_id_valid():
23
- # no inputs should be valid
24
- assert validate_must_include_id([]) is True
25
-
26
- with open(f"{fixtures_folder}/mustIncludeId/valid.json") as f:
27
- data = json.load(f)
28
- assert validate_must_include_id(data.get("nodes")) is True
29
-
30
- with open(f"{fixtures_folder}/mustIncludeId/valid-multiple-ids.json") as f:
31
- data = json.load(f)
32
- assert validate_must_include_id(data.get("nodes")) is True
33
-
34
-
35
- def test_validate_must_include_id_invalid():
36
- with open(f"{fixtures_folder}/mustIncludeId/invalid.json") as f:
37
- data = json.load(f)
38
- assert validate_must_include_id(data.get("nodes")) == {
39
- "level": "warning",
40
- "dataPath": ".inputs[0]",
41
- "message": "should add missing inputs",
42
- "params": {
43
- "expected": [
44
- "potassiumNitrateKgK2O",
45
- ],
46
- },
47
- }
48
-
49
-
50
- def test_validate_input_country_valid():
51
- # no inputs should be valid
52
- assert validate_input_country({}) is True
53
-
54
- with open(f"{fixtures_folder}/country/valid.json") as f:
55
- cycle = json.load(f)
56
- assert validate_input_country(cycle, "inputs") is True
57
-
58
-
59
- def test_validate_input_country_invalid():
60
- with open(f"{fixtures_folder}/country/invalid.json") as f:
61
- cycle = json.load(f)
62
- assert validate_input_country(cycle, "inputs") == {
63
- "level": "error",
64
- "dataPath": ".inputs[1].country",
65
- "message": "must be a country",
66
- }
67
-
68
-
69
- def test_validate_related_impacts_valid():
70
- # no inputs should be valid
71
- assert validate_related_impacts({}, "inputs") is True
72
-
73
- with open(f"{fixtures_folder}/impactAssessment/valid.json") as f:
74
- nodes = json.load(f).get("nodes")
75
- assert validate_related_impacts(nodes[0], "inputs", _group_nodes(nodes)) is True
76
-
77
-
78
- def test_validate_related_impacts_invalid():
79
- with open(f"{fixtures_folder}/impactAssessment/invalid.json") as f:
80
- nodes = json.load(f).get("nodes")
81
- assert validate_related_impacts(nodes[0], "inputs", _group_nodes(nodes)) == {
82
- "level": "error",
83
- "dataPath": ".inputs[1].impactAssessment",
84
- "message": "can not be linked to the same type",
85
- "params": {
86
- "current": "Cycle",
87
- },
88
- }
89
-
90
-
91
- def test_validate_input_distribution_value_incomplete_valid():
92
- with open(f"{fixtures_folder}/distribution/incomplete/valid.json") as f:
93
- cycle = json.load(f)
94
- assert validate_input_distribution_value(cycle, cycle.get("site")) is True
95
-
96
-
97
- def fake_get_post_fert(_country_id, product_id, fert_id):
98
- return {
99
- "inorganicPhosphorusFertiliserUnspecifiedKgP2O5": (44, 4),
100
- "inorganicPotassiumFertiliserUnspecifiedKgK2O": (84, 8),
101
- "inorganicNitrogenFertiliserUnspecifiedKgN": (166, 12),
102
- "ammoniumSulphateKgN": (166, 12),
103
- "ureaKgN": (166, 12),
104
- }[fert_id]
105
-
106
-
107
- fake_post_pest_value = (4, 12)
108
- fake_post_irri_value = (400, 120)
109
-
110
-
111
- @patch(f"{distribution_class_path}.get_post_fert", side_effect=fake_get_post_fert)
112
- @patch(f"{distribution_class_path}.get_post_pest", return_value=fake_post_pest_value)
113
- @patch(f"{distribution_class_path}.get_post_irri", return_value=fake_post_irri_value)
114
- def test_validate_input_distribution_value_complete_invalid(*args):
115
- with open(f"{fixtures_folder}/distribution/complete/invalid.json") as f:
116
- cycle = json.load(f)
117
- assert validate_input_distribution_value(cycle, cycle.get("site"), "inputs") == [
118
- {
119
- "level": "warning",
120
- "dataPath": ".inputs[0].value",
121
- "message": "is outside confidence interval",
122
- "params": {
123
- "term": {
124
- "@type": "Term",
125
- "@id": "ureaKgN",
126
- "termType": "inorganicFertiliser",
127
- "units": "kg N",
128
- },
129
- "group": "Nitrogen (kg N)",
130
- "country": {"@type": "Term", "@id": "GADM-GBR"},
131
- "outliers": [113],
132
- "threshold": 0.95,
133
- "min": 142.48,
134
- "max": 189.52,
135
- },
136
- },
137
- {
138
- "level": "warning",
139
- "dataPath": ".inputs[1].value",
140
- "message": "is outside confidence interval",
141
- "params": {
142
- "term": {
143
- "@type": "Term",
144
- "@id": "ammoniumSulphateKgN",
145
- "termType": "inorganicFertiliser",
146
- "units": "kg N",
147
- },
148
- "group": "Nitrogen (kg N)",
149
- "country": {"@type": "Term", "@id": "GADM-GBR"},
150
- "outliers": [113],
151
- "threshold": 0.95,
152
- "min": 142.48,
153
- "max": 189.52,
154
- },
155
- },
156
- {
157
- "level": "warning",
158
- "dataPath": ".inputs[2].value",
159
- "message": "is outside confidence interval",
160
- "params": {
161
- "term": {
162
- "@type": "Term",
163
- "@id": "inorganicNitrogenFertiliserUnspecifiedKgN",
164
- "termType": "inorganicFertiliser",
165
- "units": "kg N",
166
- },
167
- "group": "Nitrogen (kg N)",
168
- "country": {"@type": "Term", "@id": "GADM-GBR"},
169
- "outliers": [113],
170
- "threshold": 0.95,
171
- "min": 142.48,
172
- "max": 189.52,
173
- },
174
- },
175
- {
176
- "level": "warning",
177
- "dataPath": ".inputs[3].value",
178
- "message": "is outside confidence interval",
179
- "params": {
180
- "term": {
181
- "@type": "Term",
182
- "@id": "inorganicPotassiumFertiliserUnspecifiedKgK2O",
183
- "termType": "inorganicFertiliser",
184
- "units": "kg K2O",
185
- },
186
- "group": "Potassium (kg K2O)",
187
- "country": {"@type": "Term", "@id": "GADM-GBR"},
188
- "outliers": [217],
189
- "threshold": 0.95,
190
- "min": 68.32,
191
- "max": 99.68,
192
- },
193
- },
194
- {
195
- "level": "warning",
196
- "dataPath": ".inputs[4].value",
197
- "message": "is outside confidence interval",
198
- "params": {
199
- "term": {
200
- "@type": "Term",
201
- "@id": "inorganicPhosphorusFertiliserUnspecifiedKgP2O5",
202
- "termType": "inorganicFertiliser",
203
- "units": "kg P2O5",
204
- },
205
- "group": "Phosphorus (kg P2O5)",
206
- "country": {"@type": "Term", "@id": "GADM-GBR"},
207
- "outliers": [183],
208
- "threshold": 0.95,
209
- "min": 36.16,
210
- "max": 51.84,
211
- },
212
- },
213
- {
214
- "level": "warning",
215
- "dataPath": ".inputs[5].value",
216
- "message": "is outside confidence interval",
217
- "params": {
218
- "term": {
219
- "@type": "Term",
220
- "@id": "CAS-110-17-8",
221
- "termType": "pesticideAI",
222
- "units": "kg active ingredient",
223
- },
224
- "group": "pesticideUnspecifiedAi",
225
- "country": {"@type": "Term", "@id": "GADM-GBR"},
226
- "outliers": [439.64],
227
- "threshold": 0.95,
228
- "min": 0,
229
- "max": 27.52,
230
- },
231
- },
232
- {
233
- "level": "warning",
234
- "dataPath": ".inputs[6].value",
235
- "message": "is outside confidence interval",
236
- "params": {
237
- "term": {
238
- "@type": "Term",
239
- "@id": "CAS-498-15-7",
240
- "termType": "pesticideAI",
241
- "units": "kg active ingredient",
242
- },
243
- "group": "pesticideUnspecifiedAi",
244
- "country": {"@type": "Term", "@id": "GADM-GBR"},
245
- "outliers": [439.64],
246
- "threshold": 0.95,
247
- "min": 0,
248
- "max": 27.52,
249
- },
250
- },
251
- {
252
- "level": "warning",
253
- "dataPath": ".inputs[7].value",
254
- "message": "is outside confidence interval",
255
- "params": {
256
- "term": {
257
- "@type": "Term",
258
- "@id": "008MesoFertiliser",
259
- "termType": "pesticideBrandName",
260
- "units": "kg",
261
- },
262
- "group": "pesticideUnspecifiedAi",
263
- "country": {"@type": "Term", "@id": "GADM-GBR"},
264
- "outliers": [439.64],
265
- "threshold": 0.95,
266
- "min": 0,
267
- "max": 27.52,
268
- },
269
- },
270
- {
271
- "level": "warning",
272
- "dataPath": ".inputs[8].value",
273
- "message": "is outside confidence interval",
274
- "params": {
275
- "term": {
276
- "@type": "Term",
277
- "@id": "waterMarine",
278
- "termType": "water",
279
- "units": "m3",
280
- },
281
- "group": "waterSourceUnspecified",
282
- "country": {"@type": "Term", "@id": "GADM-GBR"},
283
- "outliers": [2800],
284
- "threshold": 0.95,
285
- "min": 164.8,
286
- "max": 635.2,
287
- },
288
- },
289
- {
290
- "level": "warning",
291
- "dataPath": ".inputs[9].value",
292
- "message": "is outside confidence interval",
293
- "params": {
294
- "term": {
295
- "@type": "Term",
296
- "@id": "waterRiverStream",
297
- "termType": "water",
298
- "units": "m3",
299
- },
300
- "group": "waterSourceUnspecified",
301
- "country": {"@type": "Term", "@id": "GADM-GBR"},
302
- "outliers": [2800],
303
- "threshold": 0.95,
304
- "min": 164.8,
305
- "max": 635.2,
306
- },
307
- },
308
- ]
309
-
310
-
311
- @patch(f"{distribution_class_path}.get_prior_fert", side_effect=fake_get_post_fert)
312
- @patch(f"{distribution_class_path}.get_post_fert", return_value=(None, None))
313
- @patch(f"{distribution_class_path}.get_prior_pest", return_value=fake_post_pest_value)
314
- @patch(f"{distribution_class_path}.get_post_pest", return_value=(None, None))
315
- @patch(f"{distribution_class_path}.get_prior_irri", return_value=fake_post_irri_value)
316
- @patch(f"{distribution_class_path}.get_post_irri", return_value=(None, None))
317
- def test_validate_input_distribution_value_complete_valid_with_prior_no_posterior(
318
- *args,
319
- ):
320
- with open(f"{fixtures_folder}/distribution/complete/valid.json") as f:
321
- cycle = json.load(f)
322
- assert validate_input_distribution_value(cycle, cycle.get("site")) is True
323
-
324
-
325
- @patch(f"{distribution_class_path}.get_prior_fert", return_value=(None, None))
326
- @patch(f"{distribution_class_path}.get_post_fert", return_value=(None, None))
327
- @patch(f"{distribution_class_path}.get_prior_pest", return_value=(None, None))
328
- @patch(f"{distribution_class_path}.get_post_pest", return_value=(None, None))
329
- @patch(f"{distribution_class_path}.get_prior_irri", return_value=(None, None))
330
- @patch(f"{distribution_class_path}.get_post_irri", return_value=(None, None))
331
- def test_validate_input_distribution_value_complete_valid_no_prior_no_posterior(*args):
332
- with open(f"{fixtures_folder}/distribution/complete/valid.json") as f:
333
- cycle = json.load(f)
334
- assert validate_input_distribution_value(cycle, cycle.get("site")) is True
335
-
336
-
337
- @patch(f"{distribution_class_path}.get_post_fert", return_value=Exception)
338
- @patch(f"{distribution_class_path}.get_post_pest", return_value=Exception)
339
- @patch(f"{distribution_class_path}.get_post_irri", return_value=Exception)
340
- def test_validate_input_distribution_value_handle_exception(*args):
341
- with open(f"{fixtures_folder}/distribution/complete/valid.json") as f:
342
- cycle = json.load(f)
343
- assert validate_input_distribution_value(cycle, cycle.get("site")) is True
344
-
345
-
346
- def test_validate_input_distribution_value_non_cropland(*args):
347
- with open(f"{fixtures_folder}/distribution/animalHousing.json") as f:
348
- cycle = json.load(f)
349
- assert validate_input_distribution_value(cycle, cycle.get("site")) is True
350
-
351
-
352
- def test_validate_animalFeed_requires_isAnimalFeed_valid():
353
- # no inputs should be valid
354
- assert validate_animalFeed_requires_isAnimalFeed({}, {}) is True
355
-
356
- with open(f"{fixtures_folder}/animalFeed-fate/valid.json") as f:
357
- cycle = json.load(f)
358
- assert validate_animalFeed_requires_isAnimalFeed(cycle, cycle.get("site")) is True
359
-
360
-
361
- def test_validate_animalFeed_requires_isAnimalFeed_invalid():
362
- with open(f"{fixtures_folder}/animalFeed-fate/invalid.json") as f:
363
- cycle = json.load(f)
364
- assert validate_animalFeed_requires_isAnimalFeed(cycle, cycle.get("site")) == [
365
- {
366
- "level": "error",
367
- "dataPath": ".inputs[0]",
368
- "message": "must specify is it an animal feed",
369
- },
370
- {
371
- "level": "error",
372
- "dataPath": ".animals[0].inputs[0]",
373
- "message": "must specify is it an animal feed",
374
- },
375
- ]
376
-
377
-
378
- def test_validate_saplings_valid():
379
- # no inputs should be valid
380
- assert validate_saplings({}) is True
381
-
382
- with open(f"{fixtures_folder}/saplings/valid.json") as f:
383
- cycle = json.load(f)
384
- assert validate_saplings(cycle, "inputs") is True
385
-
386
- with open(f"{fixtures_folder}/saplings/valid-not-plantation.json") as f:
387
- cycle = json.load(f)
388
- assert validate_saplings(cycle, "inputs") is True
389
-
390
- with open(f"{fixtures_folder}/saplings/valid-no-saplings.json") as f:
391
- cycle = json.load(f)
392
- assert validate_saplings(cycle, "inputs") is True
393
-
394
-
395
- def test_validate_saplings_invalid():
396
- with open(f"{fixtures_folder}/saplings/invalid.json") as f:
397
- cycle = json.load(f)
398
- assert validate_saplings(cycle, "inputs") == [
399
- {
400
- "level": "error",
401
- "dataPath": ".inputs[0].term",
402
- "message": "saplings cannot be used as an input here",
403
- "params": {
404
- "current": "saplings",
405
- "expected": "saplingsDepreciatedAmountPerCycle",
406
- },
407
- }
408
- ]
409
-
410
-
411
- def test_validate_input_is_product_valid():
412
- # no inputs should be valid
413
- assert validate_input_is_product({}) is True
414
-
415
- with open(f"{fixtures_folder}/input-as-product/valid.json") as f:
416
- cycle = json.load(f)
417
- assert validate_input_is_product(cycle, "inputs") is True
418
-
419
-
420
- def test_validate_input_is_product_invalid():
421
- with open(f"{fixtures_folder}/input-as-product/invalid.json") as f:
422
- cycle = json.load(f)
423
- assert validate_input_is_product(cycle, "inputs") == {
424
- "level": "error",
425
- "dataPath": ".inputs[1].term",
426
- "message": "must be a product",
427
- "params": {
428
- "term": {
429
- "@id": "nitrogenUptakeWholeCropWeedsAndVolunteers",
430
- "@type": "Term",
431
- "termType": "crop",
432
- }
433
- },
434
- }
@@ -1,177 +0,0 @@
1
- import os
2
- import json
3
- from hestia_earth.schema import TermTermType
4
-
5
- from tests.utils import fixtures_path
6
- from hestia_earth.validation.validators.management import (
7
- validate_has_termType,
8
- validate_has_termTypes,
9
- validate_exists,
10
- validate_fallow_dates,
11
- validate_cycles_overlap,
12
- )
13
-
14
- fixtures_folder = os.path.join(fixtures_path, "management")
15
-
16
-
17
- def test_validate_has_termType_valid():
18
- with open(f"{fixtures_folder}/termType/valid-cropland.json") as f:
19
- site = json.load(f)
20
-
21
- assert validate_has_termType(site, TermTermType.LANDUSEMANAGEMENT) is True
22
-
23
- with open(f"{fixtures_folder}/termType/valid-permanent-pasture.json") as f:
24
- site = json.load(f)
25
-
26
- assert validate_has_termType(site, TermTermType.LANDUSEMANAGEMENT) is True
27
-
28
-
29
- def test_validate_has_termType_invalid():
30
- with open(f"{fixtures_folder}/termType/invalid-cropland.json") as f:
31
- site = json.load(f)
32
-
33
- assert validate_has_termType(site, TermTermType.LANDUSEMANAGEMENT) == {
34
- "level": "warning",
35
- "dataPath": ".management",
36
- "message": "should contain at least one management node",
37
- "params": {"termType": "landUseManagement"},
38
- }
39
-
40
- with open(f"{fixtures_folder}/termType/invalid-permanent-pasture.json") as f:
41
- site = json.load(f)
42
-
43
- assert validate_has_termType(site, TermTermType.WATERREGIME) == {
44
- "level": "warning",
45
- "dataPath": ".management",
46
- "message": "should contain at least one management node",
47
- "params": {"termType": "waterRegime"},
48
- }
49
-
50
-
51
- def test_validate_has_termTypes_valid():
52
- # no blank node is valid
53
- site = {}
54
- assert validate_has_termTypes(site) is True
55
-
56
- with open(f"{fixtures_folder}/termType/valid-cropland.json") as f:
57
- site = json.load(f)
58
-
59
- assert validate_has_termTypes(site) is True
60
-
61
- with open(f"{fixtures_folder}/termType/valid-permanent-pasture.json") as f:
62
- site = json.load(f)
63
-
64
- assert validate_has_termTypes(site) is True
65
-
66
- with open(f"{fixtures_folder}/termType/valid-no-management.json") as f:
67
- site = json.load(f)
68
-
69
- assert validate_has_termTypes(site) is True
70
-
71
-
72
- def test_validate_has_termTypes_invalid():
73
- with open(f"{fixtures_folder}/termType/invalid-cropland.json") as f:
74
- site = json.load(f)
75
-
76
- assert validate_has_termTypes(site) == [
77
- {
78
- "level": "warning",
79
- "dataPath": ".management",
80
- "message": "should contain at least one management node",
81
- "params": {"termType": "landUseManagement"},
82
- },
83
- {
84
- "level": "warning",
85
- "dataPath": ".management",
86
- "message": "should contain at least one management node",
87
- "params": {"termType": "waterRegime"},
88
- },
89
- ]
90
-
91
- with open(f"{fixtures_folder}/termType/invalid-permanent-pasture.json") as f:
92
- site = json.load(f)
93
-
94
- assert validate_has_termTypes(site) == [
95
- {
96
- "level": "warning",
97
- "dataPath": ".management",
98
- "message": "should contain at least one management node",
99
- "params": {"termType": "landUseManagement"},
100
- },
101
- {
102
- "level": "warning",
103
- "dataPath": ".management",
104
- "message": "should contain at least one management node",
105
- "params": {"termType": "waterRegime"},
106
- },
107
- ]
108
-
109
-
110
- def test_validate_exists_valid():
111
- with open(f"{fixtures_folder}/exists/valid.json") as f:
112
- site = json.load(f)
113
-
114
- assert validate_exists(site) is True
115
-
116
-
117
- def test_validate_exists_invalid():
118
- with open(f"{fixtures_folder}/exists/invalid.json") as f:
119
- site = json.load(f)
120
-
121
- assert validate_exists(site) == {
122
- "level": "warning",
123
- "dataPath": ".management",
124
- "message": "should contain at least one management node",
125
- }
126
-
127
-
128
- def test_validate_defaultValue_valid():
129
- # no management should be valid
130
- assert validate_fallow_dates({}) is True
131
-
132
- with open(f"{fixtures_folder}/fallow-dates/valid.json") as f:
133
- data = json.load(f)
134
- assert validate_fallow_dates(data, "management") is True
135
-
136
-
137
- def test_validate_defaultValue_invalid():
138
- with open(f"{fixtures_folder}/fallow-dates/invalid.json") as f:
139
- data = json.load(f)
140
- assert validate_fallow_dates(data, "management") == {
141
- "level": "error",
142
- "dataPath": ".management[0]",
143
- "message": "duration must be in specified interval",
144
- "params": {
145
- "term": {"@type": "Term", "@id": "shortFallow"},
146
- "current": 730,
147
- "expected": "less-than-1-year",
148
- },
149
- }
150
-
151
-
152
- def test_validate_cycles_overlap_valid():
153
- # no management should be valid
154
- assert validate_cycles_overlap({}, []) is True
155
-
156
- with open(f"{fixtures_folder}/cycle-overlap/cycles.json") as f:
157
- cycles = json.load(f)
158
-
159
- with open(f"{fixtures_folder}/cycle-overlap/valid.json") as f:
160
- data = json.load(f)
161
- # no cycles should be valid
162
- assert validate_cycles_overlap(data, cycles=[]) is True
163
- assert validate_cycles_overlap(data, cycles, "management") is True
164
-
165
-
166
- def test_validate_cycles_overlap_invalid():
167
- with open(f"{fixtures_folder}/cycle-overlap/cycles.json") as f:
168
- cycles = json.load(f)
169
-
170
- with open(f"{fixtures_folder}/cycle-overlap/invalid.json") as f:
171
- data = json.load(f)
172
- assert validate_cycles_overlap(data, cycles, "management") == {
173
- "level": "error",
174
- "dataPath": ".management[0].endDate",
175
- "message": "management date must be before cycle start date",
176
- "params": {"current": "2020-09-22", "expected": "2020-03-12"},
177
- }