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,368 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "fileutils"
5
+ require "open3"
6
+ require "timeout"
7
+ require "socket"
8
+
9
+ # Test suite for Jinda gem installation process
10
+ #
11
+ # Usage:
12
+ # Test with local gem:
13
+ # ruby test/installation_test.rb
14
+ #
15
+ # Test with remote git repository (default branch):
16
+ # JINDA_GEM_SOURCE=git ruby test/installation_test.rb
17
+ #
18
+ # Test with remote git repository (specific branch):
19
+ # JINDA_GEM_SOURCE=git JINDA_GIT_BRANCH=main ruby test/installation_test.rb
20
+ #
21
+ # Test with custom git URL:
22
+ # JINDA_GEM_SOURCE=git JINDA_GIT_URL=https://github.com/user/fork.git ruby test/installation_test.rb
23
+ #
24
+ # Skip cleanup after tests (for debugging):
25
+ # SKIP_CLEANUP=true ruby test/installation_test.rb
26
+ #
27
+ # Use custom MongoDB port:
28
+ # MONGODB_PORT=27017 ruby test/installation_test.rb
29
+ # rubocop:disable Style/ClassVars
30
+ class JindaInstallationTest < Minitest::Test
31
+ # Make tests run in order - these tests are order-dependent by design
32
+ # as they test a sequential installation workflow
33
+ i_suck_and_my_tests_are_order_dependent!
34
+
35
+ def self.test_order
36
+ :alpha
37
+ end
38
+
39
+ JINDA_GEM_PATH = File.expand_path("..", __dir__)
40
+ TEST_DIR = ENV.fetch("TEST_DIR", File.join(Dir.pwd, "tmp", "jinda_tests"))
41
+ MONGODB_PORT = ENV.fetch("MONGODB_PORT", "27017")
42
+ TEST_APP_NAME = "jinda_test_#{Time.now.to_i}".freeze
43
+
44
+ # Gem source configuration
45
+ # Set JINDA_GEM_SOURCE env var to:
46
+ # - 'local' (default): use local path
47
+ # - 'git': use git repository with optional branch/tag
48
+ # Set JINDA_GIT_URL env var for custom git URL (default: https://github.com/kul1/jinda.git)
49
+ # Set JINDA_GIT_BRANCH env var for specific branch/tag (optional)
50
+ JINDA_GEM_SOURCE = ENV.fetch("JINDA_GEM_SOURCE", "local")
51
+ JINDA_GIT_URL = ENV.fetch("JINDA_GIT_URL", "https://github.com/kul1/jinda.git")
52
+ JINDA_GIT_BRANCH = ENV.fetch("JINDA_GIT_BRANCH", nil)
53
+
54
+ # Class variable to maintain test app path across all tests
55
+ @@test_app_path = nil
56
+ @@app_created = false
57
+
58
+ def setup
59
+ @@test_app_path ||= File.join(TEST_DIR, TEST_APP_NAME)
60
+ @test_app_path = @@test_app_path
61
+ FileUtils.mkdir_p(TEST_DIR)
62
+ end
63
+
64
+ def teardown
65
+ # Only cleanup after the last test
66
+ nil if ENV["SKIP_CLEANUP"] == "true"
67
+ # Clean up is handled by test runner end
68
+ end
69
+
70
+ # Cleanup after all tests complete
71
+ Minitest.after_run do
72
+ return if ENV["SKIP_CLEANUP"] == "true"
73
+
74
+ FileUtils.rm_rf(@@test_app_path) if @@test_app_path && File.exist?(@@test_app_path)
75
+ end
76
+
77
+ def test_01_prerequisites
78
+ # Display test configuration
79
+ puts "\n=== Jinda Installation Test Configuration ==="
80
+ puts "Gem source: #{JINDA_GEM_SOURCE}"
81
+ if JINDA_GEM_SOURCE == "git"
82
+ puts "Git URL: #{JINDA_GIT_URL}"
83
+ puts "Git branch: #{JINDA_GIT_BRANCH || 'default'}" if JINDA_GIT_BRANCH
84
+ else
85
+ puts "Local path: #{JINDA_GEM_PATH}"
86
+ end
87
+ puts "Test directory: #{TEST_DIR}"
88
+ puts "MongoDB port: #{MONGODB_PORT}"
89
+ puts "==========================================\n\n"
90
+
91
+ # Check Ruby version
92
+ ruby_version = RUBY_VERSION
93
+
94
+ assert ruby_version.start_with?("3.3."), "Expected Ruby 3.3.x, got #{ruby_version}"
95
+
96
+ # Check Rails
97
+ _, stderr, status = Open3.capture3("rails", "-v")
98
+
99
+ assert_predicate status, :success?, "Rails not found: #{stderr}"
100
+
101
+ # Check MongoDB (Docker or local)
102
+ stdout, = Open3.capture3("docker ps | grep mongo || echo 'no_docker'")
103
+
104
+ skip unless stdout.include?("no_docker")
105
+
106
+ skip "MongoDB container not running - start with: docker run -d -p #{MONGODB_PORT}:27017 mongo"
107
+ end
108
+
109
+ def test_02_create_rails_app
110
+ Dir.chdir(TEST_DIR) do
111
+ _, stderr, status = Open3.capture3(
112
+ "rails", "new", TEST_APP_NAME,
113
+ "--skip-test", "--skip-bundle", "--skip-active-record"
114
+ )
115
+
116
+ assert_predicate status, :success?, "Rails app creation failed: #{stderr}"
117
+ assert File.directory?(@test_app_path), "App directory not created"
118
+ assert_path_exists File.join(@test_app_path, "Gemfile"), "Gemfile not found"
119
+ @@app_created = true
120
+ end
121
+ end
122
+
123
+ def test_03_add_jinda_to_gemfile
124
+ skip "App not created yet" unless @@app_created
125
+
126
+ gemfile_path = File.join(@test_app_path, "Gemfile")
127
+ File.open(gemfile_path, "a") do |f|
128
+ case JINDA_GEM_SOURCE
129
+ when "git"
130
+ if JINDA_GIT_BRANCH
131
+ f.puts "gem 'jinda', git: '#{JINDA_GIT_URL}', branch: '#{JINDA_GIT_BRANCH}'"
132
+ else
133
+ f.puts "gem 'jinda', git: '#{JINDA_GIT_URL}'"
134
+ end
135
+ else # 'local' or default
136
+ f.puts "gem 'jinda', path: '#{JINDA_GEM_PATH}'"
137
+ end
138
+ end
139
+
140
+ gemfile_content = File.read(gemfile_path)
141
+
142
+ assert_includes gemfile_content, "gem 'jinda'", "Jinda gem not added to Gemfile"
143
+ end
144
+
145
+ def test_04_bundle_install_initial
146
+ skip "App not created yet" unless @@app_created
147
+
148
+ Dir.chdir(@test_app_path) do
149
+ stdout, stderr, status = Open3.capture3("bundle install")
150
+
151
+ assert_predicate status, :success?, "Bundle install failed: #{stderr}\n#{stdout}"
152
+
153
+ stdout, = Open3.capture3("bundle show jinda")
154
+
155
+ assert_includes stdout, "jinda", "Jinda gem not found in bundle"
156
+ end
157
+ end
158
+
159
+ def test_05_jinda_install_generator
160
+ skip "App not created yet" unless @@app_created
161
+
162
+ Dir.chdir(@test_app_path) do
163
+ stdout, stderr, status = Open3.capture3("rails generate jinda:install")
164
+
165
+ assert_predicate status, :success?, "jinda:install generator failed: #{stderr}\n#{stdout}"
166
+
167
+ # Check key files were created
168
+ assert_path_exists "app/controllers/admins_controller.rb", "admins_controller not created"
169
+ assert_path_exists "app/models/user.rb", "User model not created"
170
+ assert_path_exists "app/views/jinda/index.html.haml", "Jinda index view not created"
171
+ end
172
+ end
173
+
174
+ def test_06_bundle_install_post_generator
175
+ skip "App not created yet" unless @@app_created
176
+
177
+ Dir.chdir(@test_app_path) do
178
+ # Create dummy jindalte files for test (satisfy requires without theme gem)
179
+ File.write("app/assets/stylesheets/jindalte.css", "/* Dummy jindalte.css for test - install jinda_adminlte for real theme */")
180
+ puts "Created dummy app/assets/stylesheets/jindalte.css for test"
181
+ File.write("app/assets/javascripts/jindalte.js", "// Dummy jindalte.js for test - install jinda_adminlte for real theme")
182
+ puts "Created dummy app/assets/javascripts/jindalte.js for test"
183
+
184
+ _, stderr, status = Open3.capture3("bundle install")
185
+
186
+ assert_predicate status, :success?, "Post-generator bundle install failed: #{stderr}"
187
+ end
188
+ end
189
+
190
+ def test_07_jinda_config_generator
191
+ skip "App not created yet" unless @@app_created
192
+
193
+ Dir.chdir(@test_app_path) do
194
+ stdout, stderr, status = Open3.capture3("rails generate jinda:config")
195
+
196
+ assert_predicate status, :success?, "jinda:config generator failed: #{stderr}\n#{stdout}"
197
+
198
+ assert_path_exists "config/mongoid.yml", "mongoid.yml not created"
199
+ assert_path_exists "config/initializers/omniauth.rb", "omniauth.rb not created"
200
+ assert_path_exists "config/initializers/jinda.rb", "jinda.rb not created"
201
+ end
202
+ end
203
+
204
+ def test_08_update_mongodb_config
205
+ skip "App not created yet" unless @@app_created
206
+
207
+ mongoid_config = File.join(@test_app_path, "config/mongoid.yml")
208
+ content = File.read(mongoid_config)
209
+ updated_content = content.gsub("localhost:27017", "localhost:#{MONGODB_PORT}")
210
+ File.write(mongoid_config, updated_content)
211
+
212
+ assert_includes File.read(mongoid_config), "localhost:#{MONGODB_PORT}",
213
+ "MongoDB config not updated"
214
+ end
215
+
216
+ def test_09_jinda_seed
217
+ skip "App not created yet" unless @@app_created
218
+
219
+ Dir.chdir(@test_app_path) do
220
+ stdout, stderr, status = Open3.capture3("rails jinda:seed")
221
+
222
+ assert_predicate status, :success?, "jinda:seed failed: #{stderr}\n#{stdout}"
223
+
224
+ # Run jinda:update to generate menu from mindmap
225
+ stdout, stderr, status = Open3.capture3("rails jinda:update")
226
+
227
+ assert_predicate status, :success?, "jinda:update failed: #{stderr}n#{stdout}"
228
+ end
229
+ end
230
+
231
+ def test_10_rails_environment_loads
232
+ skip "App not created yet" unless @@app_created
233
+
234
+ Dir.chdir(@test_app_path) do
235
+ stdout, stderr, status = Open3.capture3(
236
+ "bundle", "exec", "rails", "runner",
237
+ 'puts "Environment loaded: #{Rails.env}"'
238
+ )
239
+
240
+ assert_predicate status, :success?, "Rails environment failed to load: #{stderr}"
241
+ assert_includes stdout, "Environment loaded", "Rails environment not properly initialized"
242
+ end
243
+ end
244
+
245
+ def test_11_rails_server_starts_and_responds
246
+ skip "App not created yet" unless @@app_created
247
+
248
+ Dir.chdir(@test_app_path) do
249
+ # Fix asset files to comment out jindalte requires for test (theme optional) - redo just before server start
250
+ %w[.css .scss].each do |ext|
251
+ asset_file = "app/assets/stylesheets/application#{ext}"
252
+ if File.exist?(asset_file)
253
+ content = File.read(asset_file)
254
+ # Broader match to ensure commenting
255
+ content.gsub!(/^\s*(\*=\s*require\s+jindalte(?:\.css)?\s*)$/, '# \1')
256
+ File.write(asset_file, content)
257
+ puts "Commented jindalte require in #{asset_file}"
258
+ end
259
+ end
260
+
261
+ %w[.js .coffee].each do |ext|
262
+ asset_file = "app/assets/javascripts/application#{ext}"
263
+ if File.exist?(asset_file)
264
+ content = File.read(asset_file)
265
+ # Broader match for JS
266
+ content.gsub!(/^(\s*\/\/=\s*require\s+jindalte(?:\.js)?\s*)$/, '# \1')
267
+ File.write(asset_file, content)
268
+ puts "Commented jindalte require in #{asset_file}"
269
+ end
270
+ end
271
+
272
+ # Find available port
273
+ port = nil
274
+ (3001..4000).each do |candidate_port|
275
+ begin
276
+ server = TCPServer.new('127.0.0.1', candidate_port)
277
+ server.close
278
+ port = candidate_port
279
+ break
280
+ rescue Errno::EADDRINUSE
281
+ # Port in use, try next
282
+ end
283
+ end
284
+ raise "No available port found between 3001 and 4000" unless port
285
+ puts "Using available port: #{port}"
286
+
287
+ # Ensure log directory exists
288
+ FileUtils.mkdir_p("log")
289
+
290
+ # Start server in background, redirect to logs
291
+ pid = spawn("bundle exec rails server -p #{port}",
292
+ out: "log/server.out",
293
+ err: "log/server.err")
294
+ Process.detach(pid)
295
+
296
+ # Wait for server to start
297
+ server_started = false
298
+ Timeout.timeout(30) do
299
+ loop do
300
+ stdout, = Open3.capture3("lsof -i :#{port}")
301
+ if stdout.include?("ruby")
302
+ server_started = true
303
+ break
304
+ end
305
+ sleep 1
306
+ end
307
+ end
308
+
309
+ assert server_started, "Rails server did not start within 30 seconds"
310
+
311
+ # Give extra time for full boot
312
+ sleep 5
313
+
314
+ # Test HTTP response for /jinda
315
+ # rubocop:disable Style/FormatStringToken
316
+ stdout, = Open3.capture3("curl -s -o /dev/null -w '%{http_code}' http://localhost:#{port}/jinda")
317
+ # rubocop:enable Style/FormatStringToken
318
+ http_code = stdout.strip
319
+
320
+ if http_code == "500"
321
+ err_log = File.read("log/server.err") rescue "No error log"
322
+ out_log = File.read("log/server.out")[-2000..-1].gsub(/\n/, ' | ') rescue "No out log"
323
+ flunk "Server returned 500 on /jinda. Recent out log: #{out_log}\nError log: #{err_log}"
324
+ end
325
+
326
+ assert_includes %w[200 302 404], http_code,
327
+ "Expected HTTP 200, 302, or 404, got #{http_code}"
328
+
329
+ # Stop server
330
+ begin
331
+ Process.kill("TERM", pid)
332
+ rescue Errno::ESRCH
333
+ # Process already gone
334
+ end
335
+
336
+ # Clean up logs if exist
337
+ %w[server.out server.err].each do |log|
338
+ FileUtils.rm_f("log/#{log}")
339
+ end
340
+ end
341
+ rescue Timeout::Error
342
+ flunk "Server start timeout"
343
+ end
344
+
345
+ def test_12_verify_installation_files
346
+ skip "App not created yet" unless @@app_created
347
+
348
+ required_files = [
349
+ "app/controllers/admins_controller.rb",
350
+ "app/controllers/articles_controller.rb",
351
+ "app/controllers/users_controller.rb",
352
+ "app/models/user.rb",
353
+ "app/models/identity.rb",
354
+ "app/views/jinda/index.html.haml",
355
+ "config/initializers/jinda.rb",
356
+ "config/initializers/omniauth.rb",
357
+ "config/mongoid.yml",
358
+ "db/seeds.rb"
359
+ ]
360
+
361
+ required_files.each do |file|
362
+ file_path = File.join(@test_app_path, file)
363
+
364
+ assert_path_exists file_path, "Required file missing: #{file}"
365
+ end
366
+ end
367
+ end
368
+ # rubocop:enable Style/ClassVars