@budibase/server 2.3.2-alpha.3 → 2.3.3

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 (543) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.584d49b4.css → index.4488f38d.css} +1 -1
  3. package/builder/assets/{index.bef36368.js → index.ef71e5c7.js} +199 -199
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +6527 -11196
  6. package/coverage/coverage-final.json +269 -353
  7. package/coverage/lcov-report/index.html +180 -405
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +140 -140
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +47 -47
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +26 -26
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +37 -37
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +81 -81
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +26 -26
  21. package/coverage/lcov-report/src/api/controllers/index.html +37 -37
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +15 -15
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +34 -34
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +18 -18
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +33 -33
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +419 -431
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +175 -211
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +42 -42
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +78 -78
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +34 -34
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +31 -31
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +22 -22
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +51 -51
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +195 -198
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +47 -47
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +42 -42
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +61 -61
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +63 -63
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +28 -28
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -16
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +25 -25
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  102. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +35 -35
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +17 -14
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +12 -42
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +27 -78
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +41 -110
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +17 -23
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  140. package/coverage/lcov-report/src/app.ts.html +35 -38
  141. package/coverage/lcov-report/src/automations/actions.ts.html +24 -24
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +4 -4
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  144. package/coverage/lcov-report/src/automations/index.html +27 -27
  145. package/coverage/lcov-report/src/automations/index.ts.html +9 -9
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  156. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +13 -13
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +46 -46
  178. package/coverage/lcov-report/src/automations/utils.ts.html +63 -63
  179. package/coverage/lcov-report/src/constants/index.html +16 -16
  180. package/coverage/lcov-report/src/constants/index.ts.html +99 -33
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  182. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -33
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/index.html +11 -11
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  191. package/coverage/lcov-report/src/db/index.html +16 -16
  192. package/coverage/lcov-report/src/db/index.ts.html +19 -19
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +23 -26
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +10 -10
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +23 -23
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +10 -10
  198. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  199. package/coverage/lcov-report/src/db/utils.ts.html +52 -52
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +2 -2
  201. package/coverage/lcov-report/src/definitions/index.html +1 -1
  202. package/coverage/lcov-report/src/environment.ts.html +32 -32
  203. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  204. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +6 -6
  205. package/coverage/lcov-report/src/events/index.html +1 -1
  206. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  207. package/coverage/lcov-report/src/events/utils.ts.html +10 -10
  208. package/coverage/lcov-report/src/index.html +16 -16
  209. package/coverage/lcov-report/src/index.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/base/index.html +30 -30
  213. package/coverage/lcov-report/src/integrations/base/query.ts.html +9 -9
  214. package/coverage/lcov-report/src/integrations/base/sql.ts.html +187 -217
  215. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +107 -107
  216. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  219. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  222. package/coverage/lcov-report/src/integrations/index.html +27 -27
  223. package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
  224. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  225. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  226. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  227. package/coverage/lcov-report/src/integrations/oracle.ts.html +14 -14
  228. package/coverage/lcov-report/src/integrations/postgres.ts.html +65 -65
  229. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  230. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  232. package/coverage/lcov-report/src/integrations/rest.ts.html +15 -15
  233. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  234. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  235. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  236. package/coverage/lcov-report/src/integrations/tests/index.html +5 -230
  237. package/coverage/lcov-report/src/integrations/utils.ts.html +74 -74
  238. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  239. package/coverage/lcov-report/src/middleware/authorized.ts.html +29 -29
  240. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  241. package/coverage/lcov-report/src/middleware/currentapp.ts.html +53 -53
  242. package/coverage/lcov-report/src/middleware/index.html +15 -15
  243. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  245. package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
  246. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  248. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  263. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  265. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  266. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  275. package/coverage/lcov-report/src/migrations/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  277. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/index.html +8 -23
  279. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  282. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  283. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  284. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  286. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +10 -10
  287. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +23 -41
  289. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  290. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  291. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  292. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  293. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +39 -39
  294. package/coverage/lcov-report/src/sdk/app/datasources/index.html +1 -1
  295. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +3 -3
  296. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +3 -3
  298. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +4 -4
  299. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  300. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  302. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  303. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  304. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +10 -10
  305. package/coverage/lcov-report/src/sdk/index.html +1 -1
  306. package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
  307. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  308. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  309. package/coverage/lcov-report/src/sdk/users/utils.ts.html +31 -31
  310. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  311. package/coverage/lcov-report/src/sdk/utils/index.ts.html +11 -11
  312. package/coverage/lcov-report/src/startup.ts.html +42 -42
  313. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +189 -387
  314. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  315. package/coverage/lcov-report/src/tests/utilities/index.html +18 -18
  316. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  317. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +27 -33
  318. package/coverage/lcov-report/src/threads/automation.ts.html +22 -22
  319. package/coverage/lcov-report/src/threads/index.html +1 -1
  320. package/coverage/lcov-report/src/threads/index.ts.html +10 -10
  321. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  322. package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
  323. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  324. package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
  325. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +17 -17
  326. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
  327. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +25 -25
  328. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  329. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
  330. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
  331. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  332. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  333. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  334. package/coverage/lcov-report/src/utilities/index.html +19 -34
  335. package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
  336. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  337. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  338. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  339. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +19 -19
  340. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +49 -49
  341. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  342. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  343. package/coverage/lcov-report/src/utilities/schema.ts.html +3 -3
  344. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  345. package/coverage/lcov-report/src/utilities/security.ts.html +22 -22
  346. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  348. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  350. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  351. package/coverage/lcov-report/src/watch.ts.html +7 -7
  352. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  353. package/coverage/lcov.info +11292 -18907
  354. package/dist/api/controllers/row/ExternalRequest.js +2 -4
  355. package/dist/api/controllers/row/external.js +1 -12
  356. package/dist/api/controllers/table/external.js +8 -8
  357. package/dist/api/routes/public/tests/utils.js +2 -29
  358. package/dist/app.js +1 -1
  359. package/dist/constants/index.js +24 -4
  360. package/dist/db/defaultData/datasource_bb_default.js +5 -6
  361. package/dist/db/linkedRows/LinkController.js +8 -9
  362. package/dist/integrations/base/sql.js +3 -10
  363. package/dist/package.json +6 -8
  364. package/dist/sdk/app/backups/exports.js +2 -8
  365. package/dist/tsconfig.build.tsbuildinfo +1 -1
  366. package/jest.config.ts +11 -28
  367. package/package.json +7 -9
  368. package/specs/openapi.json +6 -6
  369. package/specs/openapi.yaml +3 -3
  370. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  371. package/src/api/controllers/row/ExternalRequest.ts +2 -6
  372. package/src/api/controllers/row/external.ts +1 -13
  373. package/src/api/controllers/table/external.ts +2 -3
  374. package/src/api/routes/public/applications.ts +1 -0
  375. package/src/api/routes/public/tests/compare.spec.js +1 -1
  376. package/src/api/routes/public/tests/users.spec.js +1 -1
  377. package/src/api/routes/public/tests/utils.ts +8 -25
  378. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  379. package/src/api/routes/tests/analytics.spec.js +1 -4
  380. package/src/api/routes/tests/apikeys.spec.js +1 -1
  381. package/src/api/routes/tests/application.spec.ts +6 -20
  382. package/src/api/routes/tests/auth.spec.js +2 -2
  383. package/src/api/routes/tests/automation.spec.js +2 -6
  384. package/src/api/routes/tests/backup.spec.ts +13 -4
  385. package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
  386. package/src/api/routes/tests/component.spec.js +1 -1
  387. package/src/api/routes/tests/datasource.spec.ts +3 -20
  388. package/src/api/routes/tests/dev.spec.js +1 -1
  389. package/src/api/routes/tests/integration.spec.js +1 -1
  390. package/src/api/routes/tests/layout.spec.js +1 -1
  391. package/src/api/routes/tests/metadata.spec.js +1 -1
  392. package/src/api/routes/tests/misc.spec.js +1 -1
  393. package/src/api/routes/tests/permissions.spec.js +1 -4
  394. package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -21
  395. package/src/api/routes/tests/role.spec.js +1 -6
  396. package/src/api/routes/tests/routing.spec.js +1 -1
  397. package/src/api/routes/tests/row.spec.js +3 -11
  398. package/src/api/routes/tests/screen.spec.js +1 -1
  399. package/src/api/routes/tests/static.spec.js +1 -2
  400. package/src/api/routes/tests/table.spec.js +1 -1
  401. package/src/api/routes/tests/templates.spec.js +1 -1
  402. package/src/api/routes/tests/user.spec.js +0 -3
  403. package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
  404. package/src/api/routes/tests/utilities/index.ts +3 -5
  405. package/src/api/routes/tests/view.spec.js +1 -4
  406. package/src/api/routes/tests/webhook.spec.js +2 -11
  407. package/src/app.ts +1 -2
  408. package/src/automations/tests/automation.spec.js +4 -4
  409. package/src/automations/tests/bash.spec.js +1 -1
  410. package/src/automations/tests/discord.spec.js +1 -1
  411. package/src/automations/tests/executeQuery.spec.js +3 -2
  412. package/src/automations/tests/executeScript.spec.js +1 -1
  413. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  414. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  415. package/src/automations/tests/serverLog.spec.js +1 -1
  416. package/src/automations/tests/updateRow.spec.js +1 -1
  417. package/src/automations/tests/zapier.spec.js +1 -1
  418. package/src/constants/index.ts +23 -1
  419. package/src/db/defaultData/datasource_bb_default.ts +10 -6
  420. package/src/db/linkedRows/LinkController.ts +1 -2
  421. package/src/db/tests/linkController.spec.js +1 -4
  422. package/src/db/tests/linkTests.spec.js +1 -1
  423. package/src/integrations/base/sql.ts +5 -15
  424. package/src/integrations/oracle.ts +1 -1
  425. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  426. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  427. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  428. package/src/migrations/tests/index.spec.ts +2 -3
  429. package/src/sdk/app/backups/exports.ts +2 -8
  430. package/src/tests/jestEnv.ts +6 -2
  431. package/src/tests/jestSetup.ts +6 -5
  432. package/src/tests/utilities/TestConfiguration.ts +46 -112
  433. package/src/tests/utilities/structures.ts +2 -4
  434. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +0 -391
  435. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +0 -116
  436. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +0 -116
  437. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +0 -796
  438. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +0 -116
  439. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +0 -805
  440. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +0 -116
  441. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +0 -568
  442. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +0 -116
  443. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +0 -277
  444. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +0 -583
  445. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +0 -199
  446. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +0 -271
  447. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +0 -259
  448. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +0 -1066
  449. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +0 -154
  450. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +0 -1123
  451. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +0 -223
  452. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +0 -268
  453. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +0 -178
  454. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +0 -799
  455. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +0 -202
  456. package/coverage/lcov-report/src/api/routes/tests/index.html +0 -521
  457. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +0 -238
  458. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +0 -670
  459. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +0 -259
  460. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +0 -280
  461. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +0 -358
  462. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +0 -484
  463. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +0 -622
  464. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +0 -1696
  465. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +0 -478
  466. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +0 -430
  467. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +0 -1804
  468. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +0 -391
  469. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +0 -541
  470. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +0 -991
  471. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +0 -154
  472. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +0 -688
  473. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +0 -1342
  474. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +0 -484
  475. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +0 -337
  476. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +0 -187
  477. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +0 -223
  478. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +0 -133
  479. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +0 -250
  480. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +0 -166
  481. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +0 -229
  482. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +0 -229
  483. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +0 -232
  484. package/coverage/lcov-report/src/automations/tests/index.html +0 -341
  485. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +0 -220
  486. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +0 -202
  487. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +0 -436
  488. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +0 -298
  489. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +0 -151
  490. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +0 -217
  491. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +0 -166
  492. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +0 -280
  493. package/coverage/lcov-report/src/automations/unitTests/index.html +0 -116
  494. package/coverage/lcov-report/src/db/tests/index.html +0 -131
  495. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +0 -793
  496. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +0 -277
  497. package/coverage/lcov-report/src/integration-test/index.html +0 -116
  498. package/coverage/lcov-report/src/integration-test/postgres.spec.ts.html +0 -2341
  499. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +0 -310
  500. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +0 -199
  501. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +0 -349
  502. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +0 -550
  503. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +0 -331
  504. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +0 -376
  505. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +0 -253
  506. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +0 -1087
  507. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +0 -484
  508. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +0 -373
  509. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +0 -328
  510. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +0 -337
  511. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +0 -1870
  512. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +0 -421
  513. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +0 -1753
  514. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +0 -574
  515. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +0 -814
  516. package/coverage/lcov-report/src/middleware/tests/index.html +0 -161
  517. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +0 -397
  518. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +0 -214
  519. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +0 -163
  520. package/coverage/lcov-report/src/migrations/functions/tests/index.html +0 -161
  521. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +0 -163
  522. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +0 -517
  523. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +0 -190
  524. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +0 -131
  525. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +0 -190
  526. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +0 -244
  527. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +0 -535
  528. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +0 -313
  529. package/coverage/lcov-report/src/sdk/tests/index.html +0 -116
  530. package/coverage/lcov-report/src/utilities/retry.ts.html +0 -139
  531. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +0 -116
  532. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +0 -256
  533. package/dist/api/routes/tests/utilities/index.js +0 -131
  534. package/dist/tests/utilities/TestConfiguration.js +0 -618
  535. package/dist/tests/utilities/controllers.js +0 -40
  536. package/dist/tests/utilities/structures.js +0 -226
  537. package/dist/utilities/retry.js +0 -30
  538. package/jest-testcontainers-config.js +0 -8
  539. package/scripts/load/create-many-apps.js +0 -24
  540. package/scripts/load/create-many-rows.js +0 -30
  541. package/scripts/load/utils.js +0 -66
  542. package/src/integration-test/postgres.spec.ts +0 -752
  543. package/src/utilities/retry.ts +0 -18
@@ -1,1342 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/api/routes/tests/view.spec.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">src/api/routes/tests</a> view.spec.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/187</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/35</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/186</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-no">&nbsp;</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-no">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
- <span class="cline-any cline-no">&nbsp;</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</span>
660
- <span class="cline-any cline-no">&nbsp;</span>
661
- <span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-no">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</span>
675
- <span class="cline-any cline-no">&nbsp;</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-no">&nbsp;</span>
678
- <span class="cline-any cline-no">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-no">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-no">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
702
- <span class="cline-any cline-no">&nbsp;</span>
703
- <span class="cline-any cline-no">&nbsp;</span>
704
- <span class="cline-any cline-no">&nbsp;</span>
705
- <span class="cline-any cline-no">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-no">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-no">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-no">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-no">&nbsp;</span>
719
- <span class="cline-any cline-no">&nbsp;</span>
720
- <span class="cline-any cline-no">&nbsp;</span>
721
- <span class="cline-any cline-no">&nbsp;</span>
722
- <span class="cline-any cline-no">&nbsp;</span>
723
- <span class="cline-any cline-no">&nbsp;</span>
724
- <span class="cline-any cline-no">&nbsp;</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-no">&nbsp;</span>
730
- <span class="cline-any cline-no">&nbsp;</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-no">&nbsp;</span>
735
- <span class="cline-any cline-no">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-no">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-no">&nbsp;</span>
752
- <span class="cline-any cline-no">&nbsp;</span>
753
- <span class="cline-any cline-no">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-no">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-no">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-no">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-no">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-no">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-no">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-no">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-no">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-no">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-no">&nbsp;</span>
810
- <span class="cline-any cline-no">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-no">&nbsp;</span>
815
- <span class="cline-any cline-no">&nbsp;</span>
816
- <span class="cline-any cline-no">&nbsp;</span>
817
- <span class="cline-any cline-no">&nbsp;</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-no">&nbsp;</span>
824
- <span class="cline-any cline-no">&nbsp;</span>
825
- <span class="cline-any cline-no">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-no">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-no">&nbsp;</span>
832
- <span class="cline-any cline-no">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-no">&nbsp;</span>
836
- <span class="cline-any cline-no">&nbsp;</span>
837
- <span class="cline-any cline-no">&nbsp;</span>
838
- <span class="cline-any cline-no">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-no">&nbsp;</span>
842
- <span class="cline-any cline-no">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-no">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-no">&nbsp;</span>
851
- <span class="cline-any cline-no">&nbsp;</span>
852
- <span class="cline-any cline-no">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-no">&nbsp;</span>
856
- <span class="cline-any cline-no">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-no">&nbsp;</span>
860
- <span class="cline-any cline-no">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-no">&nbsp;</span>
863
- <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-no">&nbsp;</span>
865
- <span class="cline-any cline-no">&nbsp;</span>
866
- <span class="cline-any cline-no">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-no">&nbsp;</span>
870
- <span class="cline-any cline-no">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-no">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-no">&nbsp;</span>
875
- <span class="cline-any cline-no">&nbsp;</span>
876
- <span class="cline-any cline-no">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-no">&nbsp;</span>
880
- <span class="cline-any cline-no">&nbsp;</span>
881
- <span class="cline-any cline-no">&nbsp;</span>
882
- <span class="cline-any cline-no">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-no">&nbsp;</span>
887
- <span class="cline-any cline-no">&nbsp;</span>
888
- <span class="cline-any cline-no">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-no">&nbsp;</span>
892
- <span class="cline-any cline-no">&nbsp;</span>
893
- <span class="cline-any cline-no">&nbsp;</span>
894
- <span class="cline-any cline-no">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-no">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-no">&nbsp;</span>
899
- <span class="cline-any cline-no">&nbsp;</span>
900
- <span class="cline-any cline-no">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const setup = <span class="cstat-no" title="statement not covered" >require("./utilities")</span>
905
- const { events } = <span class="cstat-no" title="statement not covered" >require("@budibase/backend-core")</span>
906
- &nbsp;
907
- function <span class="fstat-no" title="function not covered" >priceTable(</span>) {
908
- <span class="cstat-no" title="statement not covered" > return {</span>
909
- name: "table",
910
- type: "table",
911
- key: "name",
912
- schema: {
913
- Price: {
914
- type: "number",
915
- constraints: {},
916
- },
917
- Category: {
918
- type: "string",
919
- constraints: {
920
- type: "string",
921
- },
922
- },
923
- },
924
- }
925
- }
926
- &nbsp;
927
- <span class="cstat-no" title="statement not covered" >describe("/views", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
928
- let request = <span class="cstat-no" title="statement not covered" >setup.getRequest()</span>
929
- let config = <span class="cstat-no" title="statement not covered" >setup.getConfig()</span>
930
- let table
931
- &nbsp;
932
- <span class="cstat-no" title="statement not covered" > afterAll(setup.afterAll)</span>
933
- &nbsp;
934
- <span class="cstat-no" title="statement not covered" > beforeAll(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
935
- <span class="cstat-no" title="statement not covered" > await config.init()</span>
936
- })
937
-
938
- <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >as</span>ync() =&gt; {</span>
939
- <span class="cstat-no" title="statement not covered" > table = await config.createTable(priceTable())</span>
940
- })
941
- &nbsp;
942
- const saveView = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >as</span>ync (view) =&gt; {</span>
943
- const viewToSave = <span class="cstat-no" title="statement not covered" >{</span>
944
- name: "TestView",
945
- field: "Price",
946
- calculation: "stats",
947
- tableId: table._id,
948
- ...view
949
- }
950
- <span class="cstat-no" title="statement not covered" > return request</span>
951
- .post(`/api/views`)
952
- .send(viewToSave)
953
- .set(config.defaultHeaders())
954
- .expect("Content-Type", /json/)
955
- .expect(200)
956
- }
957
- &nbsp;
958
- <span class="cstat-no" title="statement not covered" > describe("create", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
959
- &nbsp;
960
- <span class="cstat-no" title="statement not covered" > it("returns a success message when the view is successfully created", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
961
- const res = <span class="cstat-no" title="statement not covered" >await saveView()</span>
962
- <span class="cstat-no" title="statement not covered" > expect(res.body.tableId).toBe(table._id)</span>
963
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).toBeCalledTimes(1)</span>
964
- })
965
- &nbsp;
966
- <span class="cstat-no" title="statement not covered" > it("creates a view with a calculation", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
967
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
968
- &nbsp;
969
- const res = <span class="cstat-no" title="statement not covered" >await saveView({ calculation: "count" })</span>
970
- &nbsp;
971
- <span class="cstat-no" title="statement not covered" > expect(res.body.tableId).toBe(table._id)</span>
972
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).toBeCalledTimes(1)</span>
973
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).not.toBeCalled()</span>
974
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).toBeCalledTimes(1)</span>
975
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
976
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
977
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
978
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
979
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
980
- })
981
- &nbsp;
982
- <span class="cstat-no" title="statement not covered" > it("creates a view with a filter", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
983
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
984
- &nbsp;
985
- const res = <span class="cstat-no" title="statement not covered" >await saveView({</span>
986
- calculation: null,
987
- filters: [{
988
- value: "1",
989
- condition: "EQUALS",
990
- key: "price"
991
- }],
992
- })
993
- &nbsp;
994
- <span class="cstat-no" title="statement not covered" > expect(res.body.tableId).toBe(table._id)</span>
995
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).toBeCalledTimes(1)</span>
996
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).not.toBeCalled()</span>
997
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
998
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
999
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
1000
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).toBeCalledTimes(1)</span>
1001
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
1002
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
1003
- })
1004
- &nbsp;
1005
- <span class="cstat-no" title="statement not covered" > it("updates the table row with the new view metadata", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1006
- const res = <span class="cstat-no" title="statement not covered" >await request</span>
1007
- .post(`/api/views`)
1008
- .send({
1009
- name: "TestView",
1010
- field: "Price",
1011
- calculation: "stats",
1012
- tableId: table._id,
1013
- })
1014
- .set(config.defaultHeaders())
1015
- .expect("Content-Type", /json/)
1016
- .expect(200)
1017
- <span class="cstat-no" title="statement not covered" > expect(res.body.tableId).toBe(table._id)</span>
1018
- &nbsp;
1019
- const updatedTable = <span class="cstat-no" title="statement not covered" >await config.getTable(table._id)</span>
1020
- <span class="cstat-no" title="statement not covered" > expect(updatedTable.views).toEqual({</span>
1021
- TestView: {
1022
- field: "Price",
1023
- calculation: "stats",
1024
- tableId: table._id,
1025
- filters: [],
1026
- schema: {
1027
- sum: {
1028
- type: "number",
1029
- },
1030
- min: {
1031
- type: "number",
1032
- },
1033
- max: {
1034
- type: "number",
1035
- },
1036
- count: {
1037
- type: "number",
1038
- },
1039
- sumsqr: {
1040
- type: "number",
1041
- },
1042
- avg: {
1043
- type: "number",
1044
- },
1045
- field: {
1046
- type: "string",
1047
- },
1048
- },
1049
- },
1050
- })
1051
- })
1052
- })
1053
- &nbsp;
1054
- <span class="cstat-no" title="statement not covered" > describe("update", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1055
- <span class="cstat-no" title="statement not covered" > it("updates a view with no calculation or filter changed", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1056
- <span class="cstat-no" title="statement not covered" > await saveView()</span>
1057
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1058
- &nbsp;
1059
- <span class="cstat-no" title="statement not covered" > await saveView()</span>
1060
- &nbsp;
1061
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).not.toBeCalled()</span>
1062
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).toBeCalledTimes(1)</span>
1063
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
1064
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
1065
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
1066
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
1067
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
1068
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
1069
- })
1070
- &nbsp;
1071
- <span class="cstat-no" title="statement not covered" > it("updates a view calculation", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1072
- <span class="cstat-no" title="statement not covered" > await saveView({ calculation: "sum" })</span>
1073
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1074
- &nbsp;
1075
- <span class="cstat-no" title="statement not covered" > await saveView({ calculation: "count" })</span>
1076
- &nbsp;
1077
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).not.toBeCalled()</span>
1078
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).toBeCalledTimes(1)</span>
1079
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
1080
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).toBeCalledTimes(1)</span>
1081
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
1082
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
1083
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
1084
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
1085
- })
1086
- &nbsp;
1087
- <span class="cstat-no" title="statement not covered" > it("deletes a view calculation", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1088
- <span class="cstat-no" title="statement not covered" > await saveView({ calculation: "sum" })</span>
1089
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1090
- &nbsp;
1091
- <span class="cstat-no" title="statement not covered" > await saveView({ calculation: null })</span>
1092
- &nbsp;
1093
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).not.toBeCalled()</span>
1094
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).toBeCalledTimes(1)</span>
1095
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
1096
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
1097
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).toBeCalledTimes(1)</span>
1098
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
1099
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
1100
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
1101
- })
1102
- &nbsp;
1103
- <span class="cstat-no" title="statement not covered" > it("updates a view filter", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1104
- <span class="cstat-no" title="statement not covered" > await saveView({ filters: [{</span>
1105
- value: "1",
1106
- condition: "EQUALS",
1107
- key: "price"
1108
- }] })
1109
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1110
- &nbsp;
1111
- <span class="cstat-no" title="statement not covered" > await saveView({ filters: [{</span>
1112
- value: "2",
1113
- condition: "EQUALS",
1114
- key: "price"
1115
- }] })
1116
- &nbsp;
1117
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).not.toBeCalled()</span>
1118
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).toBeCalledTimes(1)</span>
1119
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
1120
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
1121
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
1122
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
1123
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).toBeCalledTimes(1)</span>
1124
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).not.toBeCalled()</span>
1125
- })
1126
- &nbsp;
1127
- <span class="cstat-no" title="statement not covered" > it("deletes a view filter", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1128
- <span class="cstat-no" title="statement not covered" > await saveView({ filters: [{</span>
1129
- value: "1",
1130
- condition: "EQUALS",
1131
- key: "price"
1132
- }] })
1133
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1134
- &nbsp;
1135
- <span class="cstat-no" title="statement not covered" > await saveView({ filters: [] })</span>
1136
- &nbsp;
1137
- <span class="cstat-no" title="statement not covered" > expect(events.view.created).not.toBeCalled()</span>
1138
- <span class="cstat-no" title="statement not covered" > expect(events.view.updated).toBeCalledTimes(1)</span>
1139
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationCreated).not.toBeCalled()</span>
1140
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationUpdated).not.toBeCalled()</span>
1141
- <span class="cstat-no" title="statement not covered" > expect(events.view.calculationDeleted).not.toBeCalled()</span>
1142
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterCreated).not.toBeCalled()</span>
1143
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterUpdated).not.toBeCalled()</span>
1144
- <span class="cstat-no" title="statement not covered" > expect(events.view.filterDeleted).toBeCalledTimes(1)</span>
1145
- })
1146
- })
1147
- &nbsp;
1148
- <span class="cstat-no" title="statement not covered" > describe("fetch", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1149
- <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1150
- <span class="cstat-no" title="statement not covered" > table = await config.createTable(priceTable())</span>
1151
- })
1152
- &nbsp;
1153
- <span class="cstat-no" title="statement not covered" > it("returns only custom views", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1154
- <span class="cstat-no" title="statement not covered" > await config.createView({</span>
1155
- name: "TestView",
1156
- field: "Price",
1157
- calculation: "stats",
1158
- tableId: table._id,
1159
- })
1160
- const res = <span class="cstat-no" title="statement not covered" >await request</span>
1161
- .get(`/api/views`)
1162
- .set(config.defaultHeaders())
1163
- .expect("Content-Type", /json/)
1164
- .expect(200)
1165
- <span class="cstat-no" title="statement not covered" > expect(res.body.length).toBe(1)</span>
1166
- <span class="cstat-no" title="statement not covered" > expect(res.body.find(<span class="fstat-no" title="function not covered" >({</span> name }) =&gt; <span class="cstat-no" title="statement not covered" >name === "TestView")</span>).toBeDefined()</span>
1167
- })
1168
- })
1169
- &nbsp;
1170
- <span class="cstat-no" title="statement not covered" > describe("query", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1171
- <span class="cstat-no" title="statement not covered" > it("returns data for the created view", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1172
- <span class="cstat-no" title="statement not covered" > await config.createView({</span>
1173
- name: "TestView",
1174
- field: "Price",
1175
- calculation: "stats",
1176
- tableId: table._id,
1177
- })
1178
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1179
- tableId: table._id,
1180
- Price: 1000,
1181
- })
1182
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1183
- tableId: table._id,
1184
- Price: 2000,
1185
- })
1186
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1187
- tableId: table._id,
1188
- Price: 4000,
1189
- })
1190
- const res = <span class="cstat-no" title="statement not covered" >await request</span>
1191
- .get(`/api/views/TestView?calculation=stats`)
1192
- .set(config.defaultHeaders())
1193
- .expect("Content-Type", /json/)
1194
- .expect(200)
1195
- <span class="cstat-no" title="statement not covered" > expect(res.body.length).toBe(1)</span>
1196
- <span class="cstat-no" title="statement not covered" > expect(res.body).toMatchSnapshot()</span>
1197
- })
1198
- &nbsp;
1199
- <span class="cstat-no" title="statement not covered" > it("returns data for the created view using a group by", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1200
- <span class="cstat-no" title="statement not covered" > await config.createView({</span>
1201
- calculation: "stats",
1202
- name: "TestView",
1203
- field: "Price",
1204
- groupBy: "Category",
1205
- tableId: table._id,
1206
- })
1207
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1208
- tableId: table._id,
1209
- Price: 1000,
1210
- Category: "One",
1211
- })
1212
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1213
- tableId: table._id,
1214
- Price: 2000,
1215
- Category: "One",
1216
- })
1217
- <span class="cstat-no" title="statement not covered" > await config.createRow({</span>
1218
- tableId: table._id,
1219
- Price: 4000,
1220
- Category: "Two",
1221
- })
1222
- const res = <span class="cstat-no" title="statement not covered" >await request</span>
1223
- .get(`/api/views/TestView?calculation=stats&amp;group=Category`)
1224
- .set(config.defaultHeaders())
1225
- .expect("Content-Type", /json/)
1226
- .expect(200)
1227
- &nbsp;
1228
- <span class="cstat-no" title="statement not covered" > expect(res.body.length).toBe(2)</span>
1229
- <span class="cstat-no" title="statement not covered" > expect(res.body).toMatchSnapshot()</span>
1230
- })
1231
- })
1232
- &nbsp;
1233
- <span class="cstat-no" title="statement not covered" > describe("destroy", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1234
- <span class="cstat-no" title="statement not covered" > it("should be able to delete a view", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1235
- const table = <span class="cstat-no" title="statement not covered" >await config.createTable(priceTable())</span>
1236
- const view = <span class="cstat-no" title="statement not covered" >await config.createView()</span>
1237
- const res = <span class="cstat-no" title="statement not covered" >await request</span>
1238
- .delete(`/api/views/${view.name}`)
1239
- .set(config.defaultHeaders())
1240
- .expect("Content-Type", /json/)
1241
- .expect(200)
1242
- <span class="cstat-no" title="statement not covered" > expect(res.body.map).toBeDefined()</span>
1243
- <span class="cstat-no" title="statement not covered" > expect(res.body.meta.tableId).toEqual(table._id)</span>
1244
- <span class="cstat-no" title="statement not covered" > expect(events.view.deleted).toBeCalledTimes(1)</span>
1245
- })
1246
- })
1247
- &nbsp;
1248
- <span class="cstat-no" title="statement not covered" > describe("exportView", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1249
- &nbsp;
1250
- <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1251
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1252
- })
1253
- &nbsp;
1254
- const setupExport = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1255
- const table = <span class="cstat-no" title="statement not covered" >await config.createTable()</span>
1256
- <span class="cstat-no" title="statement not covered" > await config.createRow({ name: "test-name", description: "ùúûü" })</span>
1257
- <span class="cstat-no" title="statement not covered" > return table</span>
1258
- }
1259
- &nbsp;
1260
- const exportView = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >as</span>ync (viewName, format) =&gt; {</span>
1261
- <span class="cstat-no" title="statement not covered" > return request</span>
1262
- .get(`/api/views/export?view=${viewName}&amp;format=${format}`)
1263
- .set(config.defaultHeaders())
1264
- .expect(200)
1265
- }
1266
- &nbsp;
1267
- const assertJsonExport = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>es) =&gt; {</span>
1268
- const rows = <span class="cstat-no" title="statement not covered" >JSON.parse(res.text)</span>
1269
- <span class="cstat-no" title="statement not covered" > expect(rows.length).toBe(1)</span>
1270
- <span class="cstat-no" title="statement not covered" > expect(rows[0].name).toBe("test-name")</span>
1271
- <span class="cstat-no" title="statement not covered" > expect(rows[0].description).toBe("ùúûü")</span>
1272
- }
1273
- &nbsp;
1274
- const assertCSVExport = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>es) =&gt; {</span>
1275
- <span class="cstat-no" title="statement not covered" > expect(res.text).toBe(`"name","description"\n"test-name","ùúûü"`)</span>
1276
- }
1277
- &nbsp;
1278
- <span class="cstat-no" title="statement not covered" > it("should be able to export a table as JSON", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1279
- const table = <span class="cstat-no" title="statement not covered" >await setupExport()</span>
1280
- &nbsp;
1281
- const res = <span class="cstat-no" title="statement not covered" >await exportView(table._id, "json")</span>
1282
- &nbsp;
1283
- <span class="cstat-no" title="statement not covered" > assertJsonExport(res)</span>
1284
- <span class="cstat-no" title="statement not covered" > expect(events.table.exported).toBeCalledTimes(1)</span>
1285
- <span class="cstat-no" title="statement not covered" > expect(events.table.exported).toBeCalledWith(table, "json")</span>
1286
- })
1287
- &nbsp;
1288
- <span class="cstat-no" title="statement not covered" > it("should be able to export a table as CSV", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1289
- const table = <span class="cstat-no" title="statement not covered" >await setupExport()</span>
1290
- &nbsp;
1291
- const res = <span class="cstat-no" title="statement not covered" >await exportView(table._id, "csv")</span>
1292
- &nbsp;
1293
- <span class="cstat-no" title="statement not covered" > assertCSVExport(res)</span>
1294
- <span class="cstat-no" title="statement not covered" > expect(events.table.exported).toBeCalledTimes(1)</span>
1295
- <span class="cstat-no" title="statement not covered" > expect(events.table.exported).toBeCalledWith(table, "csv")</span>
1296
- })
1297
- &nbsp;
1298
- <span class="cstat-no" title="statement not covered" > it("should be able to export a view as JSON", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1299
- let table = <span class="cstat-no" title="statement not covered" >await setupExport()</span>
1300
- const view = <span class="cstat-no" title="statement not covered" >await config.createView()</span>
1301
- <span class="cstat-no" title="statement not covered" > table = await config.getTable(table._id)</span>
1302
- &nbsp;
1303
- let res = <span class="cstat-no" title="statement not covered" >await exportView(view.name, "json")</span>
1304
- &nbsp;
1305
- <span class="cstat-no" title="statement not covered" > assertJsonExport(res)</span>
1306
- <span class="cstat-no" title="statement not covered" > expect(events.view.exported).toBeCalledTimes(1)</span>
1307
- <span class="cstat-no" title="statement not covered" > expect(events.view.exported).toBeCalledWith(table, "json")</span>
1308
- })
1309
- &nbsp;
1310
- <span class="cstat-no" title="statement not covered" > it("should be able to export a view as CSV", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
1311
- let table = <span class="cstat-no" title="statement not covered" >await setupExport()</span>
1312
- const view = <span class="cstat-no" title="statement not covered" >await config.createView()</span>
1313
- <span class="cstat-no" title="statement not covered" > table = await config.getTable(table._id)</span>
1314
- &nbsp;
1315
- let res = <span class="cstat-no" title="statement not covered" >await exportView(view.name, "csv")</span>
1316
- &nbsp;
1317
- <span class="cstat-no" title="statement not covered" > assertCSVExport(res)</span>
1318
- <span class="cstat-no" title="statement not covered" > expect(events.view.exported).toBeCalledTimes(1)</span>
1319
- <span class="cstat-no" title="statement not covered" > expect(events.view.exported).toBeCalledWith(table, "csv")</span>
1320
- })
1321
- })
1322
- })
1323
- &nbsp;</pre></td></tr></table></pre>
1324
-
1325
- <div class='push'></div><!-- for sticky footer -->
1326
- </div><!-- /wrapper -->
1327
- <div class='footer quiet pad2 space-top1 center small'>
1328
- Code coverage generated by
1329
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1330
- at Tue Feb 07 2023 16:00:57 GMT+0000 (Coordinated Universal Time)
1331
- </div>
1332
- <script src="../../../../prettify.js"></script>
1333
- <script>
1334
- window.onload = function () {
1335
- prettyPrint();
1336
- };
1337
- </script>
1338
- <script src="../../../../sorter.js"></script>
1339
- <script src="../../../../block-navigation.js"></script>
1340
- </body>
1341
- </html>
1342
-