@budibase/server 2.3.1 → 2.3.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.3dd03883.css → index.584d49b4.css} +1 -1
  3. package/builder/assets/{index.5dbe1f07.js → index.f9a5e06c.js} +207 -207
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +8468 -4046
  6. package/coverage/coverage-final.json +153 -70
  7. package/coverage/lcov-report/index.html +332 -122
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +114 -114
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +25 -25
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +17 -17
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
  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 +70 -70
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +10 -10
  21. package/coverage/lcov-report/src/api/controllers/index.html +35 -35
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +11 -11
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +22 -22
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
  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 +8 -8
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  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 +1 -1
  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 +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  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 +1 -1
  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 +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  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 +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +391 -0
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +116 -0
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +116 -0
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +796 -0
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +116 -0
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +805 -0
  64. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +116 -0
  65. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +568 -0
  66. package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +13 -13
  68. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  70. package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
  71. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/row/index.html +5 -5
  74. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +16 -16
  75. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +16 -16
  76. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  77. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +16 -16
  78. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +15 -15
  79. package/coverage/lcov-report/src/api/controllers/screen.ts.html +21 -21
  80. package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +1 -1
  83. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +43 -43
  84. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/table/index.html +20 -20
  86. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +18 -18
  87. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +49 -49
  88. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +34 -34
  89. package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
  90. package/coverage/lcov-report/src/api/controllers/user.ts.html +15 -15
  91. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +1 -1
  92. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  93. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +1 -1
  94. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +116 -0
  95. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +277 -0
  96. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
  97. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +13 -13
  99. package/coverage/lcov-report/src/api/index.html +1 -1
  100. package/coverage/lcov-report/src/api/index.ts.html +5 -5
  101. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  104. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/index.ts.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +2 -5
  121. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  127. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +583 -0
  129. package/coverage/lcov-report/src/api/routes/public/tests/index.html +38 -8
  130. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +199 -0
  131. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
  136. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/row.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  140. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  142. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  143. package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
  144. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +271 -0
  145. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +259 -0
  146. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +1066 -0
  147. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +154 -0
  148. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +1123 -0
  149. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +223 -0
  150. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +268 -0
  151. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +178 -0
  152. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +799 -0
  153. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +202 -0
  154. package/coverage/lcov-report/src/api/routes/tests/index.html +521 -0
  155. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +238 -0
  156. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +670 -0
  157. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +259 -0
  158. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +280 -0
  159. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +358 -0
  160. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +484 -0
  161. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +622 -0
  162. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +1696 -0
  163. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +478 -0
  164. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +430 -0
  165. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +1804 -0
  166. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +391 -0
  167. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +541 -0
  168. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +991 -0
  169. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +154 -0
  170. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +688 -0
  171. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +110 -41
  172. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  173. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +11 -5
  174. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +1342 -0
  175. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +484 -0
  176. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  177. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  178. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  179. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  180. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  181. package/coverage/lcov-report/src/app.ts.html +6 -3
  182. package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
  183. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  184. package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
  185. package/coverage/lcov-report/src/automations/index.html +27 -27
  186. package/coverage/lcov-report/src/automations/index.ts.html +5 -5
  187. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  188. package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
  189. package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
  190. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  191. package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
  192. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  193. package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
  194. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  195. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  196. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  197. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  198. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  199. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  200. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  201. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  202. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  203. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  204. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  205. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  206. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  207. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  208. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +337 -0
  209. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +187 -0
  210. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +223 -0
  211. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +133 -0
  212. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +250 -0
  213. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +166 -0
  214. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +229 -0
  215. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +229 -0
  216. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +232 -0
  217. package/coverage/lcov-report/src/automations/tests/index.html +341 -0
  218. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +220 -0
  219. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +202 -0
  220. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +436 -0
  221. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +298 -0
  222. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +151 -0
  223. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +217 -0
  224. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  225. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  226. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +166 -0
  227. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  228. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  229. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  230. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +1 -1
  231. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  232. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  233. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  234. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  235. package/coverage/lcov-report/src/automations/triggers.ts.html +24 -24
  236. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +280 -0
  237. package/coverage/lcov-report/src/automations/unitTests/index.html +116 -0
  238. package/coverage/lcov-report/src/automations/utils.ts.html +38 -38
  239. package/coverage/lcov-report/src/constants/index.html +1 -1
  240. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  241. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  242. package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
  243. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  244. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  245. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  246. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  247. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  248. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  249. package/coverage/lcov-report/src/db/dynamoClient.ts.html +1 -1
  250. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  251. package/coverage/lcov-report/src/db/index.html +16 -16
  252. package/coverage/lcov-report/src/db/index.ts.html +13 -13
  253. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +12 -12
  254. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  255. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  256. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  257. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +6 -6
  258. package/coverage/lcov-report/src/db/newid.ts.html +3 -3
  259. package/coverage/lcov-report/src/db/tests/index.html +131 -0
  260. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +793 -0
  261. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +277 -0
  262. package/coverage/lcov-report/src/db/utils.ts.html +33 -33
  263. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  264. package/coverage/lcov-report/src/definitions/index.html +1 -1
  265. package/coverage/lcov-report/src/environment.ts.html +19 -19
  266. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  267. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  268. package/coverage/lcov-report/src/events/index.html +1 -1
  269. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  270. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  271. package/coverage/lcov-report/src/index.html +16 -16
  272. package/coverage/lcov-report/src/index.ts.html +1 -1
  273. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  274. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  275. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  276. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  277. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  278. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  279. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  280. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  281. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  282. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  283. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  284. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  285. package/coverage/lcov-report/src/integrations/index.html +1 -1
  286. package/coverage/lcov-report/src/integrations/index.ts.html +10 -10
  287. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  288. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  289. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  290. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  291. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  292. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  293. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  294. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  295. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  296. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  297. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  298. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  299. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +310 -0
  300. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +199 -0
  301. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +349 -0
  302. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +550 -0
  303. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +331 -0
  304. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +376 -0
  305. package/coverage/lcov-report/src/integrations/tests/index.html +230 -5
  306. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +253 -0
  307. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +1087 -0
  308. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +484 -0
  309. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +373 -0
  310. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +328 -0
  311. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +337 -0
  312. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +1870 -0
  313. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +421 -0
  314. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +1753 -0
  315. package/coverage/lcov-report/src/integrations/utils.ts.html +3 -3
  316. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  317. package/coverage/lcov-report/src/middleware/authorized.ts.html +19 -19
  318. package/coverage/lcov-report/src/middleware/builder.ts.html +13 -13
  319. package/coverage/lcov-report/src/middleware/currentapp.ts.html +47 -47
  320. package/coverage/lcov-report/src/middleware/index.html +15 -15
  321. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  322. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  323. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  324. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  325. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +574 -0
  326. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +814 -0
  327. package/coverage/lcov-report/src/middleware/tests/index.html +161 -0
  328. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +397 -0
  329. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +214 -0
  330. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  331. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  332. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  333. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  334. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  335. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  336. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  337. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  338. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  339. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  340. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  341. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  342. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  343. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  344. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  345. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  346. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  347. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  348. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  349. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  350. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  351. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  352. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +163 -0
  353. package/coverage/lcov-report/src/migrations/functions/tests/index.html +161 -0
  354. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +163 -0
  355. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +517 -0
  356. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +190 -0
  357. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  358. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  359. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  360. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  361. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  362. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +131 -0
  363. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +190 -0
  364. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +244 -0
  365. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  366. package/coverage/lcov-report/src/migrations/index.html +1 -1
  367. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  368. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  369. package/coverage/lcov-report/src/migrations/tests/index.html +23 -8
  370. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +535 -0
  371. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  372. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  373. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  374. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
  375. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
  376. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  377. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  378. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  379. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  380. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +26 -8
  381. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  382. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  383. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  384. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  385. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +15 -15
  386. package/coverage/lcov-report/src/sdk/app/datasources/index.html +1 -1
  387. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +1 -1
  388. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  389. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +1 -1
  390. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +1 -1
  391. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  392. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  393. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  394. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  395. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  396. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  397. package/coverage/lcov-report/src/sdk/index.html +1 -1
  398. package/coverage/lcov-report/src/sdk/index.ts.html +2 -2
  399. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +313 -0
  400. package/coverage/lcov-report/src/sdk/tests/index.html +116 -0
  401. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  402. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  403. package/coverage/lcov-report/src/sdk/users/utils.ts.html +24 -24
  404. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  405. package/coverage/lcov-report/src/sdk/utils/index.ts.html +1 -1
  406. package/coverage/lcov-report/src/startup.ts.html +4 -4
  407. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +308 -140
  408. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +6 -6
  409. package/coverage/lcov-report/src/tests/utilities/index.html +18 -18
  410. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  411. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +18 -18
  412. package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
  413. package/coverage/lcov-report/src/threads/index.html +1 -1
  414. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  415. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  416. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  417. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  418. package/coverage/lcov-report/src/utilities/centralPath.ts.html +1 -1
  419. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +3 -3
  420. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  421. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +1 -1
  422. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  423. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  424. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +1 -1
  425. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  426. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +1 -1
  427. package/coverage/lcov-report/src/utilities/global.ts.html +36 -36
  428. package/coverage/lcov-report/src/utilities/index.html +34 -19
  429. package/coverage/lcov-report/src/utilities/index.ts.html +19 -19
  430. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  431. package/coverage/lcov-report/src/utilities/retry.ts.html +139 -0
  432. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  433. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  434. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  435. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +41 -41
  436. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +2 -2
  437. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +116 -0
  438. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +256 -0
  439. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +12 -12
  440. package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
  441. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  442. package/coverage/lcov-report/src/utilities/security.ts.html +19 -19
  443. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  444. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +32 -32
  445. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  446. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  447. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  448. package/coverage/lcov-report/src/watch.ts.html +1 -1
  449. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  450. package/coverage/lcov.info +14432 -7219
  451. package/dist/app.js +1 -1
  452. package/dist/package.json +8 -6
  453. package/dist/sdk/app/backups/exports.js +8 -2
  454. package/dist/tsconfig.build.tsbuildinfo +1 -1
  455. package/dist/utilities/retry.js +30 -0
  456. package/jest-testcontainers-config.js +8 -0
  457. package/jest.config.ts +28 -11
  458. package/package.json +9 -7
  459. package/scripts/load/create-many-apps.js +24 -0
  460. package/scripts/load/create-many-rows.js +30 -0
  461. package/scripts/load/utils.js +66 -0
  462. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  463. package/src/api/routes/public/applications.ts +0 -1
  464. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  465. package/src/api/routes/tests/analytics.spec.js +4 -1
  466. package/src/api/routes/tests/apikeys.spec.js +1 -1
  467. package/src/api/routes/tests/application.spec.ts +20 -6
  468. package/src/api/routes/tests/auth.spec.js +2 -2
  469. package/src/api/routes/tests/automation.spec.js +6 -2
  470. package/src/api/routes/tests/backup.spec.ts +4 -13
  471. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +10 -14
  472. package/src/api/routes/tests/component.spec.js +1 -1
  473. package/src/api/routes/tests/datasource.spec.ts +20 -3
  474. package/src/api/routes/tests/dev.spec.js +1 -1
  475. package/src/api/routes/tests/integration.spec.js +1 -1
  476. package/src/api/routes/tests/layout.spec.js +1 -1
  477. package/src/api/routes/tests/metadata.spec.js +1 -1
  478. package/src/api/routes/tests/misc.spec.js +1 -1
  479. package/src/api/routes/tests/permissions.spec.js +4 -1
  480. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +21 -1
  481. package/src/api/routes/tests/role.spec.js +6 -1
  482. package/src/api/routes/tests/routing.spec.js +1 -1
  483. package/src/api/routes/tests/row.spec.js +11 -3
  484. package/src/api/routes/tests/screen.spec.js +1 -1
  485. package/src/api/routes/tests/static.spec.js +2 -1
  486. package/src/api/routes/tests/table.spec.js +1 -1
  487. package/src/api/routes/tests/templates.spec.js +1 -1
  488. package/src/api/routes/tests/user.spec.js +3 -0
  489. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  490. package/src/api/routes/tests/utilities/index.ts +5 -3
  491. package/src/api/routes/tests/view.spec.js +4 -1
  492. package/src/api/routes/tests/webhook.spec.js +11 -2
  493. package/src/app.ts +2 -1
  494. package/src/automations/tests/automation.spec.js +4 -4
  495. package/src/automations/tests/bash.spec.js +1 -1
  496. package/src/automations/tests/discord.spec.js +1 -1
  497. package/src/automations/tests/executeQuery.spec.js +2 -3
  498. package/src/automations/tests/executeScript.spec.js +1 -1
  499. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  500. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  501. package/src/automations/tests/serverLog.spec.js +1 -1
  502. package/src/automations/tests/updateRow.spec.js +1 -1
  503. package/src/automations/tests/zapier.spec.js +1 -1
  504. package/src/db/tests/linkController.spec.js +4 -1
  505. package/src/db/tests/linkTests.spec.js +1 -1
  506. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  507. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  508. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  509. package/src/migrations/tests/index.spec.ts +3 -2
  510. package/src/sdk/app/backups/exports.ts +8 -2
  511. package/src/tests/jestEnv.ts +2 -6
  512. package/src/tests/jestSetup.ts +5 -6
  513. package/src/tests/utilities/TestConfiguration.ts +90 -34
  514. package/src/utilities/retry.ts +18 -0
@@ -0,0 +1,991 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/api/routes/tests/table.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> table.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/110</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/2</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/29</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/110</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></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
369
+ <span class="cline-any cline-no">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-no">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-no">&nbsp;</span>
375
+ <span class="cline-any cline-no">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
382
+ <span class="cline-any cline-no">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-no">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
392
+ <span class="cline-any cline-no">&nbsp;</span>
393
+ <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-no">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
+ <span class="cline-any cline-no">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-no">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
498
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-no">&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-neutral">&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-no">&nbsp;</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-no">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-no">&nbsp;</span>
545
+ <span class="cline-any cline-no">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-no">&nbsp;</span>
549
+ <span class="cline-any cline-no">&nbsp;</span>
550
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
573
+ <span class="cline-any cline-no">&nbsp;</span>
574
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
590
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&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-no">&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-no">&nbsp;</span>
610
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
614
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
618
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
624
+ <span class="cline-any cline-no">&nbsp;</span>
625
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
629
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-no">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
658
+ <span class="cline-any cline-no">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { checkBuilderEndpoint } = <span class="cstat-no" title="statement not covered" >require("./utilities/TestFunctions")</span>
671
+ const setup = <span class="cstat-no" title="statement not covered" >require("./utilities")</span>
672
+ const { basicTable } = <span class="cstat-no" title="statement not covered" >setup.structures</span>
673
+ const { events, context } = <span class="cstat-no" title="statement not covered" >require("@budibase/backend-core")</span>
674
+ &nbsp;
675
+ <span class="cstat-no" title="statement not covered" >describe("/tables", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
676
+ let request = <span class="cstat-no" title="statement not covered" >setup.getRequest()</span>
677
+ let config = <span class="cstat-no" title="statement not covered" >setup.getConfig()</span>
678
+ let appId
679
+ &nbsp;
680
+ <span class="cstat-no" title="statement not covered" > afterAll(setup.afterAll)</span>
681
+ &nbsp;
682
+ <span class="cstat-no" title="statement not covered" > beforeAll(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
683
+ const app = <span class="cstat-no" title="statement not covered" >await config.init()</span>
684
+ <span class="cstat-no" title="statement not covered" > appId = app.appId</span>
685
+ })
686
+ &nbsp;
687
+ <span class="cstat-no" title="statement not covered" > describe("create", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
688
+ &nbsp;
689
+ <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
690
+ <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
691
+ })
692
+ &nbsp;
693
+ const createTable = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(t</span>able) =&gt; {</span>
694
+ <span class="cstat-no" title="statement not covered" > if (!table) {</span>
695
+ <span class="cstat-no" title="statement not covered" > table = basicTable()</span>
696
+ }
697
+ <span class="cstat-no" title="statement not covered" > return request</span>
698
+ .post(`/api/tables`)
699
+ .send(table)
700
+ .set(config.defaultHeaders())
701
+ .expect('Content-Type', /json/)
702
+ .expect(200)
703
+ &nbsp;
704
+ }
705
+ &nbsp;
706
+ <span class="cstat-no" title="statement not covered" > it("returns a success message when the table is successfully created", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
707
+ const res = <span class="cstat-no" title="statement not covered" >await createTable()</span>
708
+ &nbsp;
709
+ <span class="cstat-no" title="statement not covered" > expect(res.res.statusMessage).toEqual("Table TestTable saved successfully.")</span>
710
+ <span class="cstat-no" title="statement not covered" > expect(res.body.name).toEqual("TestTable")</span>
711
+ <span class="cstat-no" title="statement not covered" > expect(events.table.created).toBeCalledTimes(1)</span>
712
+ <span class="cstat-no" title="statement not covered" > expect(events.table.created).toBeCalledWith(res.body)</span>
713
+ })
714
+ &nbsp;
715
+ <span class="cstat-no" title="statement not covered" > it("creates a table via data import", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
716
+ const table = <span class="cstat-no" title="statement not covered" >basicTable()</span>
717
+ <span class="cstat-no" title="statement not covered" > table.rows = [{ name: 'test-name', description: 'test-desc' }]</span>
718
+ &nbsp;
719
+ const res = <span class="cstat-no" title="statement not covered" >await createTable(table)</span>
720
+ &nbsp;
721
+ <span class="cstat-no" title="statement not covered" > expect(events.table.created).toBeCalledTimes(1)</span>
722
+ <span class="cstat-no" title="statement not covered" > expect(events.table.created).toBeCalledWith(res.body)</span>
723
+ <span class="cstat-no" title="statement not covered" > expect(events.table.imported).toBeCalledTimes(1)</span>
724
+ <span class="cstat-no" title="statement not covered" > expect(events.table.imported).toBeCalledWith(res.body)</span>
725
+ <span class="cstat-no" title="statement not covered" > expect(events.rows.imported).toBeCalledTimes(1)</span>
726
+ <span class="cstat-no" title="statement not covered" > expect(events.rows.imported).toBeCalledWith(res.body, 1)</span>
727
+ })
728
+ &nbsp;
729
+ <span class="cstat-no" title="statement not covered" > it("should apply authorization to endpoint", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
730
+ <span class="cstat-no" title="statement not covered" > await checkBuilderEndpoint({</span>
731
+ config,
732
+ method: "POST",
733
+ url: `/api/tables`,
734
+ body: basicTable()
735
+ })
736
+ })
737
+ })
738
+ &nbsp;
739
+ <span class="cstat-no" title="statement not covered" > describe("update", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
740
+ <span class="cstat-no" title="statement not covered" > it("updates a table", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
741
+ const testTable = <span class="cstat-no" title="statement not covered" >await config.createTable()</span>
742
+ &nbsp;
743
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
744
+ .post(`/api/tables`)
745
+ .send(testTable)
746
+ .set(config.defaultHeaders())
747
+ .expect('Content-Type', /json/)
748
+ .expect(200)
749
+ &nbsp;
750
+ <span class="cstat-no" title="statement not covered" > expect(events.table.updated).toBeCalledTimes(1)</span>
751
+ <span class="cstat-no" title="statement not covered" > expect(events.table.updated).toBeCalledWith(res.body)</span>
752
+ })
753
+ &nbsp;
754
+ <span class="cstat-no" title="statement not covered" > it("updates all the row fields for a table when a schema key is renamed", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
755
+ const testTable = <span class="cstat-no" title="statement not covered" >await config.createTable()</span>
756
+ <span class="cstat-no" title="statement not covered" > await config.createView({</span>
757
+ name: "TestView",
758
+ field: "Price",
759
+ calculation: "stats",
760
+ tableId: testTable._id,
761
+ })
762
+ &nbsp;
763
+ const testRow = <span class="cstat-no" title="statement not covered" >await request</span>
764
+ .post(`/api/${testTable._id}/rows`)
765
+ .send({
766
+ name: "test"
767
+ })
768
+ .set(config.defaultHeaders())
769
+ .expect('Content-Type', /json/)
770
+ .expect(200)
771
+ &nbsp;
772
+ const updatedTable = <span class="cstat-no" title="statement not covered" >await request</span>
773
+ .post(`/api/tables`)
774
+ .send({
775
+ _id: testTable._id,
776
+ _rev: testTable._rev,
777
+ name: "TestTable",
778
+ key: "name",
779
+ _rename: {
780
+ old: "name",
781
+ updated: "updatedName"
782
+ },
783
+ schema: {
784
+ updatedName: { type: "string" }
785
+ }
786
+ })
787
+ .set(config.defaultHeaders())
788
+ .expect('Content-Type', /json/)
789
+ .expect(200)
790
+ <span class="cstat-no" title="statement not covered" > expect(updatedTable.res.statusMessage).toEqual("Table TestTable saved successfully.")</span>
791
+ <span class="cstat-no" title="statement not covered" > expect(updatedTable.body.name).toEqual("TestTable")</span>
792
+ &nbsp;
793
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
794
+ .get(`/api/${testTable._id}/rows/${testRow.body._id}`)
795
+ .set(config.defaultHeaders())
796
+ .expect('Content-Type', /json/)
797
+ .expect(200)
798
+ &nbsp;
799
+ <span class="cstat-no" title="statement not covered" > expect(res.body.updatedName).toEqual("test")</span>
800
+ <span class="cstat-no" title="statement not covered" > expect(res.body.name).toBeUndefined()</span>
801
+ })
802
+ &nbsp;
803
+ <span class="cstat-no" title="statement not covered" > describe("user table", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
804
+ <span class="cstat-no" title="statement not covered" > it("should add roleId and email field when adjusting user table schema", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
805
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
806
+ .post(`/api/tables`)
807
+ .send({
808
+ ...basicTable(),
809
+ _id: "ta_users",
810
+ })
811
+ .set(config.defaultHeaders())
812
+ .expect('Content-Type', /json/)
813
+ .expect(200)
814
+ <span class="cstat-no" title="statement not covered" > expect(res.body.schema.email).toBeDefined()</span>
815
+ <span class="cstat-no" title="statement not covered" > expect(res.body.schema.roleId).toBeDefined()</span>
816
+ })
817
+ })
818
+ })
819
+ &nbsp;
820
+ <span class="cstat-no" title="statement not covered" > describe("import", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
821
+ <span class="cstat-no" title="statement not covered" > it("imports rows successfully", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
822
+ const table = <span class="cstat-no" title="statement not covered" >await config.createTable()</span>
823
+ const importRequest = <span class="cstat-no" title="statement not covered" >{</span>
824
+ schema: table.schema,
825
+ rows: [{ name: 'test-name', description: 'test-desc' }]
826
+ }
827
+ &nbsp;
828
+ <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
829
+ &nbsp;
830
+ <span class="cstat-no" title="statement not covered" > await request</span>
831
+ .post(`/api/tables/${table._id}/import`)
832
+ .send(importRequest)
833
+ .set(config.defaultHeaders())
834
+ .expect('Content-Type', /json/)
835
+ .expect(200)
836
+ &nbsp;
837
+ <span class="cstat-no" title="statement not covered" > expect(events.table.created).not.toHaveBeenCalled()</span>
838
+ <span class="cstat-no" title="statement not covered" > expect(events.rows.imported).toBeCalledTimes(1)</span>
839
+ <span class="cstat-no" title="statement not covered" > expect(events.rows.imported).toBeCalledWith(table, 1)</span>
840
+ })
841
+ })
842
+ &nbsp;
843
+ <span class="cstat-no" title="statement not covered" > describe("fetch", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
844
+ let testTable
845
+ &nbsp;
846
+ <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
847
+ <span class="cstat-no" title="statement not covered" > testTable = await config.createTable(testTable)</span>
848
+ })
849
+ &nbsp;
850
+ <span class="cstat-no" title="statement not covered" > afterEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
851
+ <span class="cstat-no" title="statement not covered" > delete testTable._rev</span>
852
+ })
853
+ &nbsp;
854
+ <span class="cstat-no" title="statement not covered" > it("returns all the tables for that instance in the response body", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
855
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
856
+ .get(`/api/tables`)
857
+ .set(config.defaultHeaders())
858
+ .expect('Content-Type', /json/)
859
+ .expect(200)
860
+ const fetchedTable = <span class="cstat-no" title="statement not covered" >res.body[0]</span>
861
+ <span class="cstat-no" title="statement not covered" > expect(fetchedTable.name).toEqual(testTable.name)</span>
862
+ <span class="cstat-no" title="statement not covered" > expect(fetchedTable.type).toEqual("internal")</span>
863
+ })
864
+ &nbsp;
865
+ <span class="cstat-no" title="statement not covered" > it("should apply authorization to endpoint", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
866
+ <span class="cstat-no" title="statement not covered" > await checkBuilderEndpoint({</span>
867
+ config,
868
+ method: "GET",
869
+ url: `/api/tables`,
870
+ })
871
+ })
872
+ })
873
+ &nbsp;
874
+ <span class="cstat-no" title="statement not covered" > describe("indexing", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
875
+ <span class="cstat-no" title="statement not covered" > it("should be able to create a table with indexes", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
876
+ <span class="cstat-no" title="statement not covered" > await context.doInAppContext(appId, <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
877
+ const db = <span class="cstat-no" title="statement not covered" >context.getAppDB()</span>
878
+ const indexCount = <span class="cstat-no" title="statement not covered" >(await db.getIndexes()).total_rows</span>
879
+ const table = <span class="cstat-no" title="statement not covered" >basicTable()</span>
880
+ <span class="cstat-no" title="statement not covered" > table.indexes = ["name"]</span>
881
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
882
+ .post(`/api/tables`)
883
+ .send(table)
884
+ .set(config.defaultHeaders())
885
+ .expect('Content-Type', /json/)
886
+ .expect(200)
887
+ <span class="cstat-no" title="statement not covered" > expect(res.body._id).toBeDefined()</span>
888
+ <span class="cstat-no" title="statement not covered" > expect(res.body._rev).toBeDefined()</span>
889
+ <span class="cstat-no" title="statement not covered" > expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)</span>
890
+ // update index to see what happens
891
+ <span class="cstat-no" title="statement not covered" > table.indexes = ["name", "description"]</span>
892
+ <span class="cstat-no" title="statement not covered" > await request</span>
893
+ .post(`/api/tables`)
894
+ .send({
895
+ ...table,
896
+ _id: res.body._id,
897
+ _rev: res.body._rev,
898
+ })
899
+ .set(config.defaultHeaders())
900
+ .expect('Content-Type', /json/)
901
+ .expect(200)
902
+ // shouldn't have created a new index
903
+ <span class="cstat-no" title="statement not covered" > expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)</span>
904
+ })
905
+ })
906
+ })
907
+ &nbsp;
908
+ <span class="cstat-no" title="statement not covered" > describe("destroy", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
909
+ let testTable
910
+ &nbsp;
911
+ <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
912
+ <span class="cstat-no" title="statement not covered" > testTable = await config.createTable(testTable)</span>
913
+ })
914
+ &nbsp;
915
+ <span class="cstat-no" title="statement not covered" > afterEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
916
+ <span class="cstat-no" title="statement not covered" > delete testTable._rev</span>
917
+ })
918
+ &nbsp;
919
+ <span class="cstat-no" title="statement not covered" > it("returns a success response when a table is deleted.", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
920
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
921
+ .delete(`/api/tables/${testTable._id}/${testTable._rev}`)
922
+ .set(config.defaultHeaders())
923
+ .expect('Content-Type', /json/)
924
+ .expect(200)
925
+ <span class="cstat-no" title="statement not covered" > expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)</span>
926
+ <span class="cstat-no" title="statement not covered" > expect(events.table.deleted).toBeCalledTimes(1)</span>
927
+ <span class="cstat-no" title="statement not covered" > expect(events.table.deleted).toBeCalledWith({ ...testTable, tableId: testTable._id })</span>
928
+ })
929
+ &nbsp;
930
+ <span class="cstat-no" title="statement not covered" > it("deletes linked references to the table after deletion", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
931
+ const linkedTable = <span class="cstat-no" title="statement not covered" >await config.createTable({</span>
932
+ name: "LinkedTable",
933
+ type: "table",
934
+ key: "name",
935
+ schema: {
936
+ name: {
937
+ type: "string",
938
+ constraints: {
939
+ type: "string",
940
+ },
941
+ },
942
+ TestTable: {
943
+ type: "link",
944
+ fieldName: "TestTable",
945
+ tableId: testTable._id,
946
+ constraints: {
947
+ type: "array"
948
+ }
949
+ }
950
+ },
951
+ })
952
+ &nbsp;
953
+ const res = <span class="cstat-no" title="statement not covered" >await request</span>
954
+ .delete(`/api/tables/${testTable._id}/${testTable._rev}`)
955
+ .set(config.defaultHeaders())
956
+ .expect('Content-Type', /json/)
957
+ .expect(200)
958
+ <span class="cstat-no" title="statement not covered" > expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)</span>
959
+ const dependentTable = <span class="cstat-no" title="statement not covered" >await config.getTable(linkedTable._id)</span>
960
+ <span class="cstat-no" title="statement not covered" > expect(dependentTable.schema.TestTable).not.toBeDefined()</span>
961
+ })
962
+ &nbsp;
963
+ <span class="cstat-no" title="statement not covered" > it("should apply authorization to endpoint", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
964
+ <span class="cstat-no" title="statement not covered" > await checkBuilderEndpoint({</span>
965
+ config,
966
+ method: "DELETE",
967
+ url: `/api/tables/${testTable._id}/${testTable._rev}`,
968
+ })
969
+ })
970
+ })
971
+ })
972
+ &nbsp;</pre></td></tr></table></pre>
973
+
974
+ <div class='push'></div><!-- for sticky footer -->
975
+ </div><!-- /wrapper -->
976
+ <div class='footer quiet pad2 space-top1 center small'>
977
+ Code coverage generated by
978
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
979
+ at Tue Feb 07 2023 15:01:11 GMT+0000 (Coordinated Universal Time)
980
+ </div>
981
+ <script src="../../../../prettify.js"></script>
982
+ <script>
983
+ window.onload = function () {
984
+ prettyPrint();
985
+ };
986
+ </script>
987
+ <script src="../../../../sorter.js"></script>
988
+ <script src="../../../../block-navigation.js"></script>
989
+ </body>
990
+ </html>
991
+