jinda 0.7.7.4 → 1.0.0

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 (311) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +46 -29
  3. data/Rakefile +103 -1
  4. data/app/assets/config/manifest.js +4 -1
  5. data/app/assets/javascripts/jinda_bootstrap.js +20 -0
  6. data/app/assets/stylesheets/_jinda_bootstrap_theme.scss +190 -0
  7. data/{lib/generators/jinda/templates/app/assets/stylesheets/jinda_jqm.css.scss → app/assets/stylesheets/jinda_bootstrap.css.scss} +12 -10
  8. data/app/config/routes.rb +38 -28
  9. data/app/controllers/concerns/jinda_general_concern.rb +86 -87
  10. data/app/controllers/concerns/jinda_run_concern.rb +184 -184
  11. data/app/controllers/jinda_controller.rb +23 -22
  12. data/bin/lint_modified +21 -0
  13. data/config/routes.rb +41 -22
  14. data/lib/generators/jinda/config_generator.rb +102 -81
  15. data/lib/generators/jinda/install_generator.rb +305 -148
  16. data/lib/generators/jinda/install_generator.rb.bak2 +268 -0
  17. data/lib/generators/jinda/installer/gems_install.rb +125 -127
  18. data/lib/generators/jinda/minitest_generator.rb +19 -18
  19. data/lib/generators/jinda/rspec_generator.rb +15 -14
  20. data/lib/generators/jinda/templates/DOCKER.md +188 -0
  21. data/lib/generators/jinda/templates/Dockerfile +15 -5
  22. data/lib/generators/jinda/templates/README.md +3 -3
  23. data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
  24. data/lib/generators/jinda/templates/app/assets/javascripts/application.js +8 -8
  25. data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +2 -0
  26. data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +2 -0
  27. data/{test/dummy → lib/generators/jinda/templates}/app/controllers/adminltes_controller.rb +1 -0
  28. data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +80 -78
  29. data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +4 -2
  30. data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +11 -9
  31. data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +40 -44
  32. data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +10 -8
  33. data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +23 -24
  34. data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +3 -1
  35. data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +25 -27
  36. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +16 -18
  37. data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +13 -14
  38. data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +4 -4
  39. data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +14 -14
  40. data/lib/generators/jinda/templates/app/controllers/mindmap_editor_controller.rb +74 -0
  41. data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
  42. data/lib/generators/jinda/templates/app/helpers/application_helper.rb +21 -20
  43. data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
  44. data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
  45. data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
  46. data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
  47. data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
  48. data/lib/generators/jinda/templates/app/helpers/mindmap_editor_helper.rb +3 -0
  49. data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
  50. data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
  51. data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
  52. data/lib/generators/jinda/templates/app/jinda/index.mm +276 -298
  53. data/lib/generators/jinda/templates/app/jinda/template/index.mm +1 -0
  54. data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +5 -3
  55. data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +6 -4
  56. data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +5 -5
  57. data/lib/generators/jinda/templates/app/models/address.rb +10 -8
  58. data/lib/generators/jinda/templates/app/models/article.rb +8 -6
  59. data/lib/generators/jinda/templates/app/models/comment.rb +10 -8
  60. data/lib/generators/jinda/templates/app/models/identity.rb +11 -10
  61. data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -33
  62. data/lib/generators/jinda/templates/app/models/jinda/jinda_module.rb +15 -0
  63. data/lib/generators/jinda/templates/app/models/jinda/module.rb +14 -10
  64. data/lib/generators/jinda/templates/app/models/jinda/notice.rb +15 -11
  65. data/lib/generators/jinda/templates/app/models/jinda/role.rb +11 -7
  66. data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +23 -20
  67. data/lib/generators/jinda/templates/app/models/jinda/service.rb +19 -15
  68. data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +42 -36
  69. data/lib/generators/jinda/templates/app/models/note.rb +14 -10
  70. data/lib/generators/jinda/templates/app/models/param.rb +23 -20
  71. data/lib/generators/jinda/templates/app/models/person.rb +9 -7
  72. data/lib/generators/jinda/templates/app/models/user.rb +42 -41
  73. data/lib/generators/jinda/templates/app/views/articles/show.html.haml +2 -2
  74. data/lib/generators/jinda/templates/app/views/identities/new.html.haml +13 -0
  75. data/lib/generators/jinda/templates/app/views/jinda/_static_bootstrap.haml +23 -0
  76. data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +15 -13
  77. data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +3 -2
  78. data/lib/generators/jinda/templates/app/views/layouts/application.haml +31 -4
  79. data/lib/generators/jinda/templates/app/views/layouts/lte/_header.haml +54 -0
  80. data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_sidebar.haml +1 -1
  81. data/lib/generators/jinda/templates/app/views/mindmap_editor/edit.html.haml +126 -0
  82. data/lib/generators/jinda/templates/app/views/mindmap_editor/save.html.haml +2 -0
  83. data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +13 -0
  84. data/lib/generators/jinda/templates/bin/lint_modified +21 -0
  85. data/lib/generators/jinda/templates/config/mongoid.yml +3 -3
  86. data/lib/generators/jinda/templates/config/mongoid.yml-docker +3 -3
  87. data/lib/generators/jinda/templates/config/mongoid.yml-localhost +3 -3
  88. data/lib/generators/jinda/templates/docker-compose-mongodb.yml +13 -0
  89. data/lib/generators/jinda/templates/docker-compose-web.yml +36 -0
  90. data/lib/generators/jinda/templates/docker-compose.yml +10 -14
  91. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +15 -14
  92. data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +9 -4
  93. data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +4 -3
  94. data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +82 -90
  95. data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +12 -15
  96. data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +5 -8
  97. data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +3 -5
  98. data/lib/generators/jinda/templates/spec/models/note_spec.rb +36 -35
  99. data/lib/generators/jinda/templates/spec/models/user_spec.rb +10 -8
  100. data/lib/generators/jinda/templates/spec/rails_helper.rb +29 -31
  101. data/lib/generators/jinda/templates/spec/spec_helper.rb +19 -17
  102. data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +8 -7
  103. data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +3 -1
  104. data/lib/generators/jinda/templates/spec/support/factory_bot.rb +7 -5
  105. data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +14 -19
  106. data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +3 -1
  107. data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +9 -8
  108. data/lib/generators/jinda/templates/test/application_system_test_case.rb +3 -1
  109. data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +16 -21
  110. data/lib/generators/jinda/templates/test/test_helper.rb +7 -3
  111. data/lib/jinda/date_helpers.rb +50 -41
  112. data/lib/jinda/gem_helpers.rb +10 -8
  113. data/lib/jinda/gen_class.rb +14 -12
  114. data/lib/jinda/gen_controller.rb +9 -8
  115. data/lib/jinda/gen_freemind.rb +33 -32
  116. data/lib/jinda/gen_helpers.rb +146 -139
  117. data/lib/jinda/gen_models.rb +125 -131
  118. data/lib/jinda/gen_modules.rb +21 -16
  119. data/lib/jinda/gen_runseq.rb +71 -67
  120. data/lib/jinda/gen_services.rb +74 -80
  121. data/lib/jinda/gen_xmain.rb +38 -36
  122. data/lib/jinda/get_app.rb +31 -29
  123. data/lib/jinda/helpers.rb +4 -4
  124. data/lib/jinda/init_vars.rb +41 -36
  125. data/lib/jinda/mindmap_converter.rb +196 -0
  126. data/lib/jinda/railtie.rb +10 -2
  127. data/lib/jinda/rake_views.rb +61 -60
  128. data/lib/jinda/refresh.rb +67 -61
  129. data/lib/jinda/themes.rb +80 -60
  130. data/lib/jinda/version.rb +3 -1
  131. data/lib/jinda.rb +2 -0
  132. data/lib/tasks/jinda.rake +25 -22
  133. data/test/INTEGRATION_TEST_README.md +374 -0
  134. data/test/LOCAL_DEVELOPMENT.md +345 -0
  135. data/test/README.md +243 -0
  136. data/test/TEST_INFRASTRUCTURE.md +412 -0
  137. data/test/TEST_INSTALLATION_SH_FIXES.md +205 -0
  138. data/test/UNIT_TESTS_README.md +366 -0
  139. data/test/api_notes_controller_test.rb +231 -0
  140. data/test/dummy/DOCKER.md +188 -0
  141. data/test/dummy/Dockerfile +15 -7
  142. data/test/dummy/Gemfile +38 -29
  143. data/test/dummy/Gemfile.lock +671 -292
  144. data/test/dummy/app/assets/config/manifest.js +4 -0
  145. data/test/dummy/app/channels/application_cable/channel.rb +2 -0
  146. data/test/dummy/app/channels/application_cable/connection.rb +2 -0
  147. data/test/dummy/app/controllers/admins_controller.rb +4 -2
  148. data/test/dummy/app/controllers/api/v1/notes_controller.rb +80 -78
  149. data/test/dummy/app/controllers/application_controller.rb +11 -9
  150. data/test/dummy/app/controllers/articles_controller.rb +40 -44
  151. data/test/dummy/app/controllers/comments_controller.rb +10 -8
  152. data/test/dummy/app/controllers/ctrs_controller.rb +2 -0
  153. data/test/dummy/app/controllers/devs_controller.rb +2 -0
  154. data/test/dummy/app/controllers/docs_controller.rb +23 -24
  155. data/test/dummy/app/controllers/identities_controller.rb +3 -1
  156. data/test/dummy/app/controllers/mindmap_editor_controller.rb +74 -0
  157. data/test/dummy/app/controllers/notes_controller.rb +25 -27
  158. data/test/dummy/app/controllers/password_resets_controller.rb +16 -18
  159. data/test/dummy/app/controllers/sessions_controller.rb +13 -14
  160. data/test/dummy/app/controllers/sitemap_controller.rb +4 -4
  161. data/test/dummy/app/controllers/users_controller.rb +14 -14
  162. data/test/dummy/app/helpers/admins_helper.rb +2 -0
  163. data/test/dummy/app/helpers/application_helper.rb +21 -20
  164. data/test/dummy/app/helpers/articles_helper.rb +2 -0
  165. data/test/dummy/app/helpers/basic_helper.rb +2 -0
  166. data/test/dummy/app/helpers/comments_helper.rb +2 -0
  167. data/test/dummy/app/helpers/ctrs_helper.rb +2 -0
  168. data/test/dummy/app/helpers/devs_helper.rb +2 -0
  169. data/test/dummy/app/helpers/mindmap_editor_helper.rb +3 -0
  170. data/test/dummy/app/helpers/pictures_helper.rb +2 -0
  171. data/test/dummy/app/helpers/sitemap_helper.rb +2 -0
  172. data/test/dummy/app/helpers/users_helper.rb +2 -0
  173. data/test/dummy/app/jinda/index.mm +384 -486
  174. data/test/dummy/app/jinda/template/index.mm +1 -0
  175. data/test/dummy/app/mailers/application_mailer.rb +2 -2
  176. data/test/dummy/app/mailers/application_mailer.rb-org +4 -0
  177. data/test/dummy/app/mailers/jinda_mailer.rb +5 -3
  178. data/test/dummy/app/mailers/note_mailer.rb +6 -4
  179. data/test/dummy/app/mailers/user_mailer.rb +5 -5
  180. data/test/dummy/app/models/address.rb +2 -0
  181. data/test/dummy/app/models/article.rb +2 -0
  182. data/test/dummy/app/models/comment.rb +3 -2
  183. data/test/dummy/app/models/identity.rb +11 -10
  184. data/test/dummy/app/models/jinda/doc.rb +36 -33
  185. data/test/dummy/app/models/jinda/jinda_module.rb +15 -0
  186. data/test/dummy/app/models/jinda/module.rb +14 -10
  187. data/test/dummy/app/models/jinda/notice.rb +15 -11
  188. data/test/dummy/app/models/jinda/role.rb +11 -7
  189. data/test/dummy/app/models/jinda/runseq.rb +23 -20
  190. data/test/dummy/app/models/jinda/service.rb +19 -15
  191. data/test/dummy/app/models/jinda/xmain.rb +42 -36
  192. data/test/dummy/app/models/note.rb +3 -8
  193. data/test/dummy/app/models/param.rb +23 -20
  194. data/test/dummy/app/models/person.rb +2 -0
  195. data/test/dummy/app/models/picture.rb +11 -0
  196. data/test/dummy/app/models/user.rb +42 -41
  197. data/test/dummy/app/views/admins/index.haml +21 -0
  198. data/test/dummy/app/views/api/v1/notes/delete/select_note.html.erb +21 -0
  199. data/test/dummy/app/views/api/v1/notes/edit/edit_note.html.erb +21 -0
  200. data/test/dummy/app/views/api/v1/notes/index.haml +21 -0
  201. data/test/dummy/app/views/api/v1/notes/new/new_note.html.erb +21 -0
  202. data/test/dummy/app/views/articles/show.html.haml +2 -2
  203. data/test/dummy/app/views/devs/index.haml +21 -0
  204. data/test/dummy/app/views/jinda/feed.rss.builder +15 -13
  205. data/test/dummy/app/views/jinda/index.html.haml +3 -2
  206. data/test/dummy/app/views/layouts/application.haml +2 -2
  207. data/test/dummy/app/views/mindmap_editor/edit.html.haml +126 -0
  208. data/test/dummy/app/views/mindmap_editor/save.html.haml +2 -0
  209. data/test/dummy/bin/docker-entrypoint +3 -0
  210. data/test/dummy/bin/lint_modified +21 -0
  211. data/test/dummy/bin/setup +1 -1
  212. data/test/dummy/config/application.rb +7 -2
  213. data/test/dummy/config/boot.rb +2 -1
  214. data/test/dummy/config/cable.yml +1 -1
  215. data/test/dummy/config/credentials.yml.enc +1 -1
  216. data/test/dummy/config/environments/development.rb +7 -1
  217. data/test/dummy/config/environments/production.rb +30 -26
  218. data/test/dummy/config/environments/test.rb +12 -8
  219. data/test/dummy/config/initializers/content_security_policy.rb +2 -2
  220. data/test/dummy/config/initializers/filter_parameter_logging.rb +3 -3
  221. data/test/dummy/config/initializers/mindmap_converter.rb +5 -0
  222. data/test/dummy/config/initializers/mongoid.rb +24 -9
  223. data/test/dummy/config/initializers/omniauth.rb +5 -0
  224. data/test/dummy/config/initializers/permissions_policy.rb +11 -9
  225. data/test/dummy/config/locales/en.yml +11 -13
  226. data/test/dummy/config/mongoid.yml +172 -53
  227. data/test/dummy/config/mongoid.yml-docker +3 -3
  228. data/test/dummy/config/mongoid.yml-localhost +3 -3
  229. data/test/dummy/config/puma.rb +21 -20
  230. data/test/dummy/config/routes.rb +7 -1
  231. data/test/dummy/docker-compose-mongodb.yml +13 -0
  232. data/test/dummy/docker-compose-web.yml +36 -0
  233. data/test/dummy/docker-compose.yml +10 -18
  234. data/test/dummy/log/development.log +5834 -2261
  235. data/test/dummy/spec/controllers/api/v1_get_index_spec.rb +15 -14
  236. data/test/dummy/spec/controllers/api/v1_get_my_spec.rb +9 -4
  237. data/test/dummy/spec/controllers/api/v1_post_spec.rb +4 -3
  238. data/test/dummy/spec/controllers/sessions_controller_spec.rb +82 -90
  239. data/test/dummy/spec/factories/pictures.rb +5 -0
  240. data/test/dummy/spec/features/userlogins_spec.rb +12 -15
  241. data/test/dummy/spec/mailers/note_spec.rb +5 -8
  242. data/test/dummy/spec/mailers/previews/note_preview.rb +3 -5
  243. data/test/dummy/spec/models/note_spec.rb +36 -35
  244. data/test/dummy/spec/models/picture_spec.rb +5 -0
  245. data/test/dummy/spec/models/user_spec.rb +10 -8
  246. data/test/dummy/spec/rails_helper.rb +29 -31
  247. data/test/dummy/spec/requests/ctrs_spec.rb +7 -0
  248. data/test/dummy/spec/requests/devs_spec.rb +7 -0
  249. data/test/dummy/spec/spec_helper.rb +19 -17
  250. data/test/dummy/spec/support/authentication_helper.rb +8 -7
  251. data/test/dummy/spec/support/databasecleaner.rb +3 -1
  252. data/test/dummy/spec/support/factory_bot.rb +7 -5
  253. data/test/dummy/spec/support/omniauth_macros.rb +14 -19
  254. data/test/dummy/spec/support/request_spec_helper.rb +3 -1
  255. data/test/dummy/spec/views/articles/_article.html.erb_spec.rbx +9 -8
  256. data/test/generated_app_test.rb +261 -0
  257. data/test/installation_test.rb +368 -0
  258. data/test/integration_test.rb +398 -0
  259. data/test/jenkins_stage_test.rb +182 -0
  260. data/test/note_model_test.rb +224 -0
  261. data/test/note_validation_integration_test.rb +292 -0
  262. data/test/run_unit_tests.sh +91 -0
  263. data/test/test_helper.rb +8 -16
  264. metadata +188 -60
  265. data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +0 -15
  266. data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +0 -28
  267. data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +0 -10
  268. data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +0 -19
  269. data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +0 -7
  270. data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +0 -147
  271. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +0 -47
  272. data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +0 -34
  273. data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +0 -155
  274. data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +0 -47
  275. data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +0 -9
  276. data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +0 -33
  277. data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +0 -16
  278. data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +0 -4
  279. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +0 -13
  280. data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +0 -3
  281. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +0 -1
  282. data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +0 -1
  283. data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +0 -13
  284. data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +0 -31
  285. data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +0 -22
  286. data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +0 -22
  287. data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +0 -14
  288. data/test/dummy/Guardfile +0 -96
  289. data/test/dummy/app/controllers/application_controller.rb.bak +0 -2
  290. data/test/dummy/app/controllers/password_resets.rb +0 -28
  291. data/test/dummy/app/helpers/application_helper.rb.bak +0 -2
  292. data/test/dummy/app/views/identities/new-bak.html.haml +0 -32
  293. data/test/dummy/app/views/layouts/application.haml.bak +0 -4
  294. data/test/dummy/app/views/layouts/application.html.erb.bak +0 -15
  295. data/test/dummy/app/views/layouts/lte/_header.haml +0 -111
  296. data/test/dummy/app/views/layouts/lte/_rightbar.haml +0 -123
  297. data/test/dummy/app/views/sessions/new-bak.html.haml +0 -22
  298. data/test/dummy/config/initializers/fix_mongoid_generator.rb-org +0 -14
  299. data/test/dummy/tmp/development_secret.txt +0 -1
  300. data/test/integration/navigation_test.rb +0 -7
  301. data/test/jinda_test.rb +0 -7
  302. /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/application.scss +0 -0
  303. /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/jinda.scss +0 -0
  304. /data/lib/generators/jinda/templates/app/mailers/{application_mailer.rb → application_mailer.rb-org} +0 -0
  305. /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard1.haml +0 -0
  306. /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard2.haml +0 -0
  307. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_flash.haml +0 -0
  308. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_footer.haml +0 -0
  309. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu.haml +0 -0
  310. /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu_mm.haml +0 -0
  311. /data/lib/generators/jinda/templates/app/views/layouts/{bsb → lte}/_rightbar.haml +0 -0
@@ -0,0 +1,224 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'fileutils'
5
+
6
+ # Test suite for Note model RSpec tests
7
+ #
8
+ # This test verifies that the Note model spec template:
9
+ # - Tests Note creation with user association
10
+ # - Tests validation rules
11
+ # - Tests auto-fill behavior
12
+ #
13
+ # Usage:
14
+ # ruby test/note_model_test.rb
15
+ #
16
+ class NoteModelTest < Minitest::Test
17
+ JINDA_ROOT = File.expand_path('..', __dir__)
18
+ NOTE_MODEL_PATH = File.join(JINDA_ROOT, 'lib/generators/jinda/templates/app/models/note.rb')
19
+ NOTE_SPEC_PATH = File.join(JINDA_ROOT, 'lib/generators/jinda/templates/spec/models/note_spec.rb')
20
+
21
+ def test_01_note_model_exists
22
+ assert File.exist?(NOTE_MODEL_PATH),
23
+ 'Note model template should exist'
24
+ end
25
+
26
+ def test_02_note_spec_exists
27
+ assert File.exist?(NOTE_SPEC_PATH),
28
+ 'Note spec template should exist'
29
+ end
30
+
31
+ def test_03_note_model_includes_mongoid
32
+ content = File.read(NOTE_MODEL_PATH)
33
+
34
+ assert_includes content, 'include Mongoid::Document',
35
+ 'Note should include Mongoid::Document'
36
+ assert_includes content, 'include Mongoid::Timestamps',
37
+ 'Note should include timestamps'
38
+ end
39
+
40
+ def test_04_note_model_has_required_fields
41
+ content = File.read(NOTE_MODEL_PATH)
42
+
43
+ assert_includes content, 'field :title, type: String',
44
+ 'Note should have title field'
45
+ assert_includes content, 'field :body, type: String',
46
+ 'Note should have body field'
47
+ end
48
+
49
+ def test_05_note_model_belongs_to_user
50
+ content = File.read(NOTE_MODEL_PATH)
51
+
52
+ assert_includes content, 'belongs_to :user',
53
+ 'Note should belong to user'
54
+ end
55
+
56
+ def test_06_note_model_has_validations
57
+ content = File.read(NOTE_MODEL_PATH)
58
+
59
+ assert_includes content, 'validates :title',
60
+ 'Note should validate title'
61
+ assert_includes content, 'length: { maximum:',
62
+ 'Title should have length validation'
63
+ assert_includes content, 'presence: true',
64
+ 'Title should be required'
65
+ end
66
+
67
+ def test_07_note_model_has_title_length_constant
68
+ content = File.read(NOTE_MODEL_PATH)
69
+
70
+ assert_includes content, 'MAX_TITLE_LENGTH = 30',
71
+ 'Should define MAX_TITLE_LENGTH constant'
72
+ end
73
+
74
+ def test_08_note_model_has_body_length_constant
75
+ content = File.read(NOTE_MODEL_PATH)
76
+
77
+ assert_includes content, 'MAX_BODY_LENGTH',
78
+ 'Should define MAX_BODY_LENGTH constant'
79
+ assert_includes content, '1000',
80
+ 'MAX_BODY_LENGTH should be 1000'
81
+ end
82
+
83
+ def test_09_note_model_has_before_validation_callback
84
+ content = File.read(NOTE_MODEL_PATH)
85
+
86
+ assert_includes content, 'before_validation :ensure_title_has_a_value',
87
+ 'Note should have before_validation callback'
88
+ end
89
+
90
+ def test_10_note_model_has_ensure_title_method
91
+ content = File.read(NOTE_MODEL_PATH)
92
+
93
+ assert_includes content, 'def ensure_title_has_a_value',
94
+ 'Note should have ensure_title_has_a_value method'
95
+ assert_includes content, 'self.title = body[0..(MAX_TITLE_LENGTH - 1)]',
96
+ 'Method should auto-fill title from body'
97
+ end
98
+
99
+ def test_11_spec_creates_admin_user
100
+ content = File.read(NOTE_SPEC_PATH)
101
+
102
+ assert_includes content, 'let!(:admin_user)',
103
+ 'Spec should create admin_user'
104
+ assert_includes content, "User.create",
105
+ 'Should create User instance'
106
+ end
107
+
108
+ def test_12_spec_tests_note_with_title_and_body
109
+ content = File.read(NOTE_SPEC_PATH)
110
+
111
+ assert_includes content, 'valid with both title and body',
112
+ 'Spec should test valid note with title and body'
113
+ assert_includes content, 'Note.create(title:',
114
+ 'Should create note with title'
115
+ assert_includes content, 'user: admin_user',
116
+ 'Should associate note with user'
117
+ end
118
+
119
+ def test_13_spec_tests_note_with_only_title
120
+ content = File.read(NOTE_SPEC_PATH)
121
+
122
+ assert_includes content, 'valid with only title',
123
+ 'Spec should test note with only title'
124
+ end
125
+
126
+ def test_14_spec_tests_note_with_only_body
127
+ content = File.read(NOTE_SPEC_PATH)
128
+
129
+ assert_includes content, 'invalid with only body',
130
+ 'Spec should test invalid note with only body'
131
+ assert_includes content, 'Note.new(body:',
132
+ 'Should use Note.new for invalid case'
133
+ end
134
+
135
+ def test_15_spec_tests_body_length_validation
136
+ content = File.read(NOTE_SPEC_PATH)
137
+
138
+ assert_includes content, 'invalid body length more than 1000',
139
+ 'Spec should test body length validation'
140
+ assert_includes content, "'y' * 1001",
141
+ 'Should test with 1001 characters'
142
+ end
143
+
144
+ def test_16_spec_tests_title_autofill_from_body
145
+ content = File.read(NOTE_SPEC_PATH)
146
+
147
+ assert_includes content, 'title data blank',
148
+ 'Spec should have section for blank title'
149
+ assert_includes content, 'auto fill from body',
150
+ 'Spec should test auto-fill behavior'
151
+ assert_includes content, "title: ''",
152
+ 'Should test with empty title'
153
+ assert_includes content, "body: 'Body content'",
154
+ 'Should provide body content'
155
+ end
156
+
157
+ def test_17_spec_verifies_title_equals_body
158
+ content = File.read(NOTE_SPEC_PATH)
159
+
160
+ assert_includes content, "note.title.should == 'Body content'",
161
+ 'Spec should verify title equals body when auto-filled'
162
+ end
163
+
164
+ def test_18_spec_checks_note_count_changes
165
+ content = File.read(NOTE_SPEC_PATH)
166
+
167
+ assert_includes content, 'before_count = Note.count',
168
+ 'Spec should track note count before creation'
169
+ assert_includes content, 'expect(Note.count)',
170
+ 'Spec should verify note count changes'
171
+ end
172
+
173
+ def test_19_note_model_validates_presence_when_user_present
174
+ content = File.read(NOTE_MODEL_PATH)
175
+
176
+ # Ensure validations are defined
177
+ assert_match(/validates :title.*presence: true/m, content,
178
+ 'Title should be validated for presence')
179
+ end
180
+
181
+ def test_20_spec_always_includes_user_in_tests
182
+ content = File.read(NOTE_SPEC_PATH)
183
+
184
+ # Count how many times Note.create or Note.new is called
185
+ create_calls = content.scan(/Note\.create/).length
186
+ new_calls = content.scan(/Note\.new/).length
187
+ total_note_calls = create_calls + new_calls
188
+
189
+ # Count how many times user parameter is passed
190
+ user_params = content.scan(/user: admin_user/).length
191
+
192
+ # All Note operations should include user (user: admin_user appears once per operation)
193
+ assert_equal total_note_calls, user_params,
194
+ 'All Note.create and Note.new calls should include user parameter'
195
+ end
196
+
197
+ def test_21_note_model_in_jinda_markers
198
+ content = File.read(NOTE_MODEL_PATH)
199
+
200
+ assert_includes content, '# jinda begin',
201
+ 'Note model should have jinda begin marker'
202
+ assert_includes content, '# jinda end',
203
+ 'Note model should have jinda end marker'
204
+
205
+ # Extract content between markers
206
+ jinda_content = content[/# jinda begin(.*)# jinda end/m, 1]
207
+
208
+ assert_includes jinda_content, 'belongs_to :user',
209
+ 'User association should be in jinda markers'
210
+ assert_includes jinda_content, 'validates :title',
211
+ 'Validations should be in jinda markers'
212
+ end
213
+
214
+ def test_22_spec_uses_rspec_syntax
215
+ content = File.read(NOTE_SPEC_PATH)
216
+
217
+ assert_includes content, "require 'rails_helper'",
218
+ 'Spec should require rails_helper'
219
+ assert_includes content, 'RSpec.describe Note',
220
+ 'Spec should use RSpec.describe'
221
+ assert_includes content, 'type: :model',
222
+ 'Spec should specify model type'
223
+ end
224
+ end
@@ -0,0 +1,292 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'fileutils'
5
+
6
+ # Integration test suite for Note model validations with User context
7
+ #
8
+ # This test verifies that Note model validations function correctly
9
+ # when a user is present, covering:
10
+ # - Title length validation (max 30 chars)
11
+ # - Body length validation (max 1000 chars)
12
+ # - Title auto-fill from body when title is blank
13
+ # - Presence validation for title
14
+ # - User association requirement
15
+ #
16
+ # Usage:
17
+ # ruby test/note_validation_integration_test.rb
18
+ #
19
+ class NoteValidationIntegrationTest < Minitest::Test
20
+ JINDA_ROOT = File.expand_path('..', __dir__)
21
+ NOTE_MODEL_PATH = File.join(JINDA_ROOT, 'lib/generators/jinda/templates/app/models/note.rb')
22
+ NOTE_SPEC_PATH = File.join(JINDA_ROOT, 'lib/generators/jinda/templates/spec/models/note_spec.rb')
23
+
24
+ def test_01_title_presence_validation_exists
25
+ content = File.read(NOTE_MODEL_PATH)
26
+
27
+ assert_includes content, 'validates :title',
28
+ 'Note model should validate title'
29
+ assert_includes content, 'presence: true',
30
+ 'Title should have presence validation'
31
+ end
32
+
33
+ def test_02_title_length_validation_is_30_chars
34
+ content = File.read(NOTE_MODEL_PATH)
35
+
36
+ assert_includes content, 'MAX_TITLE_LENGTH = 30',
37
+ 'Maximum title length should be 30'
38
+ assert_includes content, 'length: { maximum: (MAX_TITLE_LENGTH = 30)',
39
+ 'Title validation should use MAX_TITLE_LENGTH constant'
40
+ end
41
+
42
+ def test_03_title_length_validation_has_custom_message
43
+ content = File.read(NOTE_MODEL_PATH)
44
+
45
+ title_validation = content[/validates :title.*?\n\s*validates|validates :title.*?end/m]
46
+
47
+ assert_includes title_validation, 'message:',
48
+ 'Title validation should have custom message'
49
+ assert_includes title_validation, 'less than 30',
50
+ 'Message should mention 30 character limit'
51
+ end
52
+
53
+ def test_04_body_length_validation_is_1000_chars
54
+ content = File.read(NOTE_MODEL_PATH)
55
+
56
+ assert_includes content, 'MAX_BODY_LENGTH = 1000',
57
+ 'Maximum body length should be 1000'
58
+ assert_includes content, 'validates :body',
59
+ 'Should validate body field'
60
+ end
61
+
62
+ def test_05_body_length_validation_has_custom_message
63
+ content = File.read(NOTE_MODEL_PATH)
64
+
65
+ body_validation = content[/validates :body.*?\n/]
66
+
67
+ assert_includes body_validation, 'message:',
68
+ 'Body validation should have custom message'
69
+ assert_includes body_validation, 'less than 1000',
70
+ 'Message should mention 1000 character limit'
71
+ end
72
+
73
+ def test_06_title_autofill_before_validation_callback
74
+ content = File.read(NOTE_MODEL_PATH)
75
+
76
+ assert_includes content, 'before_validation :ensure_title_has_a_value',
77
+ 'Should have before_validation callback for title autofill'
78
+ end
79
+
80
+ def test_07_autofill_method_checks_title_presence
81
+ content = File.read(NOTE_MODEL_PATH)
82
+
83
+ ensure_method = content[/def ensure_title_has_a_value.*?end/m]
84
+
85
+ assert_includes ensure_method, 'return if title.present?',
86
+ 'Should return early if title is already present'
87
+ end
88
+
89
+ def test_08_autofill_method_uses_body_substring
90
+ content = File.read(NOTE_MODEL_PATH)
91
+
92
+ ensure_method = content[/def ensure_title_has_a_value.*?end/m]
93
+
94
+ assert_includes ensure_method, 'body[0..(MAX_TITLE_LENGTH - 1)]',
95
+ 'Should take first 29 characters of body (0..29)'
96
+ assert_includes ensure_method, 'if body.present?',
97
+ 'Should only autofill if body is present'
98
+ end
99
+
100
+ def test_09_autofill_sets_title_to_self
101
+ content = File.read(NOTE_MODEL_PATH)
102
+
103
+ ensure_method = content[/def ensure_title_has_a_value.*?end/m]
104
+
105
+ assert_includes ensure_method, 'self.title =',
106
+ 'Should assign to self.title'
107
+ end
108
+
109
+ def test_10_spec_tests_valid_note_with_user
110
+ content = File.read(NOTE_SPEC_PATH)
111
+
112
+ # Should test creating valid note with user
113
+ assert_includes content, 'Note.create(title:',
114
+ 'Spec should create notes with title'
115
+ assert_includes content, 'user: admin_user',
116
+ 'Spec should always include user in creation'
117
+ end
118
+
119
+ def test_11_spec_tests_title_only_with_user
120
+ content = File.read(NOTE_SPEC_PATH)
121
+
122
+ title_only_test = content[/'valid with only title'.*?end/m]
123
+
124
+ assert_includes title_only_test, 'Note.create(title:',
125
+ 'Should test note creation with only title'
126
+ assert_includes title_only_test, 'user: admin_user',
127
+ 'Title-only test should include user'
128
+ assert_includes title_only_test, 'expect(Note.count).not_to eq(before_count)',
129
+ 'Should verify note was created successfully'
130
+ end
131
+
132
+ def test_12_spec_tests_body_only_invalid_with_user
133
+ content = File.read(NOTE_SPEC_PATH)
134
+
135
+ body_only_test = content[/'invalid with only body'.*?end/m]
136
+
137
+ assert_includes body_only_test, 'Note.new(body:',
138
+ 'Should use Note.new for invalid case'
139
+ assert_includes body_only_test, 'user: admin_user',
140
+ 'Body-only test should include user'
141
+ assert_includes body_only_test, 'expect(Note.count).to eq(before_count)',
142
+ 'Should verify note was NOT created (invalid)'
143
+ end
144
+
145
+ def test_13_spec_tests_title_length_exceeds_30
146
+ content = File.read(NOTE_SPEC_PATH)
147
+
148
+ # Note: current spec tests body length > 1000, not title > 30
149
+ # but we should verify the spec structure
150
+ length_test = content[/'invalid body length more than 1000'.*?end/m]
151
+
152
+ assert_includes length_test, 'user: admin_user',
153
+ 'Length validation test should include user'
154
+ end
155
+
156
+ def test_14_spec_tests_autofill_with_user_present
157
+ content = File.read(NOTE_SPEC_PATH)
158
+
159
+ autofill_test = content[/'auto fill from body'.*?end/m]
160
+
161
+ assert_includes autofill_test, "title: ''",
162
+ 'Autofill test should use empty title'
163
+ assert_includes autofill_test, "body: 'Body content'",
164
+ 'Autofill test should provide body'
165
+ assert_includes autofill_test, 'user: admin_user',
166
+ 'Autofill test should include user'
167
+ assert_includes autofill_test, "note.title.should == 'Body content'",
168
+ 'Should verify title equals body after autofill'
169
+ end
170
+
171
+ def test_15_all_validations_work_with_user_context
172
+ content = File.read(NOTE_MODEL_PATH)
173
+
174
+ # Verify that validations don't have conditional logic excluding user context
175
+ validations_section = content[/validates :title.*?validates :body.*?\n/m]
176
+
177
+ refute_includes validations_section, 'if:',
178
+ 'Validations should not be conditional on user presence'
179
+ refute_includes validations_section, 'unless:',
180
+ 'Validations should not skip based on conditions'
181
+ end
182
+
183
+ def test_16_user_association_is_required
184
+ content = File.read(NOTE_MODEL_PATH)
185
+
186
+ assert_includes content, 'belongs_to :user',
187
+ 'Note should belong to user'
188
+
189
+ # In Mongoid, belongs_to is required by default unless optional: true
190
+ belongs_to_line = content[/belongs_to :user.*$/]
191
+ refute_includes belongs_to_line, 'optional: true',
192
+ 'User association should be required (not optional)'
193
+ end
194
+
195
+ def test_17_spec_always_creates_admin_user_first
196
+ content = File.read(NOTE_SPEC_PATH)
197
+
198
+ assert_includes content, 'let!(:admin_user)',
199
+ 'Spec should use let! to create admin_user before tests'
200
+
201
+ # Verify admin_user is created before any test runs
202
+ admin_user_def = content[/let!\(:admin_user\).*?\}/m]
203
+ assert_includes admin_user_def, 'User.create',
204
+ 'Should create User instance for admin_user'
205
+ end
206
+
207
+ def test_18_spec_uses_before_count_pattern
208
+ content = File.read(NOTE_SPEC_PATH)
209
+
210
+ # Verify the pattern used in specs
211
+ test_blocks = content.scan(/it '.*?' do.*?end/m)
212
+
213
+ valid_test_blocks = test_blocks.select { |block| block.include?('before_count') }
214
+
215
+ assert valid_test_blocks.any?,
216
+ 'At least one test should use before_count pattern'
217
+
218
+ valid_test_blocks.each do |block|
219
+ assert_includes block, 'before_count = Note.count',
220
+ 'Should capture count before operation'
221
+ assert_includes block, 'expect(Note.count)',
222
+ 'Should check count after operation'
223
+ end
224
+ end
225
+
226
+ def test_19_validations_cover_all_edge_cases
227
+ content = File.read(NOTE_SPEC_PATH)
228
+
229
+ # Verify spec covers key scenarios with user present
230
+ scenarios = [
231
+ 'valid with both title and body',
232
+ 'valid with only title',
233
+ 'invalid with only body',
234
+ 'invalid body length more than 1000',
235
+ 'auto fill from body'
236
+ ]
237
+
238
+ scenarios.each do |scenario|
239
+ assert_includes content, scenario,
240
+ "Spec should cover scenario: #{scenario}"
241
+ end
242
+ end
243
+
244
+ def test_20_ensure_title_method_is_private
245
+ content = File.read(NOTE_MODEL_PATH)
246
+
247
+ # Find the private keyword position
248
+ private_index = content.index('private')
249
+ ensure_method_index = content.index('def ensure_title_has_a_value')
250
+
251
+ refute_nil private_index, 'Model should have private section'
252
+ refute_nil ensure_method_index, 'Model should have ensure_title_has_a_value method'
253
+ assert ensure_method_index > private_index,
254
+ 'ensure_title_has_a_value should be in private section'
255
+ end
256
+
257
+ def test_21_model_uses_mongoid_document
258
+ content = File.read(NOTE_MODEL_PATH)
259
+
260
+ assert_includes content, 'include Mongoid::Document',
261
+ 'Note should include Mongoid::Document'
262
+ assert_includes content, 'include Mongoid::Timestamps',
263
+ 'Note should include Mongoid::Timestamps'
264
+ assert_includes content, 'include Mongoid::Attributes::Dynamic',
265
+ 'Note should include Dynamic attributes'
266
+ end
267
+
268
+ def test_22_fields_are_typed_correctly
269
+ content = File.read(NOTE_MODEL_PATH)
270
+
271
+ assert_includes content, 'field :title, type: String',
272
+ 'Title should be String type'
273
+ assert_includes content, 'field :body, type: String',
274
+ 'Body should be String type'
275
+ end
276
+
277
+ def test_23_validation_errors_are_descriptive
278
+ content = File.read(NOTE_MODEL_PATH)
279
+
280
+ # Check custom error messages exist
281
+ title_message = content[/validates :title.*?message: '([^']+)'/m, 1]
282
+ body_message = content[/validates :body.*?message: '([^']+)'/m, 1]
283
+
284
+ refute_nil title_message, 'Title validation should have custom message'
285
+ refute_nil body_message, 'Body validation should have custom message'
286
+
287
+ assert_includes title_message, '30',
288
+ 'Title message should mention character limit'
289
+ assert_includes body_message, '1000',
290
+ 'Body message should mention character limit'
291
+ end
292
+ end
@@ -0,0 +1,91 @@
1
+ #!/bin/bash
2
+ # Unit Test Runner for Jinda Gem
3
+ #
4
+ # This script runs all unit tests and provides a summary
5
+ # Usage: ./test/run_unit_tests.sh
6
+
7
+ set -e
8
+
9
+ JINDA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
10
+ cd "$JINDA_ROOT"
11
+
12
+ echo "=========================================="
13
+ echo "Jinda Gem Unit Tests"
14
+ echo "=========================================="
15
+ echo ""
16
+
17
+ TOTAL_TESTS=0
18
+ FAILED_TESTS=0
19
+ FAILED_FILES=()
20
+
21
+ # Function to run a test file
22
+ run_test() {
23
+ local test_file="$1"
24
+ local test_name="$2"
25
+
26
+ echo "Running: $test_name"
27
+ echo " File: $test_file"
28
+
29
+ if ruby "$test_file"; then
30
+ echo " ✓ PASSED"
31
+ echo ""
32
+ return 0
33
+ else
34
+ echo " ✗ FAILED"
35
+ echo ""
36
+ FAILED_TESTS=$((FAILED_TESTS + 1))
37
+ FAILED_FILES+=("$test_name")
38
+ return 1
39
+ fi
40
+ }
41
+
42
+ # Run static analysis tests (fast)
43
+ echo "--- Static Analysis Tests ---"
44
+ echo ""
45
+
46
+ run_test "test/jenkins_stage_test.rb" "Jenkins Stage Test"
47
+ run_test "test/note_model_test.rb" "Note Model Test"
48
+ run_test "test/api_notes_controller_test.rb" "API Notes Controller Test"
49
+ run_test "test/note_validation_integration_test.rb" "Note Validation Integration Test"
50
+
51
+ TOTAL_TESTS=4
52
+
53
+ # Optionally run integration tests (slow)
54
+ if [ "$RUN_INTEGRATION_TESTS" = "true" ]; then
55
+ echo "--- Integration Tests (Slow) ---"
56
+ echo ""
57
+ echo "Note: Integration tests require MongoDB running on port ${MONGODB_PORT:-27017}"
58
+ echo ""
59
+
60
+ if run_test "test/generated_app_test.rb" "Generated App Test"; then
61
+ TOTAL_TESTS=$((TOTAL_TESTS + 1))
62
+ else
63
+ TOTAL_TESTS=$((TOTAL_TESTS + 1))
64
+ fi
65
+ else
66
+ echo "--- Integration Tests ---"
67
+ echo "Skipped (set RUN_INTEGRATION_TESTS=true to run)"
68
+ echo ""
69
+ fi
70
+
71
+ # Summary
72
+ echo "=========================================="
73
+ echo "Test Summary"
74
+ echo "=========================================="
75
+ echo "Total test suites: $TOTAL_TESTS"
76
+ echo "Passed: $((TOTAL_TESTS - FAILED_TESTS))"
77
+ echo "Failed: $FAILED_TESTS"
78
+ echo ""
79
+
80
+ if [ $FAILED_TESTS -gt 0 ]; then
81
+ echo "Failed test suites:"
82
+ for test in "${FAILED_FILES[@]}"; do
83
+ echo " - $test"
84
+ done
85
+ echo ""
86
+ exit 1
87
+ else
88
+ echo "✓ All tests passed!"
89
+ echo ""
90
+ exit 0
91
+ fi
data/test/test_helper.rb CHANGED
@@ -1,19 +1,11 @@
1
- # Configure Rails Environment
2
- ENV["RAILS_ENV"] = "test"
1
+ # frozen_string_literal: true
3
2
 
4
- require_relative "../test/dummy/config/environment"
5
- ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)]
6
- ActiveRecord::Migrator.migrations_paths << File.expand_path('../db/migrate', __dir__)
7
- require "rails/test_help"
3
+ $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
8
4
 
9
- # Filter out the backtrace from minitest while preserving the one from other libraries.
10
- Minitest.backtrace_filter = Minitest::BacktraceFilter.new
5
+ require 'minitest/autorun'
6
+ require 'minitest/reporters'
11
7
 
12
-
13
- # Load fixtures from the engine
14
- if ActiveSupport::TestCase.respond_to?(:fixture_path=)
15
- ActiveSupport::TestCase.fixture_path = File.expand_path("fixtures", __dir__)
16
- ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
17
- ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
18
- ActiveSupport::TestCase.fixtures :all
19
- end
8
+ # Use spec reporter for better output
9
+ Minitest::Reporters.use! [
10
+ Minitest::Reporters::SpecReporter.new(color: true)
11
+ ]