@kalisio/kdk 1.4.0 → 1.5.1

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 (356) hide show
  1. package/.nyc_output/{0f1a87aa-d3bb-4c61-8c1e-12294055358d.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
  2. package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
  3. package/.nyc_output/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  4. package/.nyc_output/{8be4cd9f-124a-41f9-80f4-f267ced63c86.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
  5. package/.nyc_output/{a63b0924-fd09-4e30-974f-cb4be2243b66.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
  6. package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
  7. package/.nyc_output/processinfo/{27204015-ebfd-456f-a3bb-6a94f71946b8.json → 2226bcce-9d22-4dad-b9fa-46564b5565c7.json} +1 -1
  8. package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  9. package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
  10. package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
  11. package/.nyc_output/processinfo/index.json +1 -1
  12. package/CHANGELOG.md +219 -68
  13. package/coverage/core/api/application.js.html +455 -455
  14. package/coverage/core/api/authentication.js.html +119 -119
  15. package/coverage/core/api/db.js.html +201 -201
  16. package/coverage/core/api/hooks/hooks.account.js.html +48 -48
  17. package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
  18. package/coverage/core/api/hooks/hooks.authorisations.js.html +353 -353
  19. package/coverage/core/api/hooks/hooks.devices.js.html +22 -22
  20. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  21. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  22. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  23. package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
  24. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  25. package/coverage/core/api/hooks/hooks.query.js.html +200 -200
  26. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  27. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  28. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  29. package/coverage/core/api/hooks/hooks.users.js.html +261 -261
  30. package/coverage/core/api/hooks/index.html +167 -167
  31. package/coverage/core/api/hooks/index.js.html +24 -24
  32. package/coverage/core/api/index.html +75 -75
  33. package/coverage/core/api/index.js.html +26 -26
  34. package/coverage/core/api/marshall.js.html +57 -57
  35. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  36. package/coverage/core/api/models/index.html +50 -50
  37. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  38. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  39. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  40. package/coverage/core/api/oauth2-handler.js.html +18 -18
  41. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  42. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  43. package/coverage/core/api/services/account/account.service.js.html +108 -108
  44. package/coverage/core/api/services/account/index.html +32 -32
  45. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  46. package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -132
  47. package/coverage/core/api/services/authorisations/index.html +28 -28
  48. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  49. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  50. package/coverage/core/api/services/databases/index.html +24 -24
  51. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  52. package/coverage/core/api/services/devices/devices.service.js.html +61 -61
  53. package/coverage/core/api/services/devices/index.html +22 -22
  54. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  55. package/coverage/core/api/services/groups/index.html +13 -13
  56. package/coverage/core/api/services/index.html +21 -21
  57. package/coverage/core/api/services/index.js.html +137 -137
  58. package/coverage/core/api/services/mailer/index.html +24 -24
  59. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  60. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  61. package/coverage/core/api/services/organisations/index.html +24 -24
  62. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  63. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  64. package/coverage/core/api/services/pusher/index.html +32 -32
  65. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  66. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  67. package/coverage/core/api/services/pusher/pusher.service.js.html +336 -336
  68. package/coverage/core/api/services/storage/index.html +21 -21
  69. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  70. package/coverage/core/api/services/tags/index.html +21 -21
  71. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  72. package/coverage/core/api/services/users/index.html +21 -21
  73. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  74. package/coverage/core/common/errors.js.html +1 -1
  75. package/coverage/core/common/index.html +42 -27
  76. package/coverage/core/common/index.js.html +16 -16
  77. package/coverage/core/common/permissions.js.html +274 -274
  78. package/coverage/index.html +174 -174
  79. package/coverage/lcov-report/core/api/application.js.html +455 -455
  80. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  81. package/coverage/lcov-report/core/api/db.js.html +201 -201
  82. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
  83. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
  84. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +353 -353
  85. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +22 -22
  86. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  87. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  88. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  89. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
  90. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  91. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +200 -200
  92. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  93. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  94. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  95. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +261 -261
  96. package/coverage/lcov-report/core/api/hooks/index.html +167 -167
  97. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  98. package/coverage/lcov-report/core/api/index.html +75 -75
  99. package/coverage/lcov-report/core/api/index.js.html +26 -26
  100. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  101. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  102. package/coverage/lcov-report/core/api/models/index.html +50 -50
  103. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  104. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  105. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  106. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  107. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  108. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  109. package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
  110. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  111. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  112. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -132
  113. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  114. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  115. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  116. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  117. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  118. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +61 -61
  119. package/coverage/lcov-report/core/api/services/devices/index.html +22 -22
  120. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  121. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  122. package/coverage/lcov-report/core/api/services/index.html +21 -21
  123. package/coverage/lcov-report/core/api/services/index.js.html +137 -137
  124. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  125. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  126. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  127. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  128. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  129. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  130. package/coverage/lcov-report/core/api/services/pusher/index.html +32 -32
  131. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  132. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  133. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +336 -336
  134. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  135. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  136. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  137. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  138. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  139. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  140. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  141. package/coverage/lcov-report/core/common/index.html +42 -27
  142. package/coverage/lcov-report/core/common/index.js.html +16 -16
  143. package/coverage/lcov-report/core/common/permissions.js.html +274 -274
  144. package/coverage/lcov-report/index.html +174 -174
  145. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  146. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +72 -18
  147. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  148. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  149. package/coverage/lcov-report/map/api/index.html +1 -1
  150. package/coverage/lcov-report/map/api/index.js.html +1 -1
  151. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  152. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  153. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  154. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  155. package/coverage/lcov-report/map/api/models/index.html +1 -1
  156. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  158. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  159. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  160. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  161. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  162. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  163. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +1 -1
  164. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  165. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  166. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  167. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  168. package/coverage/lcov-report/map/api/services/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  170. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  171. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  172. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  173. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  174. package/coverage/lcov-report/map/common/index.html +1 -1
  175. package/coverage/lcov-report/map/common/index.js.html +1 -1
  176. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  177. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  178. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  179. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  180. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  181. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  182. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  183. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  184. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  185. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  186. package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  188. package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
  189. package/coverage/lcov.info +3289 -3610
  190. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  191. package/coverage/map/api/hooks/hooks.query.js.html +72 -18
  192. package/coverage/map/api/hooks/index.html +7 -7
  193. package/coverage/map/api/hooks/index.js.html +1 -1
  194. package/coverage/map/api/index.html +1 -1
  195. package/coverage/map/api/index.js.html +1 -1
  196. package/coverage/map/api/marshall.js.html +1 -1
  197. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  198. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  199. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  200. package/coverage/map/api/models/index.html +1 -1
  201. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  202. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  203. package/coverage/map/api/services/alerts/index.html +1 -1
  204. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  205. package/coverage/map/api/services/catalog/index.html +1 -1
  206. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  207. package/coverage/map/api/services/daptiles/index.html +1 -1
  208. package/coverage/map/api/services/features/features.hooks.js.html +1 -1
  209. package/coverage/map/api/services/features/index.html +1 -1
  210. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  211. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  212. package/coverage/map/api/services/geocoder/index.html +1 -1
  213. package/coverage/map/api/services/index.html +1 -1
  214. package/coverage/map/api/services/index.js.html +1 -1
  215. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  216. package/coverage/map/common/errors.js.html +1 -1
  217. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  218. package/coverage/map/common/grid.js.html +1 -1
  219. package/coverage/map/common/index.html +1 -1
  220. package/coverage/map/common/index.js.html +1 -1
  221. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  222. package/coverage/map/common/moment-utils.js.html +1 -1
  223. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  224. package/coverage/map/common/opendap-utils.js.html +1 -1
  225. package/coverage/map/common/permissions.js.html +1 -1
  226. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  227. package/coverage/map/common/tms-utils.js.html +1 -1
  228. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  229. package/coverage/map/common/wcs-utils.js.html +1 -1
  230. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  231. package/coverage/map/common/wfs-utils.js.html +1 -1
  232. package/coverage/map/common/wms-utils.js.html +1 -1
  233. package/coverage/map/common/wmts-utils.js.html +1 -1
  234. package/lib/core/client/components/collection/KBoard.vue +6 -0
  235. package/lib/core/client/components/collection/KColumn.vue +2 -2
  236. package/lib/core/client/components/collection/KHistory.vue +14 -6
  237. package/lib/core/client/components/collection/KHistoryEntry.vue +7 -3
  238. package/lib/core/client/components/form/KFileField.vue +11 -40
  239. package/lib/core/client/components/frame/KChipsPane.vue +2 -2
  240. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  241. package/lib/core/client/i18n/core_en.json +7 -1
  242. package/lib/core/client/i18n/core_fr.json +7 -1
  243. package/lib/core/client/index.js +18 -0
  244. package/lib/core/client/index.js.map +1 -1
  245. package/lib/core/client/layout.js +8 -1
  246. package/lib/core/client/layout.js.map +1 -1
  247. package/lib/core/client/mixins/mixin.base-collection.js +8 -2
  248. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  249. package/lib/core/client/reader.js +54 -0
  250. package/lib/core/client/reader.js.map +1 -0
  251. package/lib/core/client/readers/index.js +30 -0
  252. package/lib/core/client/readers/index.js.map +1 -0
  253. package/lib/core/client/readers/reader.csv.js +43 -0
  254. package/lib/core/client/readers/reader.csv.js.map +1 -0
  255. package/lib/core/client/readers/reader.json.js +38 -0
  256. package/lib/core/client/readers/reader.json.js.map +1 -0
  257. package/lib/core/client/services/index.js +1 -3
  258. package/lib/core/client/services/index.js.map +1 -1
  259. package/lib/core/client/time.js +4 -1
  260. package/lib/core/client/time.js.map +1 -1
  261. package/lib/map/api/hooks/hooks.query.js +30 -13
  262. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  263. package/lib/map/client/components/KCaptureToolbar.vue +156 -0
  264. package/lib/map/client/components/KFeaturesFilter.vue +3 -1
  265. package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
  266. package/lib/map/client/components/KLayerStyleEditor.vue +2 -1
  267. package/lib/map/client/components/KLayerStyleForm.vue +34 -23
  268. package/lib/map/client/components/KLocationMap.vue +3 -1
  269. package/lib/map/client/components/KMeasureTool.vue +340 -0
  270. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  271. package/lib/map/client/components/KTimeline.vue +7 -8
  272. package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
  273. package/lib/map/client/components/catalog/KLayersSelector.vue +13 -11
  274. package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
  275. package/lib/map/client/components/widget/KMapillaryViewer.vue +1 -1
  276. package/lib/map/client/components/widget/KTimeSeries.vue +81 -3
  277. package/lib/map/client/i18n/map_en.json +43 -5
  278. package/lib/map/client/i18n/map_fr.json +43 -5
  279. package/lib/map/client/init.js +6 -1
  280. package/lib/map/client/init.js.map +1 -1
  281. package/lib/map/client/leaflet/MaskLayer.js +12 -3
  282. package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
  283. package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
  284. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  285. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +0 -4
  286. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  287. package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
  288. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  289. package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
  290. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  291. package/lib/map/client/mixins/map/mixin.base-map.js +46 -7
  292. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  293. package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
  294. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  295. package/lib/map/client/mixins/map/mixin.file-layers.js +47 -101
  296. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  297. package/lib/map/client/mixins/map/mixin.geojson-layers.js +9 -5
  298. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  299. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +0 -4
  300. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  301. package/lib/map/client/mixins/map/mixin.popup.js +4 -0
  302. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  303. package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
  304. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  305. package/lib/map/client/mixins/mixin.activity.js +2 -0
  306. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  307. package/lib/map/client/mixins/mixin.context.js +26 -3
  308. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  309. package/lib/map/client/mixins/mixin.feature-service.js +4 -4
  310. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  311. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  312. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  313. package/lib/map/client/readers/index.js +42 -0
  314. package/lib/map/client/readers/index.js.map +1 -0
  315. package/lib/map/client/readers/reader.geojson.js +59 -0
  316. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  317. package/lib/map/client/readers/reader.gpx.js +41 -0
  318. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  319. package/lib/map/client/readers/reader.kml.js +41 -0
  320. package/lib/map/client/readers/reader.kml.js.map +1 -0
  321. package/lib/map/client/utils.js +2 -1
  322. package/lib/map/client/utils.js.map +1 -1
  323. package/lib/test/client/core/runner.js +1 -2
  324. package/lib/test/client/core/runner.js.map +1 -1
  325. package/lib/test/client/core/utils.js +58 -38
  326. package/lib/test/client/core/utils.js.map +1 -1
  327. package/lib/test/client/map/catalog.js +50 -49
  328. package/lib/test/client/map/catalog.js.map +1 -1
  329. package/package.json +3 -3
  330. package/.nyc_output/27204015-ebfd-456f-a3bb-6a94f71946b8.json +0 -1
  331. package/.nyc_output/d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json +0 -1
  332. package/.nyc_output/e921974a-3076-4e89-8dbf-6f37bef10583.json +0 -1
  333. package/.nyc_output/fb790367-ba9f-474f-84c1-f836caf9f50a.json +0 -1
  334. package/.nyc_output/processinfo/0f1a87aa-d3bb-4c61-8c1e-12294055358d.json +0 -1
  335. package/.nyc_output/processinfo/8be4cd9f-124a-41f9-80f4-f267ced63c86.json +0 -1
  336. package/.nyc_output/processinfo/a63b0924-fd09-4e30-974f-cb4be2243b66.json +0 -1
  337. package/.nyc_output/processinfo/d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json +0 -1
  338. package/.nyc_output/processinfo/e921974a-3076-4e89-8dbf-6f37bef10583.json +0 -1
  339. package/.nyc_output/processinfo/fb790367-ba9f-474f-84c1-f836caf9f50a.json +0 -1
  340. package/extras/testcafe/Dockerfile +0 -48
  341. package/extras/testcafe/docker-entrypoint.sh +0 -27
  342. package/extras/testcafe/page-models/core/account.js +0 -75
  343. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  344. package/extras/testcafe/page-models/core/base-page.js +0 -25
  345. package/extras/testcafe/page-models/core/groups.js +0 -36
  346. package/extras/testcafe/page-models/core/index.js +0 -140
  347. package/extras/testcafe/page-models/core/layout.js +0 -145
  348. package/extras/testcafe/page-models/core/members.js +0 -98
  349. package/extras/testcafe/page-models/core/organisations.js +0 -76
  350. package/extras/testcafe/page-models/core/screens.js +0 -99
  351. package/extras/testcafe/page-models/core/tags.js +0 -21
  352. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  353. package/extras/testcafe/page-models/map/catalog.js +0 -132
  354. package/extras/testcafe/page-models/map/index.js +0 -36
  355. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  356. package/extras/testcafe/page-models/map/timeline.js +0 -67
@@ -1 +0,0 @@
1
- {"parent":null,"pid":32208,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js","run","mocha"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472418005,"ppid":22080,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\0f1a87aa-d3bb-4c61-8c1e-12294055358d.json","externalId":"","uuid":"0f1a87aa-d3bb-4c61-8c1e-12294055358d","files":[]}
@@ -1 +0,0 @@
1
- {"parent":"d3d1fa81-57ca-4287-8fbe-96466b0e5aa1","pid":32328,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\nvm\\v12.16.1\\node_modules\\npm\\bin\\npm-cli.js","run","mocha:core"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472419168,"ppid":3956,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\8be4cd9f-124a-41f9-80f4-f267ced63c86.json","externalId":"","uuid":"8be4cd9f-124a-41f9-80f4-f267ced63c86","files":[]}
@@ -1 +0,0 @@
1
- {"parent":"8be4cd9f-124a-41f9-80f4-f267ced63c86","pid":23772,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\cross-env\\dist\\bin\\cross-env.js","NODE_CONFIG_DIR=./test/api/core/config/","mocha","test/api/core/**/*.test.js","--exit","--require","babel-core/register"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472419845,"ppid":21896,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\a63b0924-fd09-4e30-974f-cb4be2243b66.json","externalId":"","uuid":"a63b0924-fd09-4e30-974f-cb4be2243b66","files":[]}
@@ -1 +0,0 @@
1
- {"parent":"0f1a87aa-d3bb-4c61-8c1e-12294055358d","pid":3956,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\npm-run-all\\bin\\npm-run-all\\index.js","--serial","mocha:**"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472418701,"ppid":12720,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json","externalId":"","uuid":"d3d1fa81-57ca-4287-8fbe-96466b0e5aa1","files":[]}
@@ -1 +0,0 @@
1
- {"parent":null,"pid":23540,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\nyc\\bin\\nyc.js","npm","run","mocha"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472392691,"ppid":4620,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\e921974a-3076-4e89-8dbf-6f37bef10583.json","externalId":"","uuid":"e921974a-3076-4e89-8dbf-6f37bef10583","files":["D:\\Development\\kalisio\\kdk\\core\\api\\application.js","D:\\Development\\kalisio\\kdk\\core\\api\\authentication.js","D:\\Development\\kalisio\\kdk\\core\\api\\db.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.account.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.authentication.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.authorisations.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.devices.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.groups.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.logger.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.model.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.organisations.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.pusher.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.query.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.storage.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.tags.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.users.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\marshall.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\groups.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\organisations.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\tags.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\users.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\oauth2-handler.js","D:\\Development\\kalisio\\kdk\\core\\api\\oauth2-verifier.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\account\\account.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\account\\account.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\authorisations\\authorisations.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\authorisations\\authorisations.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\databases\\databases.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\databases\\databases.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\devices\\devices.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\devices\\devices.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\groups\\groups.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\mailer\\mailer.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\mailer\\mailer.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\organisations\\organisations.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\organisations\\organisations.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.channels.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\storage\\storage.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\tags\\tags.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\users\\users.hooks.js","D:\\Development\\kalisio\\kdk\\core\\common\\errors.js","D:\\Development\\kalisio\\kdk\\core\\common\\index.js","D:\\Development\\kalisio\\kdk\\core\\common\\permissions.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\hooks.catalog.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\hooks.query.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\index.js","D:\\Development\\kalisio\\kdk\\map\\api\\index.js","D:\\Development\\kalisio\\kdk\\map\\api\\marshall.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\alerts.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\catalog.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\features.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\alerts\\alerts.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\alerts\\alerts.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\catalog\\catalog.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\daptiles\\daptiles.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\features\\features.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\geocoder\\geocoder.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\geocoder\\geocoder.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\index.js","D:\\Development\\kalisio\\kdk\\map\\common\\dynamic-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\errors.js","D:\\Development\\kalisio\\kdk\\map\\common\\geotiff-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\grid.js","D:\\Development\\kalisio\\kdk\\map\\common\\index.js","D:\\Development\\kalisio\\kdk\\map\\common\\meteo-model-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\moment-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\opendap-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\opendap-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\permissions.js","D:\\Development\\kalisio\\kdk\\map\\common\\time-based-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\tms-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wcs-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\wcs-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\weacast-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\wfs-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wms-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wmts-utils.js"]}
@@ -1 +0,0 @@
1
- {"parent":null,"pid":17376,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js","prefix","-g"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472417378,"ppid":10324,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\fb790367-ba9f-474f-84c1-f836caf9f50a.json","externalId":"","uuid":"fb790367-ba9f-474f-84c1-f836caf9f50a","files":[]}
@@ -1,48 +0,0 @@
1
- FROM alpine:edge
2
-
3
- ARG TESTCAFE_VERSION=1.8.6
4
- ARG TESTCAFE_VUE_SELECTORS_VERSION=3.1.0
5
- ARG MONGODB_DRIVER_VERSION=3.1.4
6
- ARG PIXELMATCH_VERSION=5.2.0
7
- ARG PNGJS_VERSION=5.0.0
8
- ARG TESTCAFE_BROWSERS="firefox:headless"
9
- ARG TESTCAFE_SPEED=0.75
10
- ARG TESTCAFE_SCREEN_WIDTH=1024
11
- ARG TESTCAFE_SCREEN_HEIGHT=720
12
-
13
- RUN \
14
- apk --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ upgrade && \
15
- apk --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ add \
16
- libevent nodejs npm chromium firefox-esr xwininfo xvfb dbus eudev ttf-freefont fluxbox procps curl unzip bash vim && \
17
- cd /tmp && curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip && unzip rclone-current-linux-amd64.zip && \
18
- cp /tmp/rclone-*-linux-amd64/rclone /usr/bin && rm -r /tmp/rclone*
19
-
20
- WORKDIR /opt/testcafe
21
- RUN adduser -D -h /opt/testcafe user
22
- USER user
23
-
24
- RUN npm install \
25
- testcafe@${TESTCAFE_VERSION} \
26
- testcafe-vue-selectors@${TESTCAFE_VUE_SELECTORS_VERSION} \
27
- testcafe-reporter-slack \
28
- mongodb@${MONGODB_DRIVER_VERSION} \
29
- pixelmatch@${PIXELMATCH_VERSION} \
30
- pngjs@${PNGJS_VERSION} \
31
- && npm cache clean --force \
32
- && rm -rf /tmp/*
33
-
34
- ENV NODE_PATH=/opt/testcafe/node_modules
35
- ENV PATH=${PATH}:/opt/testcafe/node_modules/.bin
36
-
37
- USER root
38
- COPY docker-entrypoint.sh /
39
- RUN chmod +x /docker-entrypoint.sh
40
-
41
- ENV SCREEN_WIDTH=${TESTCAFE_SCREEN_WIDTH}
42
- ENV SCREEN_HEIGHT=${TESTCAFE_SCREEN_HEIGHT}
43
- ENV BROWSERS=${TESTCAFE_BROWSERS}
44
- ENV SPEED=${TESTCAFE_SPEED}
45
-
46
- EXPOSE 1337 1338
47
- USER user
48
- ENTRYPOINT [ "/docker-entrypoint.sh" ]
@@ -1,27 +0,0 @@
1
- #!/bin/sh
2
-
3
- dbus-daemon --session --fork
4
- Xvfb :1 -screen 0 "${SCREEN_WIDTH}x${SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
5
- export DISPLAY=:1.0
6
- fluxbox >/dev/null 2>&1 &
7
-
8
- testcafe ${BROWSERS} --ports 1337,1338 --skip-js-errors --speed ${SPEED} -s path=screenshots,takeOnFails=true -r spec,slack "/tests/*.test.js" "$@" 2>&1 > /tmp/testcafe.log
9
- RESULT=$?
10
-
11
- # Upload artefacts somewhere ?
12
- if [ -n "$BUILD_BUCKET" ]; then
13
- # testcafe test log
14
- rclone copy /tmp/testcafe.log $BUILD_BUCKET
15
-
16
- # screenshots
17
- tar cf /tmp/screenshots.tar screenshots
18
- rclone copy /tmp/screenshots.tar $BUILD_BUCKET
19
-
20
- # notify on slack
21
- if [ -n "$TESTCAFE_SLACK_WEBHOOK" ]; then
22
- PAYLOAD=$(printf '{"text":"To fetch testcafe test artefacts, use:", "attachments":[{"color":"#7b36a6", "text":"*rclone copy %s .*"}]}' $BUILD_BUCKET)
23
- curl -X POST -H 'Content-type: application/json' --data "$PAYLOAD" $TESTCAFE_SLACK_WEBHOOK
24
- fi
25
- fi
26
-
27
- exit $RESULT
@@ -1,75 +0,0 @@
1
- import { Selector } from 'testcafe'
2
- import VueSelector from 'testcafe-vue-selectors'
3
- import BasePage from './base-page'
4
-
5
- export default class Account extends BasePage {
6
- constructor () {
7
- super()
8
- // Profile
9
- this.profileEditor = VueSelector('k-account-activity k-editor')
10
- this.fileInput = Selector('.dz-hidden-input')
11
- // Security
12
- this.passwordBlock = Selector('#password-block')
13
- this.changePasswordScreen = VueSelector('k-change-password')
14
- this.emailBlock = Selector('#email-block')
15
- this.changeEmailScreen = VueSelector('k-send-change-identity')
16
- // Danger zone
17
- this.deleteBlock = Selector('#delete-block')
18
- }
19
-
20
- static get MANAGE_ACCOUNT () {
21
- return 'manage-account'
22
- }
23
-
24
- static get PROFILE () {
25
- return 'profile'
26
- }
27
-
28
- static get SECURITY () {
29
- return 'security'
30
- }
31
-
32
- static get DANGER_ZONE () {
33
- return 'danger-zone'
34
- }
35
-
36
- async updateProfile (test, avatar, name) {
37
- await test
38
- .click(VueSelector('k-editor k-attachment-field'))
39
- .setFilesToUpload(Selector('.dz-hidden-input'), avatar)
40
- .wait(Account.LONG_WAIT)
41
- .typeText(VueSelector('k-text-field'), name, { replace: true })
42
- .click(VueSelector('k-editor').find('#apply-button'))
43
- .wait(Account.EXTRA_LONG_WAIT)
44
- }
45
-
46
- async updatePassword (test, oldPassword, newPassword) {
47
- await test
48
- .click(this.passwordBlock.find('button'))
49
- .wait(Account.SHORT_WAIT)
50
- .typeText(VueSelector('k-password-field').nth(0), oldPassword, { replace: true })
51
- .typeText(VueSelector('k-password-field').nth(1), newPassword, { replace: true })
52
- .typeText(VueSelector('k-password-field').nth(2), newPassword, { replace: true })
53
- .click(this.changePasswordScreen.find('#change-password'))
54
- .wait(Account.EXTRA_LONG_WAIT)
55
- }
56
-
57
- async updateEmail (test, email, password) {
58
- await test
59
- .click(this.emailBlock.find('button'))
60
- .wait(Account.SHORT_WAIT)
61
- .typeText(VueSelector('k-password-field'), password, { replace: true })
62
- .typeText(VueSelector('k-email-field'), email, { replace: true })
63
- .click(this.changeEmailScreen.find('#change-identity'))
64
- .wait(Account.EXTRA_LONG_WAIT)
65
- }
66
-
67
- async delete (test, name) {
68
- await test
69
- .click(this.deleteBlock.find('button'))
70
- .wait(Account.SHORT_WAIT)
71
- .typeText(Selector('.q-dialog-plugin input[type=text]'), name)
72
- .click(Selector('.q-dialog-plugin button').nth(1))
73
- .wait(Account.EXTRA_LONG_WAIT)
74
- }
75
- }
@@ -1,41 +0,0 @@
1
- import { Selector } from 'testcafe'
2
- import VueSelector from 'testcafe-vue-selectors'
3
- import BasePage from './base-page'
4
-
5
- export default class BaseCollection extends BasePage {
6
- constructor (grid, type) {
7
- super()
8
- this.collection = VueSelector(`ref:${grid} ${type}`)
9
- }
10
-
11
- async checkExists (test, name) {
12
- await test.expect(this.collection.withText(name).exists).ok()
13
- }
14
-
15
- async checkNotExists (test, name) {
16
- await test.expect(this.collection.withText(name).exists).notOk()
17
- }
18
-
19
- async clickAction (test, name, action, wait = BaseCollection.SHORT_WAIT) {
20
- await test
21
- .click(this.collection.withText(name).find(`#${action}`))
22
- .wait(wait)
23
- }
24
-
25
- async clickMenuEntry (test, name, menu, entry, wait = BaseCollection.SHORT_WAIT) {
26
- await test
27
- .click(this.collection.withText(name).find(`#${menu}`))
28
- .click(Selector('.q-menu').find(`#${entry}`))
29
- .wait(wait)
30
- }
31
-
32
- async count () {
33
- const itemsCount = await this.collection.count
34
- return itemsCount
35
- }
36
-
37
- async checkCount (test, count) {
38
- const itemsCount = await this.collection.count
39
- await test.expect(itemsCount).eql(count, 'Invalid items count')
40
- }
41
- }
@@ -1,25 +0,0 @@
1
- import { Selector } from 'testcafe'
2
-
3
- export default class BasePage {
4
- constructor () {
5
- this.error = Selector('.q-notification')
6
- }
7
-
8
- static get SHORT_WAIT () {
9
- return 500
10
- }
11
-
12
- static get LONG_WAIT () {
13
- return 1000
14
- }
15
-
16
- static get EXTRA_LONG_WAIT () {
17
- return 5000
18
- }
19
-
20
- // Error helper
21
- async isErrorVisible () {
22
- const isVisible = await this.error.visible
23
- return isVisible
24
- }
25
- }
@@ -1,36 +0,0 @@
1
- import { Selector } from 'testcafe'
2
- import VueSelector from 'testcafe-vue-selectors'
3
- import BaseCollection from './base-collection'
4
- import Layout from './layout'
5
-
6
- export default class Groups extends BaseCollection {
7
- constructor () {
8
- super('groupsGrid', 'QCard')
9
- this.layout = new Layout()
10
- }
11
-
12
- async create (test, data) {
13
- await this.layout.clickFab(test, 'create-group')
14
- await test
15
- .typeText(VueSelector('k-text-field').nth(0), data.name, { replace: true })
16
- .typeText(VueSelector('k-text-field').nth(1), data.description, { replace: true })
17
- .click(Selector('.q-dialog .q-card button[type=button]').nth(1))
18
- .wait(2000)
19
- }
20
-
21
- async edit (test, name, data) {
22
- await this.clickAction(test, name, 'edit-group')
23
- await test
24
- .typeText(VueSelector('k-text-field').nth(0), data.name, { replace: true })
25
- .typeText(VueSelector('k-text-field').nth(1), data.description, { replace: true })
26
- .click(Selector('.q-dialog #apply-button'))
27
- .wait(Groups.LONG_WAIT)
28
- }
29
-
30
- async delete (test, name) {
31
- await this.clickAction(test, name, 'remove-group')
32
- await test
33
- .click(Selector('.q-dialog .q-btn').nth(1))
34
- .wait(Groups.EXTRA_LONG_WAIT)
35
- }
36
- }
@@ -1,140 +0,0 @@
1
- import * as fs from 'fs'
2
- import png from 'pngjs'
3
- import pixelmatch from 'pixelmatch'
4
- import { ClientFunction } from 'testcafe'
5
- import BasePage from './base-page'
6
- import BaseCollection from './base-collection'
7
- import Screens from './screens'
8
- import Layout from './layout'
9
- import Account from './account'
10
- import Organisations from './organisations'
11
- import OrganisationSettings from './organisation-settings'
12
- import Members from './members'
13
- import Tags from './tags'
14
- import Groups from './groups'
15
-
16
- export { Screens }
17
- export { BasePage }
18
- export { BaseCollection }
19
- export { Layout }
20
- export { Account }
21
- export { Organisations }
22
- export { OrganisationSettings }
23
- export { Members }
24
- export { Tags }
25
- export { Groups }
26
-
27
- // Access store
28
- export const getFromStore = ClientFunction((path) => window.$store.get(path))
29
-
30
- // Access Feathers services
31
- export const api = {
32
- logout: ClientFunction(() => window.$api.logout()),
33
- get: ClientFunction((service, id) => window.$api.getService(service).get(id)),
34
- find: ClientFunction((service, params) => window.$api.getService(service).find(params)),
35
- remove: ClientFunction((service, id) => window.$api.getService(service).remove(id))
36
- }
37
-
38
- // Acces window size
39
- export const getWindowInnerWidth = ClientFunction(() => window.innerWidth)
40
- export const getWindowInnerHeight = ClientFunction(() => window.innerHeight)
41
-
42
- // Access routes
43
- const baseUrl = process.env.APP_URL || (process.env.CLIENT_PORT ? 'http://localhost:' + process.env.CLIENT_PORT : (process.env.NODE_ENV === 'production' ? 'http://localhost:8081' : 'http://localhost:8082'))
44
- export const getUrl = (path) => path ? baseUrl + '/#/' + path : baseUrl
45
- export const getCurrentUrl = ClientFunction(() => window.location.href)
46
- export const goBack = ClientFunction(() => window.history.back())
47
- export const refresh = ClientFunction(() => document.location.reload())
48
-
49
- // Access console errors
50
- export const checkNoClientError = async (test) => {
51
- const { error } = await test.getBrowserConsoleMessages()
52
- await test.expect(error[0]).notOk()
53
- }
54
- export const checkClientError = async (test) => {
55
- const { error } = await test.getBrowserConsoleMessages()
56
- await test.expect(error[0]).ok()
57
- }
58
-
59
- // Screenshot helpers
60
-
61
- /* Given a screenshot key (a string) this will provide the full path
62
- * of the associated reference screenshot file.
63
- */
64
- function refScreenshot (key) {
65
- const projectPath = process.cwd()
66
- return `${projectPath}/test/data/screenrefs/${key}.png`
67
- }
68
-
69
- /* Given a screenshot key (a string) this will provide the path
70
- * of the test run screenshot file. If 'absolute' is false this
71
- * will return the relative path from the screenshot run folder.
72
- */
73
- function runScreenshot (test, key, absolute = false) {
74
- const screenshotBase = test.testRun.opts.screenshots.path
75
- return absolute ? `${screenshotBase}/run/${key}.png` : `run/${key}.png`
76
- }
77
-
78
- /* Given a reference screenshot key and a run screenshot key, this
79
- * will perform screenshot comparison and return the diffRatio as
80
- * a percentage of the number of mismatched pixels.
81
- */
82
- function diffScreenshots (test, refKey, runKey, diffOpts = {}) {
83
- const refPath = refScreenshot(refKey)
84
- const runPath = runScreenshot(test, runKey, true)
85
- const ref = png.PNG.sync.read(fs.readFileSync(refPath))
86
- const run = png.PNG.sync.read(fs.readFileSync(runPath))
87
- const { width, height } = ref
88
- const diff = new png.PNG({ width, height })
89
-
90
- const defOpts = {
91
- alpha: 0.3,
92
- diffColor: [255, 0, 0],
93
- diffColorAlt: [0, 255, 0]
94
- }
95
- const opts = Object.assign(defOpts, diffOpts)
96
-
97
- const numDiffs = pixelmatch(ref.data, run.data, diff.data, width, height, opts)
98
- const diffRatio = 100.0 * (numDiffs / (width * height))
99
- return { diffRatio, diff }
100
- }
101
-
102
- /* Just takes a screenshot and write it on disk as PNG
103
- * in a standard location
104
- */
105
- export async function takeScreenshot (test, runKey) {
106
- await test.takeScreenshot({ path: runScreenshot(test, runKey) })
107
- }
108
-
109
- /* Makes sure screenshot matches between run and ref screenshot keys.
110
- * If refKey is not provided, it will use runKey as refKey.
111
- * maxDiffRatio is the allowed maximum percentage of mismatched pixels, if computed
112
- * diff ratio is higher, test will fail.
113
- * Pixel comparison uses threshold value [0,1] to flag pixels as mismatching (see pixelmatch module)
114
- */
115
- export async function assertScreenshotMatches (test, runKey, { refKey = null, maxDiffRatio = 1.0, threshold = 0.1 } = {}) {
116
- const keyRef = refKey || runKey
117
- await test.takeScreenshot({ path: runScreenshot(test, runKey) })
118
- const diff = diffScreenshots(test, keyRef, runKey, { threshold })
119
- if (diff.diffRatio > maxDiffRatio) {
120
- const output = runScreenshot(test, `diff-${runKey}`, true)
121
- fs.writeFileSync(output, png.PNG.sync.write(diff.diff))
122
- throw new Error(`Diff ratio for '${runKey}' is too high: ${diff.diffRatio.toPrecision(2)}%`)
123
- }
124
- }
125
-
126
- /* Makes sure screenshot mismatches between run and ref screenshot keys.
127
- * If refKey is not provided, it will use runKey as refKey.
128
- * minDiffRatio is the allowed minimum percentage of mismatched pixels, if computed
129
- * diff ratio is lower, test will fail.
130
- * Pixel comparison uses threshold value [0,1] to flag pixels as mismatching (see pixelmatch module)
131
- */
132
- export async function assertScreenshotMismatches (test, runKey, { refKey = null, minDiffRatio = 50.0, threshold = 0.1 } = {}) {
133
- const keyRef = refKey || runKey
134
- const diff = diffScreenshots(test, keyRef, runKey, { threshold })
135
- if (diff.diffRatio < minDiffRatio) {
136
- const output = runScreenshot(test, `diff-${runKey}`, true)
137
- fs.writeFileSync(output, png.PNG.sync.write(diff.diff))
138
- throw new Error(`Diff ratio for '${runKey}' is too low: ${diff.diffRatio.toPrecision(2)}%`)
139
- }
140
- }
@@ -1,145 +0,0 @@
1
- import { Selector } from 'testcafe'
2
- import VueSelector from 'testcafe-vue-selectors'
3
- import BasePage from './base-page'
4
-
5
- export default class Layout extends BasePage {
6
- constructor () {
7
- super()
8
- // Openers
9
- this.leftOpener = Selector('#left-opener')
10
- this.rightOpener = Selector('#right-opener')
11
- this.topOpener = Selector('#top-opener')
12
- this.bottomOpener = Selector('#bottom-opener')
13
- // Panes
14
- this.leftPanel = Selector('#left-panel')
15
- this.topPanel = Selector('#top-panel')
16
- this.rightPanel = Selector('#right-panel')
17
- this.bottomPanel = Selector('#bottom-panel')
18
- // Fab
19
- this.fab = Selector('#fab')
20
- // SignupAlert
21
- this.signupAlert = VueSelector('k-signup-alert')
22
- }
23
-
24
- static get ABOUT () {
25
- return 'about'
26
- }
27
-
28
- static get LOGOUT () {
29
- return 'logout'
30
- }
31
-
32
- // Openers
33
- async clickLeftOpener (test) {
34
- await test
35
- .click(this.leftOpener)
36
- .wait(Layout.SHORT_WAIT)
37
- }
38
-
39
- async clickRightOpener (test) {
40
- await test
41
- .click(this.rightOpener)
42
- .wait(Layout.SHORT_WAIT)
43
- }
44
-
45
- async clickTopOpener (test) {
46
- await test
47
- .click(this.topOpener)
48
- .wait(Layout.SHORT_WAIT)
49
- }
50
-
51
- async clickBottomOpener (test) {
52
- await test
53
- .click(this.bottomOpener)
54
- .wait(Layout.SHORT_WAIT)
55
- }
56
-
57
- // Leftdrawer
58
- async isLeftPaneOpened () {
59
- const isVisible = await this.leftPanel.visible
60
- return isVisible
61
- }
62
-
63
- async clickLeftPaneAction (test, action, wait = Layout.SHORT_WAIT) {
64
- await test
65
- .click(this.leftPanel.find(`#${action}`))
66
- .wait(wait)
67
- }
68
-
69
- async clickLeftPaneMenuEntry (test, menu, entry) {
70
- await this.clickLeftPaneAction(test, menu)
71
- await test
72
- .click(Selector(`#${entry}`))
73
- .wait(wait)
74
- }
75
-
76
- // TopPane
77
- async isTopPaneOpened () {
78
- const isVisible = await this.topPanel.visible
79
- return isVisible
80
- }
81
-
82
- async clickTopPaneAction (test, action, wait = Layout.SHORT_WAIT) {
83
- await test
84
- .click(this.topPanel.find(`#${action}`))
85
- .wait(wait)
86
- }
87
-
88
- async clickTopPaneMenuEntry (test, menu, entry, wait = Layout.SHORT_WAIT) {
89
- await this.clickTopPaneAction(test, menu)
90
- await test
91
- .click(Selector(`#${entry}`))
92
- .wait(wait)
93
- }
94
-
95
- // RightPane
96
- async isRightPaneOpened () {
97
- const isVisible = await this.rightPanel.visible
98
- return isVisible
99
- }
100
-
101
- async clickRightPaneAction (test, action, wait = Layout.SHORT_WAIT) {
102
- await test
103
- .click(this.rightPanel.find(`#${action}`))
104
- .wait(wait)
105
- }
106
-
107
- // BottomPane
108
- async isBottomPaneOpened () {
109
- const isVisible = await this.bottomPanel.visible
110
- return isVisible
111
- }
112
-
113
- async clickBottomPaneAction (test, action, wait = Layout.SHORT_WAIT) {
114
- await test
115
- .click(this.bottomPanel.find(`#${action}`))
116
- .wait(wait)
117
- }
118
-
119
- // Fab
120
- async clickFab (test, action, wait = Layout.SHORT_WAIT) {
121
- await test
122
- .click(Selector(`#${action}`))
123
- .wait(wait)
124
- }
125
-
126
- async openAndClickFab (test, action, wait = Layout.SHORT_WAIT) {
127
- await test
128
- .click(Selector(this.fab))
129
- .wait(Layout.SHORT_WAIT)
130
- .click(this.fab.find(`#${action}`))
131
- .wait(wait)
132
- }
133
-
134
- // Misc
135
- async closeSignupAlert (test) {
136
- await test
137
- .click(Selector('#close-signup-alert'))
138
- .wait(Layout.SHORT_WAIT)
139
- }
140
-
141
- async closeWelcomeDialog (test) {
142
- await test
143
- .click(Selector('.q-dialog .q-card button[type=button]').nth(0))
144
- }
145
- }
@@ -1,98 +0,0 @@
1
- import { Selector } from 'testcafe'
2
- import VueSelector from 'testcafe-vue-selectors'
3
- import BaseCollection from './base-collection'
4
- import Layout from './layout'
5
-
6
- export default class Members extends BaseCollection {
7
- constructor () {
8
- super('membersGrid', 'QCard')
9
- this.layout = new Layout()
10
- }
11
-
12
- static get ADD_MEMBER_ENTRY () {
13
- return 'add-member'
14
- }
15
-
16
- async add (test, email, role) {
17
- await this.layout.clickFab(test, 'add-member')
18
- await test
19
- .typeText(VueSelector('k-email-field'), email, { replace: true })
20
- .wait(Members.SHORT_WAIT)
21
- .click(Selector('.q-dialog').find('#continue-button'))
22
- .wait(Members.SHORT_WAIT)
23
- .click(VueSelector('k-select-field'))
24
- .wait(Members.SHORT_WAIT)
25
- .click(Selector('.q-menu .q-item').nth(role))
26
- .wait(Members.SHORT_WAIT)
27
- .click(Selector('.q-dialog').find('#add-button'))
28
- .wait(Members.LONG_WAIT)
29
- }
30
-
31
- async invite (test, email, name, role) {
32
- await this.layout.clickFab(test, 'add-member')
33
- await test
34
- .typeText(VueSelector('k-email-field'), email, { replace: true })
35
- .wait(Members.SHORT_WAIT)
36
- .click(Selector('.q-dialog').find('#continue-button'))
37
- .wait(Members.SHORT_WAIT)
38
- .typeText(VueSelector('k-text-field'), name, { replace: true })
39
- .click(VueSelector('k-select-field'))
40
- .wait(Members.SHORT_WAIT)
41
- .click(Selector('.q-menu .q-item').nth(role))
42
- .wait(Members.SHORT_WAIT)
43
- .click(Selector('.q-dialog').find('#add-button'))
44
- .wait(Members.EXTRA_LONG_WAIT)
45
- }
46
-
47
- async tag (test, name, tag) {
48
- await this.clickAction(test, name, 'tag-member')
49
- await test
50
- .wait(Members.LONG_WAIT)
51
- .typeText(VueSelector('k-tag-field'), tag, { replace: true })
52
- .pressKey("enter")
53
- .wait(Members.SHORT_WAIT)
54
- .click(Selector('.q-dialog .q-card button[type=button]').nth(1))
55
- .wait(Members.LONG_WAIT)
56
- }
57
-
58
- async changeRole (test, name, role) {
59
- await this.clickAction(test, name, 'change-role')
60
- await test
61
- .click(VueSelector('k-select-field'))
62
- .click(Selector('.q-menu .q-item').nth(role))
63
- .wait(500)
64
- .click(Selector('.q-dialog .q-card button[type=button]').nth(1))
65
- .wait(2000)
66
- }
67
-
68
- async delete (test, name) {
69
- await this.clickMenuEntry(test, name, 'card-overflow-menu', 'remove-member')
70
- await test
71
- .click(Selector('.q-dialog .q-btn').nth(1))
72
- .wait(5000)
73
- }
74
-
75
- async joinGroup (test, memberName, groupName, role) {
76
- await test
77
- .click(this.collection.withText(memberName).find('#join-group'))
78
- .typeText(VueSelector('k-item-field'), groupName, { replace: true })
79
- .wait(Members.LONG_WAIT)
80
- .click(Selector('.q-menu .q-item').nth(0))
81
- .click(VueSelector('k-select-field'))
82
- .wait(Members.SHORT_WAIT)
83
- .click(Selector('.q-menu .q-item').nth(role))
84
- .wait(Members.SHORT_WAIT)
85
- .click(Selector('.q-dialog #join-button'))
86
- .wait(2000)
87
- }
88
-
89
- async leaveGroup (test, memberName, groupName) {
90
- await test
91
- .click(this.collection.withText(memberName).find('#group-button'))
92
- .wait(Members.SHORT_WAIT)
93
- .click(Selector('.q-menu').find('#leave-group'))
94
- .wait(Members.SHORT_WAIT)
95
- .click(Selector('.q-dialog .q-card button[type=button]').nth(1))
96
- .wait(2000)
97
- }
98
- }