@hestia-earth/data-validation 0.37.7 → 0.37.9

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 +1 -1
  7. package/src/version.ts +1 -1
  8. package/validation.json +639 -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,490 +0,0 @@
1
- import os
2
- from unittest.mock import patch
3
- import json
4
- from hestia_earth.schema import SiteSiteType
5
-
6
- from tests.utils import fixtures_path, fake_get_terms
7
- from hestia_earth.validation.validators.practice import (
8
- _is_irrigated,
9
- validate_defaultValue,
10
- validate_waterRegime_rice_products,
11
- validate_croppingDuration_riceGrainInHuskFlooded,
12
- validate_longFallowDuration,
13
- validate_excretaManagement,
14
- validate_no_tillage,
15
- validate_tillage_site_type,
16
- validate_tillage_values,
17
- validate_liveAnimal_system,
18
- validate_pastureGrass_key_termType,
19
- validate_pastureGrass_key_value,
20
- validate_has_pastureGrass,
21
- validate_permanent_crop_productive_phase,
22
- validate_primaryPercent,
23
- validate_processing_operation,
24
- validate_landCover_match_products,
25
- validate_practices_management,
26
- validate_irrigated_complete_has_inputs,
27
- )
28
-
29
- class_path = "hestia_earth.validation.validators.practice"
30
- fixtures_folder = os.path.join(fixtures_path, "practice")
31
-
32
-
33
- def test_is_irrigated():
34
- term = {"@id": "irrigatedTypeUnspecified", "termType": "waterRegime"}
35
- assert _is_irrigated(term) is True
36
-
37
- term = {"@id": "irrigating", "termType": "operation"}
38
- assert _is_irrigated(term) is True
39
-
40
-
41
- def test_validate_defaultValue_valid():
42
- # no practices should be valid
43
- assert validate_defaultValue({}) is True
44
-
45
- with open(f"{fixtures_folder}/defaultValue/valid.json") as f:
46
- data = json.load(f)
47
- assert validate_defaultValue(data, "nodes") is True
48
-
49
-
50
- def test_validate_defaultValue_invalid():
51
- with open(f"{fixtures_folder}/defaultValue/invalid.json") as f:
52
- data = json.load(f)
53
- assert validate_defaultValue(data, "nodes") == {
54
- "level": "warning",
55
- "dataPath": ".nodes[0]",
56
- "message": "should specify a value when HESTIA has a default one",
57
- "params": {
58
- "term": {
59
- "@type": "Term",
60
- "@id": "monocultureSimpleBatchProduction",
61
- "termType": "aquacultureManagement",
62
- },
63
- "expected": 100,
64
- },
65
- }
66
-
67
-
68
- @patch(f"{class_path}.get_terms", side_effect=fake_get_terms)
69
- def test_validate_waterRegime_rice_products_valid(*args):
70
- # no practices should be valid
71
- assert validate_waterRegime_rice_products({}, "practices") is True
72
-
73
- with open(f"{fixtures_folder}/waterRegime/rice/valid.json") as f:
74
- cycle = json.load(f)
75
- assert validate_waterRegime_rice_products(cycle) is True
76
-
77
- with open(f"{fixtures_folder}/waterRegime/rice/valid-0-value.json") as f:
78
- cycle = json.load(f)
79
- assert validate_waterRegime_rice_products(cycle) is True
80
-
81
-
82
- @patch(f"{class_path}.get_terms", side_effect=fake_get_terms)
83
- def test_validate_waterRegime_rice_products_invalid(*args):
84
- with open(f"{fixtures_folder}/waterRegime/rice/invalid.json") as f:
85
- cycle = json.load(f)
86
- assert validate_waterRegime_rice_products(cycle) == {
87
- "level": "error",
88
- "dataPath": ".practices[0].term",
89
- "message": "rice products not allowed for this water regime practice",
90
- "params": {
91
- "term": {
92
- "@type": "Term",
93
- "@id": "irrigatedTypeUnspecified",
94
- "termType": "waterRegime",
95
- },
96
- "products": [{"@type": "Term", "@id": "riceMeal", "termType": "crop"}],
97
- "expected": ["riceGrainInHuskFlooded", "riceGrainInHuskUpland"],
98
- },
99
- }
100
-
101
-
102
- def test_validate_croppingDuration_riceGrainInHuskFlooded_valid():
103
- # no practices should be valid
104
- assert validate_croppingDuration_riceGrainInHuskFlooded({}, "practices") is True
105
-
106
- with open(
107
- f"{fixtures_folder}/croppingDuration//riceGrainInHuskFlooded/valid.json"
108
- ) as f:
109
- data = json.load(f)
110
- assert validate_croppingDuration_riceGrainInHuskFlooded(data) is True
111
-
112
-
113
- def test_validate_croppingDuration_riceGrainInHuskFlooded_invalid():
114
- with open(
115
- f"{fixtures_folder}/croppingDuration//riceGrainInHuskFlooded/invalid.json"
116
- ) as f:
117
- data = json.load(f)
118
- assert validate_croppingDuration_riceGrainInHuskFlooded(data) == {
119
- "level": "error",
120
- "dataPath": ".practices[0].value",
121
- "message": "croppingDuration must be between min and max",
122
- "params": {"min": 78, "max": 150},
123
- }
124
-
125
-
126
- def test_validate_longFallowDuration_valid():
127
- # no practices should be valid
128
- assert validate_longFallowDuration([]) is True
129
-
130
- with open(f"{fixtures_folder}/longFallowDuration/valid.json") as f:
131
- data = json.load(f)
132
- assert validate_longFallowDuration(data.get("nodes")) is True
133
-
134
-
135
- def test_validate_longFallowDuration_invalid():
136
- with open(f"{fixtures_folder}/longFallowDuration/invalid.json") as f:
137
- data = json.load(f)
138
- assert validate_longFallowDuration(data.get("nodes")) == {
139
- "level": "error",
140
- "dataPath": ".practices[1].value",
141
- "message": "longFallowDuration must be lower than 5 years",
142
- }
143
-
144
-
145
- def test_validate_excretaManagement_valid():
146
- # no practices should be valid
147
- assert validate_excretaManagement({}, []) is True
148
-
149
- with open(f"{fixtures_folder}/excretaManagement/valid.json") as f:
150
- cycle = json.load(f)
151
- assert validate_excretaManagement(cycle, cycle.get("practices")) is True
152
-
153
-
154
- def test_validate_excretaManagement_invalid():
155
- with open(f"{fixtures_folder}/excretaManagement/invalid.json") as f:
156
- cycle = json.load(f)
157
- assert validate_excretaManagement(cycle, cycle.get("practices")) == {
158
- "level": "error",
159
- "dataPath": ".practices",
160
- "message": "an excreta input is required when using an excretaManagement practice",
161
- }
162
-
163
-
164
- def test_validate_no_tillage_valid():
165
- # no practices should be valid
166
- assert validate_no_tillage([]) is True
167
-
168
- with open(f"{fixtures_folder}/noTillage/valid.json") as f:
169
- data = json.load(f)
170
- assert validate_no_tillage(data.get("nodes")) is True
171
-
172
- # value is not 100
173
- with open(f"{fixtures_folder}/noTillage/valid-value-not-100.json") as f:
174
- data = json.load(f)
175
- assert validate_no_tillage(data.get("nodes")) is True
176
-
177
-
178
- def test_validate_no_tillage_invalid():
179
- with open(f"{fixtures_folder}/noTillage/invalid.json") as f:
180
- data = json.load(f)
181
- assert validate_no_tillage(data.get("nodes")) == {
182
- "level": "error",
183
- "dataPath": ".practices[1]",
184
- "message": "is not allowed in combination with noTillage",
185
- }
186
-
187
-
188
- def test_validate_tillage_site_type_valid():
189
- # no practices should be valid
190
- assert validate_tillage_site_type([], {}) is True
191
-
192
- with open(f"{fixtures_folder}/tillage-siteType/valid.json") as f:
193
- cycle = json.load(f)
194
- assert validate_tillage_site_type(cycle.get("practices"), cycle.get("site")) is True
195
-
196
- # no practice but skipped termType
197
- with open(f"{fixtures_folder}/tillage-siteType/warning.json") as f:
198
- cycle = json.load(f)
199
- site = cycle.get("site")
200
- site["siteType"] = SiteSiteType.SEA_OR_OCEAN.value
201
- assert validate_tillage_site_type(cycle.get("practices"), site) is True
202
-
203
-
204
- def test_validate_tillage_site_type_warning():
205
- with open(f"{fixtures_folder}/tillage-siteType/warning.json") as f:
206
- cycle = json.load(f)
207
- assert validate_tillage_site_type(cycle.get("practices"), cycle.get("site")) == {
208
- "level": "warning",
209
- "dataPath": ".practices",
210
- "message": "should contain a tillage practice",
211
- }
212
-
213
-
214
- def test_validate_tillage_values_valid():
215
- # no practices should be valid
216
- assert validate_tillage_values([]) is True
217
-
218
- with open(f"{fixtures_folder}/tillage-values/valid.json") as f:
219
- cycle = json.load(f)
220
- assert validate_tillage_values(cycle.get("practices")) is True
221
-
222
-
223
- def test_validate_tillage_values_invalid():
224
- with open(f"{fixtures_folder}/tillage-values/invalid-noTillage.json") as f:
225
- cycle = json.load(f)
226
- assert validate_tillage_values(cycle.get("practices")) == {
227
- "level": "error",
228
- "dataPath": ".practices[0]",
229
- "message": "cannot use no tillage if depth or number of tillages is not 0",
230
- }
231
-
232
- with open(f"{fixtures_folder}/tillage-values/invalid-fullTillage.json") as f:
233
- cycle = json.load(f)
234
- assert validate_tillage_values(cycle.get("practices")) == {
235
- "level": "error",
236
- "dataPath": ".practices[0]",
237
- "message": "cannot use full tillage if depth or number of tillages is 0",
238
- }
239
-
240
-
241
- def test_validate_liveAnimal_system_valid():
242
- # no practices should be valid
243
- assert validate_liveAnimal_system({}) is True
244
-
245
- with open(f"{fixtures_folder}/liveAnimal-system/valid.json") as f:
246
- data = json.load(f)
247
- assert validate_liveAnimal_system(data) is True
248
-
249
-
250
- def test_validate_liveAnimal_system_invalid():
251
- with open(f"{fixtures_folder}/liveAnimal-system/invalid.json") as f:
252
- data = json.load(f)
253
- assert validate_liveAnimal_system(data) == {
254
- "level": "warning",
255
- "dataPath": ".practices",
256
- "message": "should add an animal production system",
257
- }
258
-
259
-
260
- def test_validate_pastureGrass_key_termType_valid():
261
- # no practices should be valid
262
- assert validate_pastureGrass_key_termType({}) is True
263
-
264
- with open(f"{fixtures_folder}/pastureGrass/key-termType/valid.json") as f:
265
- practice = json.load(f)
266
- assert validate_pastureGrass_key_termType({"practices": [practice]}) is True
267
-
268
-
269
- def test_validate_pastureGrass_key_termType_invalid():
270
- with open(f"{fixtures_folder}/pastureGrass/key-termType/invalid.json") as f:
271
- practice = json.load(f)
272
- assert validate_pastureGrass_key_termType({"practices": [practice]}) == {
273
- "level": "error",
274
- "dataPath": ".practices[0].key",
275
- "message": "pastureGrass key termType must be landCover",
276
- "params": {
277
- "expected": "landCover",
278
- "term": {
279
- "@id": "alfalfaFreshForage",
280
- "@type": "Term",
281
- "termType": "forage",
282
- },
283
- "value": "forage",
284
- },
285
- }
286
-
287
-
288
- def test_validate_pastureGrass_key_value_valid():
289
- # no practices should be valid
290
- assert validate_pastureGrass_key_value({}) is True
291
-
292
- with open(f"{fixtures_folder}/pastureGrass/key-value/valid.json") as f:
293
- cycle = json.load(f)
294
- assert validate_pastureGrass_key_value(cycle, "practices") is True
295
-
296
-
297
- def test_validate_pastureGrass_key_value_invalid():
298
- with open(f"{fixtures_folder}/pastureGrass/key-value/invalid.json") as f:
299
- cycle = json.load(f)
300
- assert validate_pastureGrass_key_value(cycle, "practices") == {
301
- "level": "error",
302
- "dataPath": ".practices",
303
- "message": "the sum of all pastureGrass values must be 100",
304
- "params": {"expected": 100, "current": 80},
305
- }
306
-
307
- with open(f"{fixtures_folder}/pastureGrass/key-value/invalid-numbers.json") as f:
308
- cycle = json.load(f)
309
- assert validate_pastureGrass_key_value(cycle, "practices") == {
310
- "level": "error",
311
- "dataPath": ".practices",
312
- "message": "all values must be numbers",
313
- }
314
-
315
-
316
- def test_validate_has_pastureGrass_valid():
317
- with open(f"{fixtures_folder}/pastureGrass/permanent-pasture/valid.json") as f:
318
- data = json.load(f)
319
- assert validate_has_pastureGrass(data, data.get("site"), "practices") is True
320
-
321
-
322
- def test_validate_has_pastureGrass_invalid():
323
- with open(f"{fixtures_folder}/pastureGrass/permanent-pasture/invalid.json") as f:
324
- data = json.load(f)
325
- assert validate_has_pastureGrass(data, data.get("site")) == {
326
- "level": "warning",
327
- "dataPath": ".practices",
328
- "message": "should add the term pastureGrass",
329
- }
330
-
331
-
332
- def test_validate_permanent_crop_productive_phase_valid():
333
- # no practices is valid
334
- assert validate_permanent_crop_productive_phase({}, "practices") is True
335
-
336
- with open(f"{fixtures_folder}/productivePhasePermanentCrops/valid.json") as f:
337
- data = json.load(f)
338
- assert validate_permanent_crop_productive_phase(data, "practices") is True
339
-
340
- with open(
341
- f"{fixtures_folder}/productivePhasePermanentCrops/valid-0-value.json"
342
- ) as f:
343
- data = json.load(f)
344
- assert validate_permanent_crop_productive_phase(data, "practices") is True
345
-
346
- with open(
347
- f"{fixtures_folder}/productivePhasePermanentCrops/valid-no-value.json"
348
- ) as f:
349
- data = json.load(f)
350
- assert validate_permanent_crop_productive_phase(data, "practices") is True
351
-
352
-
353
- def test_validate_permanent_crop_productive_phase_invalid():
354
- with open(f"{fixtures_folder}/productivePhasePermanentCrops/invalid.json") as f:
355
- data = json.load(f)
356
- assert validate_permanent_crop_productive_phase(data) == {
357
- "level": "error",
358
- "dataPath": ".practices",
359
- "message": "must add the term productivePhasePermanentCrops",
360
- }
361
-
362
-
363
- def test_validate_primaryPercent_valid():
364
- # no practices is valid
365
- assert validate_primaryPercent({}, {}) is True
366
-
367
- with open(f"{fixtures_folder}/processingOperation/valid.json") as f:
368
- data = json.load(f)
369
- assert validate_primaryPercent(data, data.get("site"), "practices") is True
370
-
371
- with open(f"{fixtures_folder}/processingOperation/valid-cropland.json") as f:
372
- data = json.load(f)
373
- assert validate_primaryPercent(data, data.get("site"), "practices") is True
374
-
375
- with open(f"{fixtures_folder}/primaryPercent/valid.json") as f:
376
- data = json.load(f)
377
- assert validate_primaryPercent(data, data.get("site"), "practices") is True
378
-
379
-
380
- def test_validate_primaryPercent_invalid():
381
- with open(f"{fixtures_folder}/primaryPercent/invalid.json") as f:
382
- data = json.load(f)
383
- assert validate_primaryPercent(data, data.get("site"), "practices") == {
384
- "level": "error",
385
- "dataPath": ".practices[0]",
386
- "message": "primaryPercent not allowed on this siteType",
387
- "params": {"current": "cropland", "expected": ["agri-food processor"]},
388
- }
389
-
390
-
391
- def test_validate_processing_operation_valid():
392
- # no practices is valid
393
- assert validate_processing_operation({}, {}) is True
394
-
395
- with open(f"{fixtures_folder}/processingOperation/valid.json") as f:
396
- data = json.load(f)
397
- assert validate_processing_operation(data, data.get("site"), "practices") is True
398
-
399
- with open(f"{fixtures_folder}/processingOperation/valid-cropland.json") as f:
400
- data = json.load(f)
401
- assert validate_processing_operation(data, data.get("site"), "practices") is True
402
-
403
-
404
- def test_validate_processing_operation_invalid():
405
- with open(f"{fixtures_folder}/processingOperation/invalid.json") as f:
406
- data = json.load(f)
407
- assert validate_processing_operation(data, data.get("site"), "practices") == {
408
- "level": "error",
409
- "dataPath": ".practices",
410
- "message": "must have a primary processing operation",
411
- }
412
-
413
- with open(f"{fixtures_folder}/processingOperation/invalid-no-primary.json") as f:
414
- data = json.load(f)
415
- assert validate_processing_operation(data, data.get("site"), "practices") == {
416
- "level": "error",
417
- "dataPath": ".practices",
418
- "message": "must have a primary processing operation",
419
- }
420
-
421
-
422
- def test_validate_landCover_match_products_valid():
423
- # no practices is valid
424
- assert validate_landCover_match_products({}, {}) is True
425
-
426
- with open(f"{fixtures_folder}/landCover-products/valid.json") as f:
427
- data = json.load(f)
428
- assert (
429
- validate_landCover_match_products(data, data.get("site"), "practices") is True
430
- )
431
-
432
- with open(f"{fixtures_folder}/landCover-products/valid-coverCrop.json") as f:
433
- data = json.load(f)
434
- assert (
435
- validate_landCover_match_products(data, data.get("site"), "practices") is True
436
- )
437
-
438
-
439
- def test_validate_landCover_match_products_invalid():
440
- with open(f"{fixtures_folder}/landCover-products/invalid.json") as f:
441
- data = json.load(f)
442
- assert validate_landCover_match_products(data, data.get("site"), "practices") == {
443
- "level": "error",
444
- "dataPath": ".practices",
445
- "message": "at least one landCover practice must match an equivalent product",
446
- "params": {"current": ["abacaPlant"], "expected": ["wheatPlant"]},
447
- }
448
-
449
-
450
- def test_validate_practices_management_valid():
451
- # no practices is valid
452
- assert validate_practices_management({}, {}) is True
453
-
454
- with open(f"{fixtures_folder}/site-management/valid.json") as f:
455
- data = json.load(f)
456
- assert validate_practices_management(data, data.get("site"), "practices") is True
457
-
458
-
459
- def test_validate_practices_management_invalid():
460
- with open(f"{fixtures_folder}/site-management/invalid.json") as f:
461
- data = json.load(f)
462
- assert validate_practices_management(data, data.get("site"), "practices") == {
463
- "level": "error",
464
- "dataPath": ".practices[0].value",
465
- "message": "should match the site management node value",
466
- "params": {"current": 50, "expected": 100},
467
- }
468
-
469
-
470
- def test_validate_irrigated_complete_has_inputs_valid():
471
- # no practices is valid
472
- assert validate_irrigated_complete_has_inputs({}) is True
473
-
474
- with open(f"{fixtures_folder}/irrigated-complete/valid.json") as f:
475
- data = json.load(f)
476
- assert validate_irrigated_complete_has_inputs(data) is True
477
-
478
- with open(f"{fixtures_folder}/irrigated-complete/valid-incomplete.json") as f:
479
- data = json.load(f)
480
- assert validate_irrigated_complete_has_inputs(data) is True
481
-
482
-
483
- def test_validate_irrigated_complete_has_inputs_invalid():
484
- with open(f"{fixtures_folder}/irrigated-complete/invalid.json") as f:
485
- data = json.load(f)
486
- assert validate_irrigated_complete_has_inputs(data) == {
487
- "level": "error",
488
- "dataPath": ".inputs",
489
- "message": "must contain water inputs",
490
- }