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,412 @@
1
+ # Jinda Test Infrastructure Summary
2
+
3
+ ## Overview
4
+
5
+ The Jinda gem now has a comprehensive test infrastructure that works both **locally** during development and in **CI** environments.
6
+
7
+ ### Key Principle
8
+ **Tests work the same way locally and in CI** - both use Rake tasks, making local testing match CI exactly.
9
+
10
+ ## Architecture
11
+
12
+ ```
13
+ ┌─────────────────────────────────────────┐
14
+ │ Rake Tasks (Rakefile) │
15
+ │ - Modular test groups │
16
+ │ - Can run individually or together │
17
+ │ - Same interface for local and CI │
18
+ └─────────────────────────────────────────┘
19
+
20
+ ┌───────────┴───────────┐
21
+ │ │
22
+ ┌───────▼────────┐ ┌────────▼──────────┐
23
+ │ Local Testing │ │ CI (Jenkins) │
24
+ │ │ │ │
25
+ │ - test/dummy │ │ - Parallel stages │
26
+ │ - Quick iters │ │ - Rake tasks │
27
+ │ - Manual test │ │ - Artifacts │
28
+ └────────────────┘ └────────────────────┘
29
+ ```
30
+
31
+ ## File Structure
32
+
33
+ ```
34
+ jinda/
35
+ ├── Rakefile # ✨ Enhanced with test groups
36
+ ├── ci/
37
+ │ ├── Jenkinsfile # Original (complex)
38
+ │ └── Jenkinsfile.simple # ✨ NEW: Simple, Rake-based
39
+ ├── test/
40
+ │ ├── jenkins_stage_test.rb # ✨ NEW: Tests Jenkinsfile
41
+ │ ├── note_model_test.rb # ✨ NEW: Tests Note model
42
+ │ ├── api_notes_controller_test.rb # ✨ NEW: Tests API filtering
43
+ │ ├── note_validation_integration_test.rb # ✨ NEW: Tests validations
44
+ │ ├── installation_test.rb # Existing: Full install flow
45
+ │ ├── integration_test.rb # Existing: HTTP/login tests
46
+ │ ├── generated_app_test.rb # ✨ NEW: Tests generated apps
47
+ │ ├── UNIT_TESTS_README.md # ✨ NEW: Unit test documentation
48
+ │ ├── LOCAL_DEVELOPMENT.md # ✨ NEW: Local workflow guide
49
+ │ ├── TEST_INFRASTRUCTURE.md # ✨ NEW: This file
50
+ │ ├── run_unit_tests.sh # ✨ NEW: Simple test runner
51
+ │ └── dummy/ # Created locally (not in git)
52
+ │ └── [Rails app for testing] # Regenerated by generator
53
+ ```
54
+
55
+ ## Test Categories
56
+
57
+ ### 1. Unit Tests (Fast - ~2 seconds)
58
+ **Command**: `rake test:unit`
59
+
60
+ **Files**:
61
+ - `jenkins_stage_test.rb` - Verify Jenkinsfile structure
62
+ - `note_model_test.rb` - Verify Note model templates
63
+ - `api_notes_controller_test.rb` - Verify API controller filtering
64
+ - `note_validation_integration_test.rb` - Verify validation logic
65
+
66
+ **Purpose**: Static analysis of gem templates, no app generation
67
+
68
+ ### 2. Installation Tests (Slow - ~2-3 min)
69
+ **Command**: `rake test:installation`
70
+
71
+ **File**: `installation_test.rb`
72
+
73
+ **Purpose**: Generate full Rails app, test installation flow
74
+
75
+ ### 3. Integration Tests (Slow - ~2-3 min)
76
+ **Command**: `rake test:integration`
77
+
78
+ **File**: `integration_test.rb`
79
+
80
+ **Purpose**: Test HTTP endpoints, login, in generated app
81
+
82
+ ### 4. Generated App Tests (Manual)
83
+ **Command**: `rake test:generated_app`
84
+
85
+ **Location**: `test/dummy/`
86
+
87
+ **Purpose**: Run tests **inside** the generated app itself
88
+
89
+ ## Rake Tasks
90
+
91
+ ### Quick Reference
92
+ ```bash
93
+ # Fast feedback (2 seconds)
94
+ rake test:unit
95
+
96
+ # Complete gem tests
97
+ rake test:gem # unit + installation
98
+
99
+ # Full test suite
100
+ rake test:all # unit + installation + integration
101
+
102
+ # Individual tests
103
+ rake test:installation
104
+ rake test:integration
105
+ rake test:generated_app # Only if test/dummy exists
106
+ ```
107
+
108
+ ### Task Definitions (Rakefile)
109
+
110
+ ```ruby
111
+ namespace :test do
112
+ task :unit # Fast static analysis
113
+ task :installation # Generate and test app
114
+ task :integration # HTTP/login tests
115
+ task :generated_app # Run tests in test/dummy
116
+ task :gem # unit + installation
117
+ task :all # Everything
118
+ end
119
+ ```
120
+
121
+ ## CI Integration
122
+
123
+ ### Jenkins (Simplified)
124
+
125
+ **File**: `ci/Jenkinsfile.simple`
126
+
127
+ **Structure**:
128
+ ```groovy
129
+ stage('Tests') {
130
+ parallel {
131
+ stage('RuboCop') { sh 'bundle exec rake rubocop' }
132
+ stage('Unit Tests') { sh 'bundle exec rake test:unit' }
133
+ }
134
+ }
135
+ stage('Installation Tests') { sh 'bundle exec rake test:installation' }
136
+ stage('Integration Tests') { sh 'bundle exec rake test:integration' }
137
+ ```
138
+
139
+ **Key Points**:
140
+ - Uses same Rake tasks as local development
141
+ - Parallel execution for speed
142
+ - Simple stage definitions
143
+ - Follows pattern from ~/jenkins/template.txt
144
+
145
+ ### Migration Path
146
+
147
+ 1. **Current**: Use existing `ci/Jenkinsfile` (works fine)
148
+ 2. **Future**: Switch to `ci/Jenkinsfile.simple` when ready
149
+ 3. **Both**: Can coexist during transition
150
+
151
+ ## Local Development Workflow
152
+
153
+ ### Option A: Quick Iteration (No test/dummy)
154
+ ```bash
155
+ # 1. Edit gem templates
156
+ vim lib/generators/jinda/templates/app/models/note.rb
157
+
158
+ # 2. Run unit tests (fast)
159
+ rake test:unit
160
+
161
+ # 3. If pass, run installation test
162
+ rake test:installation
163
+
164
+ # 4. Push to GitHub
165
+ git push
166
+ ```
167
+
168
+ ### Option B: Full Testing (With test/dummy)
169
+ ```bash
170
+ # 1. Create test/dummy
171
+ cd test
172
+ rails new dummy -BOTJ
173
+ cd dummy
174
+ echo "gem 'jinda', path: '../../'" >> Gemfile
175
+ bundle install
176
+ rails g jinda:install
177
+ bundle install
178
+ rails g jinda:config
179
+ bundle install
180
+ cd ../..
181
+
182
+ # 2. Edit and test
183
+ vim lib/generators/jinda/templates/app/models/note.rb
184
+ rake test:unit
185
+
186
+ # 3. Test in dummy
187
+ cd test/dummy
188
+ rails s # Manual testing
189
+ cd ../..
190
+
191
+ # 4. Full test suite
192
+ rake test:all
193
+
194
+ # 5. Push
195
+ git push
196
+ ```
197
+
198
+ ### Option C: Minimal (Just unit tests)
199
+ ```bash
200
+ # For template-only changes
201
+ rake test:unit
202
+ git push
203
+ # Let CI run full tests
204
+ ```
205
+
206
+ ## test/dummy vs CI Test Apps
207
+
208
+ ### test/dummy (Local)
209
+ - **Created**: Manually by developer
210
+ - **Location**: `test/dummy/`
211
+ - **Purpose**: Interactive development, manual testing
212
+ - **Lifecycle**: Regenerated when needed
213
+ - **Git**: NOT committed (.gitignore)
214
+
215
+ ### CI Test Apps
216
+ - **Created**: Automatically by `installation_test.rb`
217
+ - **Location**: `tmp/jinda_tests/jinda_test_<timestamp>`
218
+ - **Purpose**: Automated testing in CI
219
+ - **Lifecycle**: Cleaned up after tests
220
+ - **Git**: Never committed
221
+
222
+ ### Why Both?
223
+
224
+ | Need | Use |
225
+ |------|-----|
226
+ | Quick template changes | Unit tests only |
227
+ | Interactive testing | test/dummy |
228
+ | Full validation | installation + integration tests |
229
+ | CI testing | Automated test apps |
230
+
231
+ ## Best Practices
232
+
233
+ ### Before Every Commit
234
+ ```bash
235
+ rake test:unit # Takes 2 seconds, catches template issues
236
+ ```
237
+
238
+ ### Before Every Push
239
+ ```bash
240
+ rake test:gem # unit + installation, full validation
241
+ ```
242
+
243
+ ### Before Release
244
+ ```bash
245
+ rake test:all # Everything including integration
246
+ ```
247
+
248
+ ### During Active Development
249
+ - Keep `test/dummy` updated
250
+ - Run `rake test:unit` frequently
251
+ - Regenerate `test/dummy` after generator changes
252
+
253
+ ## Environment Variables
254
+
255
+ ### All Tests
256
+ ```bash
257
+ MONGODB_PORT=27888 rake test:installation # Custom MongoDB port
258
+ SKIP_CLEANUP=true rake test:installation # Keep test artifacts
259
+ TEST_DIR=/tmp/tests rake test:installation # Custom test location
260
+ ```
261
+
262
+ ### Test-Specific
263
+ ```bash
264
+ # Installation test
265
+ JINDA_GEM_SOURCE=git rake test:installation # Test with git version
266
+ JINDA_GIT_BRANCH=main rake test:installation # Test specific branch
267
+
268
+ # Integration test
269
+ TEST_PORT=3001 rake test:integration # Custom HTTP port
270
+ KEEP_SERVER=true rake test:integration # Keep server running
271
+ ```
272
+
273
+ ## Comparison: Before vs After
274
+
275
+ ### Before (No Unit Tests)
276
+ ```bash
277
+ # Developer workflow
278
+ 1. Edit template
279
+ 2. Wait 3+ minutes for full test suite
280
+ 3. Fix issues
281
+ 4. Repeat
282
+ ```
283
+
284
+ ### After (With Unit Tests)
285
+ ```bash
286
+ # Developer workflow
287
+ 1. Edit template
288
+ 2. Run unit tests (2 seconds) ← NEW
289
+ 3. Fix obvious issues immediately
290
+ 4. Run full tests when confident
291
+ 5. Much faster iteration
292
+ ```
293
+
294
+ ### CI Improvements
295
+ ```bash
296
+ # Before: Monolithic stages
297
+ - All tests run sequentially
298
+ - No parallelization
299
+ - Hard to identify failure points
300
+
301
+ # After: Modular stages
302
+ - Unit tests run in parallel with RuboCop
303
+ - Clear stage separation
304
+ - Easy to see which stage failed
305
+ ```
306
+
307
+ ## Coverage
308
+
309
+ ### Test Coverage by Category
310
+
311
+ | Category | Files Tested | Tests | Assertions | Runtime |
312
+ |----------|--------------|-------|------------|---------|
313
+ | Unit Tests | 4 files | 83 | 313 | ~2s |
314
+ | Installation | 1 file | 12 | ~40 | ~2-3min |
315
+ | Integration | 1 file | 12 | ~35 | ~2-3min |
316
+ | **Total** | **6 files** | **107** | **~388** | **~5min** |
317
+
318
+ ### What's Tested
319
+
320
+ ✅ Jenkinsfile structure and stages
321
+ ✅ Note model templates and validations
322
+ ✅ API controller filtering by user
323
+ ✅ User association requirements
324
+ ✅ Full installation flow
325
+ ✅ Server startup
326
+ ✅ HTTP endpoints
327
+ ✅ Authentication and login
328
+ ✅ MongoDB connectivity
329
+
330
+ ## Future Enhancements
331
+
332
+ ### Short Term
333
+ 1. Add rake task to sync test/dummy → templates
334
+ 2. Add more unit tests for other models
335
+ 3. Add RSpec template tests
336
+
337
+ ### Medium Term
338
+ 1. Parallel test execution locally
339
+ 2. Test coverage reporting
340
+ 3. Performance benchmarks
341
+
342
+ ### Long Term
343
+ 1. Automated template sync
344
+ 2. Visual regression testing
345
+ 3. Load testing for generated apps
346
+
347
+ ## Troubleshooting
348
+
349
+ ### Common Issues
350
+
351
+ **MongoDB not running**:
352
+ ```bash
353
+ docker run -d -p 27017:27017 mongo
354
+ ```
355
+
356
+ **Port conflict**:
357
+ ```bash
358
+ lsof -i :3000
359
+ kill -9 <PID>
360
+ ```
361
+
362
+ **Stale test/dummy**:
363
+ ```bash
364
+ cd test && rm -rf dummy
365
+ # Recreate fresh
366
+ ```
367
+
368
+ **Bundle issues**:
369
+ ```bash
370
+ bundle clean --force
371
+ bundle install
372
+ ```
373
+
374
+ ## Documentation
375
+
376
+ - `test/UNIT_TESTS_README.md` - Detailed unit test documentation
377
+ - `test/LOCAL_DEVELOPMENT.md` - Local development guide
378
+ - `ci/Jenkinsfile.simple` - Simplified CI configuration
379
+ - `Rakefile` - Test task definitions
380
+
381
+ ## Migration Guide
382
+
383
+ ### From Old CI to New CI
384
+
385
+ 1. **Test locally first**:
386
+ ```bash
387
+ rake test:all # Verify all tests pass
388
+ ```
389
+
390
+ 2. **Update Jenkinsfile** (when ready):
391
+ ```bash
392
+ mv ci/Jenkinsfile ci/Jenkinsfile.old
393
+ mv ci/Jenkinsfile.simple ci/Jenkinsfile
394
+ ```
395
+
396
+ 3. **Verify CI**:
397
+ - Push to branch
398
+ - Verify Jenkins runs correctly
399
+ - Compare timing with old pipeline
400
+
401
+ 4. **Rollback if needed**:
402
+ ```bash
403
+ mv ci/Jenkinsfile ci/Jenkinsfile.simple
404
+ mv ci/Jenkinsfile.old ci/Jenkinsfile
405
+ ```
406
+
407
+ ---
408
+
409
+ **Created**: 2026-01-04
410
+ **Ruby Version**: 3.3.x
411
+ **Rails Version**: 7.0+
412
+ **Test Framework**: Minitest
@@ -0,0 +1,205 @@
1
+ # test_jinda_installation.sh - Fixes Applied
2
+
3
+ ## Issues Fixed
4
+
5
+ ### 1. ✅ Interactive Prompts (Conflict Issue)
6
+ **Problem**: `rails generate` commands prompted for user input (overwrite files? Y/N)
7
+
8
+ **Solution**: Added `--force --quiet` flags
9
+ ```bash
10
+ # Before:
11
+ rails generate jinda:install
12
+
13
+ # After:
14
+ rails generate jinda:install --force --quiet
15
+ ```
16
+
17
+ ### 2. ✅ MongoDB Conflicts
18
+ **Problem**: Script didn't handle existing MongoDB containers or port conflicts
19
+
20
+ **Solution**: Intelligent MongoDB detection
21
+ ```bash
22
+ 1. Find existing MongoDB container → Use it
23
+ 2. Check if port in use → Use existing MongoDB
24
+ 3. No MongoDB found → Start new container with unique name
25
+ 4. Cleanup → Only stop container if we created it
26
+ ```
27
+
28
+ ### 3. ✅ MongoDB Auto-Start
29
+ **Problem**: Required manual MongoDB start before running script
30
+
31
+ **Solution**: Script now handles MongoDB automatically
32
+ - Detects existing MongoDB (any container with "mongo" in name)
33
+ - Uses existing container's port
34
+ - Starts new container only if needed
35
+ - Unique container names to avoid conflicts: `jinda_test_mongodb_${TEST_APP_NAME}`
36
+
37
+ ### 4. ✅ Output Noise
38
+ **Problem**: Too much output made it hard to see what's happening
39
+
40
+ **Solution**: Quieter output with status messages
41
+ ```bash
42
+ bundle install > /dev/null 2>&1 # Quiet unless error
43
+ print_info "Installing gems (this may take a minute)..."
44
+ ```
45
+
46
+ ## How It Works Now
47
+
48
+ ### MongoDB Detection Logic
49
+
50
+ ```bash
51
+ # Step 1: Check for existing MongoDB container
52
+ EXISTING_MONGO=$(docker ps --format '{{.Names}}' | grep mongo | head -1)
53
+
54
+ if [ found ]; then
55
+ → Use existing container
56
+ → Detect its port
57
+ → Skip cleanup (don't stop it)
58
+ else
59
+ # Step 2: Check if port in use
60
+ if port_in_use; then
61
+ → Use non-Docker MongoDB
62
+ else
63
+ # Step 3: Start new container
64
+ → docker run with unique name
65
+ → Set NEW_MONGO_CONTAINER flag
66
+ → Cleanup will stop this container
67
+ fi
68
+ fi
69
+ ```
70
+
71
+ ### Generator Commands
72
+
73
+ ```bash
74
+ # Non-interactive mode
75
+ rails generate jinda:install --force --quiet
76
+ rails generate jinda:config --force --quiet
77
+
78
+ # If error occurs, re-run with output for debugging
79
+ if [ $? -ne 0 ]; then
80
+ rails generate jinda:install # Show errors
81
+ fi
82
+ ```
83
+
84
+ ## Usage
85
+
86
+ ### Basic Usage
87
+ ```bash
88
+ # Uses existing MongoDB or starts new one
89
+ ./test_jinda_installation.sh
90
+ ```
91
+
92
+ ### Keep Test Files
93
+ ```bash
94
+ # Don't cleanup after test
95
+ SKIP_CLEANUP=true ./test_jinda_installation.sh
96
+ ```
97
+
98
+ ### Custom MongoDB Port
99
+ ```bash
100
+ # Use specific port (only if starting new container)
101
+ MONGODB_PORT=27999 ./test_jinda_installation.sh
102
+ ```
103
+
104
+ ## Benefits
105
+
106
+ ### ✅ No More Conflicts
107
+ - Uses existing MongoDB if available
108
+ - Creates unique container names
109
+ - Doesn't interfere with development MongoDB
110
+
111
+ ### ✅ Works During Development
112
+ - Safe to run while your dev MongoDB is running
113
+ - Won't stop your development containers
114
+ - Won't conflict with ports
115
+
116
+ ### ✅ Works in CI
117
+ - Starts MongoDB automatically if not present
118
+ - Cleans up containers it creates
119
+ - Deterministic behavior
120
+
121
+ ### ✅ No Manual Steps
122
+ - No need to start MongoDB first
123
+ - No prompts to answer
124
+ - Fully automated
125
+
126
+ ## Output Example
127
+
128
+ ```
129
+ ==========================================
130
+ Jinda Gem Installation Test Suite
131
+ ==========================================
132
+
133
+ Test 1: Checking prerequisites...
134
+ -----------------------------------
135
+ [i] Checking MongoDB setup...
136
+ [✓] Using existing MongoDB container: mongodb
137
+ [✓] MongoDB running on port: 27017
138
+ [✓] Ruby version: 3.3.0
139
+ [✓] Rails version: 7.1.0
140
+
141
+ Test 2: Creating new Rails application...
142
+ -----------------------------------
143
+ [i] Creating Rails app (this may take a minute)...
144
+ [✓] Rails app created: jinda_test_app_1736028592
145
+
146
+ Test 3: Adding Jinda gem to Gemfile...
147
+ -----------------------------------
148
+ [✓] Jinda gem added to Gemfile
149
+
150
+ Test 4: Running bundle install...
151
+ -----------------------------------
152
+ [i] Installing gems (this may take a minute)...
153
+ [✓] Bundle install successful
154
+ [✓] Jinda gem is available in bundle
155
+
156
+ Test 5: Running rails generate jinda:install...
157
+ -----------------------------------
158
+ [i] Running generator (auto-accepting prompts)...
159
+ [✓] jinda:install generator completed
160
+
161
+ ...
162
+ ```
163
+
164
+ ## Comparison
165
+
166
+ ### Before (Had Issues)
167
+ ```bash
168
+ # Manual steps required:
169
+ 1. Start MongoDB manually
170
+ 2. Run script
171
+ 3. Answer Y/N prompts during generators
172
+ 4. Hope port doesn't conflict
173
+ 5. Manually cleanup MongoDB if needed
174
+ ```
175
+
176
+ ### After (Fixed)
177
+ ```bash
178
+ # Just run:
179
+ ./test_jinda_installation.sh
180
+
181
+ # Everything is automatic:
182
+ ✅ MongoDB detection/start
183
+ ✅ No prompts
184
+ ✅ No conflicts
185
+ ✅ Auto cleanup
186
+ ```
187
+
188
+ ## Environment Variables
189
+
190
+ | Variable | Default | Purpose |
191
+ |----------|---------|---------|
192
+ | `SKIP_CLEANUP` | `false` | Keep test files and containers |
193
+ | `MONGODB_PORT` | `27888` | Port for new MongoDB (if started) |
194
+ | `JINDA_GEM_PATH` | `$HOME/mygem/jinda` | Path to Jinda gem |
195
+
196
+ ## Related Files
197
+
198
+ - `test_jinda_installation.sh` - This script (fixed)
199
+ - `test/installation_test.rb` - Ruby minitest version
200
+ - `test/LOCAL_DEVELOPMENT.md` - Development testing guide
201
+
202
+ ---
203
+
204
+ **Fixed**: 2026-01-04
205
+ **Issues Resolved**: Interactive prompts, MongoDB conflicts, auto-start MongoDB