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.
- checksums.yaml +4 -4
- data/README.md +46 -29
- data/Rakefile +103 -1
- data/app/assets/config/manifest.js +4 -1
- data/app/assets/javascripts/jinda_bootstrap.js +20 -0
- data/app/assets/stylesheets/_jinda_bootstrap_theme.scss +190 -0
- data/{lib/generators/jinda/templates/app/assets/stylesheets/jinda_jqm.css.scss → app/assets/stylesheets/jinda_bootstrap.css.scss} +12 -10
- data/app/config/routes.rb +38 -28
- data/app/controllers/concerns/jinda_general_concern.rb +86 -87
- data/app/controllers/concerns/jinda_run_concern.rb +184 -184
- data/app/controllers/jinda_controller.rb +23 -22
- data/bin/lint_modified +21 -0
- data/config/routes.rb +41 -22
- data/lib/generators/jinda/config_generator.rb +102 -81
- data/lib/generators/jinda/install_generator.rb +305 -148
- data/lib/generators/jinda/install_generator.rb.bak2 +268 -0
- data/lib/generators/jinda/installer/gems_install.rb +125 -127
- data/lib/generators/jinda/minitest_generator.rb +19 -18
- data/lib/generators/jinda/rspec_generator.rb +15 -14
- data/lib/generators/jinda/templates/DOCKER.md +188 -0
- data/lib/generators/jinda/templates/Dockerfile +15 -5
- data/lib/generators/jinda/templates/README.md +3 -3
- data/lib/generators/jinda/templates/app/assets/config/manifest.js +4 -0
- data/lib/generators/jinda/templates/app/assets/javascripts/application.js +8 -8
- data/lib/generators/jinda/templates/app/channels/application_cable/channel.rb +2 -0
- data/lib/generators/jinda/templates/app/channels/application_cable/connection.rb +2 -0
- data/{test/dummy → lib/generators/jinda/templates}/app/controllers/adminltes_controller.rb +1 -0
- data/lib/generators/jinda/templates/app/controllers/api/v1/notes_controller.rb +80 -78
- data/lib/generators/jinda/templates/app/controllers/jinda_org/admins_controller.rb +4 -2
- data/lib/generators/jinda/templates/app/controllers/jinda_org/application_controller.rb +11 -9
- data/lib/generators/jinda/templates/app/controllers/jinda_org/articles_controller.rb +40 -44
- data/lib/generators/jinda/templates/app/controllers/jinda_org/comments_controller.rb +10 -8
- data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +23 -24
- data/lib/generators/jinda/templates/app/controllers/jinda_org/identities_controller.rb +3 -1
- data/lib/generators/jinda/templates/app/controllers/jinda_org/notes_controller.rb +25 -27
- data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets_controller.rb +16 -18
- data/lib/generators/jinda/templates/app/controllers/jinda_org/sessions_controller.rb +13 -14
- data/lib/generators/jinda/templates/app/controllers/jinda_org/sitemap_controller.rb +4 -4
- data/lib/generators/jinda/templates/app/controllers/jinda_org/users_controller.rb +14 -14
- data/lib/generators/jinda/templates/app/controllers/mindmap_editor_controller.rb +74 -0
- data/lib/generators/jinda/templates/app/helpers/admins_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/application_helper.rb +21 -20
- data/lib/generators/jinda/templates/app/helpers/articles_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/basic_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/comments_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/ctrs_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/devs_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/mindmap_editor_helper.rb +3 -0
- data/lib/generators/jinda/templates/app/helpers/pictures_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/sitemap_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/helpers/users_helper.rb +2 -0
- data/lib/generators/jinda/templates/app/jinda/index.mm +276 -298
- data/lib/generators/jinda/templates/app/jinda/template/index.mm +1 -0
- data/lib/generators/jinda/templates/app/mailers/jinda_mailer.rb +5 -3
- data/lib/generators/jinda/templates/app/mailers/note_mailer.rb +6 -4
- data/lib/generators/jinda/templates/app/mailers/user_mailer.rb +5 -5
- data/lib/generators/jinda/templates/app/models/address.rb +10 -8
- data/lib/generators/jinda/templates/app/models/article.rb +8 -6
- data/lib/generators/jinda/templates/app/models/comment.rb +10 -8
- data/lib/generators/jinda/templates/app/models/identity.rb +11 -10
- data/lib/generators/jinda/templates/app/models/jinda/doc.rb +36 -33
- data/lib/generators/jinda/templates/app/models/jinda/jinda_module.rb +15 -0
- data/lib/generators/jinda/templates/app/models/jinda/module.rb +14 -10
- data/lib/generators/jinda/templates/app/models/jinda/notice.rb +15 -11
- data/lib/generators/jinda/templates/app/models/jinda/role.rb +11 -7
- data/lib/generators/jinda/templates/app/models/jinda/runseq.rb +23 -20
- data/lib/generators/jinda/templates/app/models/jinda/service.rb +19 -15
- data/lib/generators/jinda/templates/app/models/jinda/xmain.rb +42 -36
- data/lib/generators/jinda/templates/app/models/note.rb +14 -10
- data/lib/generators/jinda/templates/app/models/param.rb +23 -20
- data/lib/generators/jinda/templates/app/models/person.rb +9 -7
- data/lib/generators/jinda/templates/app/models/user.rb +42 -41
- data/lib/generators/jinda/templates/app/views/articles/show.html.haml +2 -2
- data/lib/generators/jinda/templates/app/views/identities/new.html.haml +13 -0
- data/lib/generators/jinda/templates/app/views/jinda/_static_bootstrap.haml +23 -0
- data/lib/generators/jinda/templates/app/views/jinda/feed.rss.builder +15 -13
- data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +3 -2
- data/lib/generators/jinda/templates/app/views/layouts/application.haml +31 -4
- data/lib/generators/jinda/templates/app/views/layouts/lte/_header.haml +54 -0
- data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_sidebar.haml +1 -1
- data/lib/generators/jinda/templates/app/views/mindmap_editor/edit.html.haml +126 -0
- data/lib/generators/jinda/templates/app/views/mindmap_editor/save.html.haml +2 -0
- data/lib/generators/jinda/templates/app/views/sessions/new.html.haml +13 -0
- data/lib/generators/jinda/templates/bin/lint_modified +21 -0
- data/lib/generators/jinda/templates/config/mongoid.yml +3 -3
- data/lib/generators/jinda/templates/config/mongoid.yml-docker +3 -3
- data/lib/generators/jinda/templates/config/mongoid.yml-localhost +3 -3
- data/lib/generators/jinda/templates/docker-compose-mongodb.yml +13 -0
- data/lib/generators/jinda/templates/docker-compose-web.yml +36 -0
- data/lib/generators/jinda/templates/docker-compose.yml +10 -14
- data/lib/generators/jinda/templates/spec/controllers/api/v1_get_index_spec.rb +15 -14
- data/lib/generators/jinda/templates/spec/controllers/api/v1_get_my_spec.rb +9 -4
- data/lib/generators/jinda/templates/spec/controllers/api/v1_post_spec.rb +4 -3
- data/lib/generators/jinda/templates/spec/controllers/sessions_controller_spec.rb +82 -90
- data/lib/generators/jinda/templates/spec/features/userlogins_spec.rb +12 -15
- data/lib/generators/jinda/templates/spec/mailers/note_spec.rb +5 -8
- data/lib/generators/jinda/templates/spec/mailers/previews/note_preview.rb +3 -5
- data/lib/generators/jinda/templates/spec/models/note_spec.rb +36 -35
- data/lib/generators/jinda/templates/spec/models/user_spec.rb +10 -8
- data/lib/generators/jinda/templates/spec/rails_helper.rb +29 -31
- data/lib/generators/jinda/templates/spec/spec_helper.rb +19 -17
- data/lib/generators/jinda/templates/spec/support/authentication_helper.rb +8 -7
- data/lib/generators/jinda/templates/spec/support/databasecleaner.rb +3 -1
- data/lib/generators/jinda/templates/spec/support/factory_bot.rb +7 -5
- data/lib/generators/jinda/templates/spec/support/omniauth_macros.rb +14 -19
- data/lib/generators/jinda/templates/spec/support/request_spec_helper.rb +3 -1
- data/lib/generators/jinda/templates/spec/views/articles/_article.html.erb_spec.rbx +9 -8
- data/lib/generators/jinda/templates/test/application_system_test_case.rb +3 -1
- data/lib/generators/jinda/templates/test/integration/jinda_routes_test.rb +16 -21
- data/lib/generators/jinda/templates/test/test_helper.rb +7 -3
- data/lib/jinda/date_helpers.rb +50 -41
- data/lib/jinda/gem_helpers.rb +10 -8
- data/lib/jinda/gen_class.rb +14 -12
- data/lib/jinda/gen_controller.rb +9 -8
- data/lib/jinda/gen_freemind.rb +33 -32
- data/lib/jinda/gen_helpers.rb +146 -139
- data/lib/jinda/gen_models.rb +125 -131
- data/lib/jinda/gen_modules.rb +21 -16
- data/lib/jinda/gen_runseq.rb +71 -67
- data/lib/jinda/gen_services.rb +74 -80
- data/lib/jinda/gen_xmain.rb +38 -36
- data/lib/jinda/get_app.rb +31 -29
- data/lib/jinda/helpers.rb +4 -4
- data/lib/jinda/init_vars.rb +41 -36
- data/lib/jinda/mindmap_converter.rb +196 -0
- data/lib/jinda/railtie.rb +10 -2
- data/lib/jinda/rake_views.rb +61 -60
- data/lib/jinda/refresh.rb +67 -61
- data/lib/jinda/themes.rb +80 -60
- data/lib/jinda/version.rb +3 -1
- data/lib/jinda.rb +2 -0
- data/lib/tasks/jinda.rake +25 -22
- data/test/INTEGRATION_TEST_README.md +374 -0
- data/test/LOCAL_DEVELOPMENT.md +345 -0
- data/test/README.md +243 -0
- data/test/TEST_INFRASTRUCTURE.md +412 -0
- data/test/TEST_INSTALLATION_SH_FIXES.md +205 -0
- data/test/UNIT_TESTS_README.md +366 -0
- data/test/api_notes_controller_test.rb +231 -0
- data/test/dummy/DOCKER.md +188 -0
- data/test/dummy/Dockerfile +15 -7
- data/test/dummy/Gemfile +38 -29
- data/test/dummy/Gemfile.lock +671 -292
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/channels/application_cable/channel.rb +2 -0
- data/test/dummy/app/channels/application_cable/connection.rb +2 -0
- data/test/dummy/app/controllers/admins_controller.rb +4 -2
- data/test/dummy/app/controllers/api/v1/notes_controller.rb +80 -78
- data/test/dummy/app/controllers/application_controller.rb +11 -9
- data/test/dummy/app/controllers/articles_controller.rb +40 -44
- data/test/dummy/app/controllers/comments_controller.rb +10 -8
- data/test/dummy/app/controllers/ctrs_controller.rb +2 -0
- data/test/dummy/app/controllers/devs_controller.rb +2 -0
- data/test/dummy/app/controllers/docs_controller.rb +23 -24
- data/test/dummy/app/controllers/identities_controller.rb +3 -1
- data/test/dummy/app/controllers/mindmap_editor_controller.rb +74 -0
- data/test/dummy/app/controllers/notes_controller.rb +25 -27
- data/test/dummy/app/controllers/password_resets_controller.rb +16 -18
- data/test/dummy/app/controllers/sessions_controller.rb +13 -14
- data/test/dummy/app/controllers/sitemap_controller.rb +4 -4
- data/test/dummy/app/controllers/users_controller.rb +14 -14
- data/test/dummy/app/helpers/admins_helper.rb +2 -0
- data/test/dummy/app/helpers/application_helper.rb +21 -20
- data/test/dummy/app/helpers/articles_helper.rb +2 -0
- data/test/dummy/app/helpers/basic_helper.rb +2 -0
- data/test/dummy/app/helpers/comments_helper.rb +2 -0
- data/test/dummy/app/helpers/ctrs_helper.rb +2 -0
- data/test/dummy/app/helpers/devs_helper.rb +2 -0
- data/test/dummy/app/helpers/mindmap_editor_helper.rb +3 -0
- data/test/dummy/app/helpers/pictures_helper.rb +2 -0
- data/test/dummy/app/helpers/sitemap_helper.rb +2 -0
- data/test/dummy/app/helpers/users_helper.rb +2 -0
- data/test/dummy/app/jinda/index.mm +384 -486
- data/test/dummy/app/jinda/template/index.mm +1 -0
- data/test/dummy/app/mailers/application_mailer.rb +2 -2
- data/test/dummy/app/mailers/application_mailer.rb-org +4 -0
- data/test/dummy/app/mailers/jinda_mailer.rb +5 -3
- data/test/dummy/app/mailers/note_mailer.rb +6 -4
- data/test/dummy/app/mailers/user_mailer.rb +5 -5
- data/test/dummy/app/models/address.rb +2 -0
- data/test/dummy/app/models/article.rb +2 -0
- data/test/dummy/app/models/comment.rb +3 -2
- data/test/dummy/app/models/identity.rb +11 -10
- data/test/dummy/app/models/jinda/doc.rb +36 -33
- data/test/dummy/app/models/jinda/jinda_module.rb +15 -0
- data/test/dummy/app/models/jinda/module.rb +14 -10
- data/test/dummy/app/models/jinda/notice.rb +15 -11
- data/test/dummy/app/models/jinda/role.rb +11 -7
- data/test/dummy/app/models/jinda/runseq.rb +23 -20
- data/test/dummy/app/models/jinda/service.rb +19 -15
- data/test/dummy/app/models/jinda/xmain.rb +42 -36
- data/test/dummy/app/models/note.rb +3 -8
- data/test/dummy/app/models/param.rb +23 -20
- data/test/dummy/app/models/person.rb +2 -0
- data/test/dummy/app/models/picture.rb +11 -0
- data/test/dummy/app/models/user.rb +42 -41
- data/test/dummy/app/views/admins/index.haml +21 -0
- data/test/dummy/app/views/api/v1/notes/delete/select_note.html.erb +21 -0
- data/test/dummy/app/views/api/v1/notes/edit/edit_note.html.erb +21 -0
- data/test/dummy/app/views/api/v1/notes/index.haml +21 -0
- data/test/dummy/app/views/api/v1/notes/new/new_note.html.erb +21 -0
- data/test/dummy/app/views/articles/show.html.haml +2 -2
- data/test/dummy/app/views/devs/index.haml +21 -0
- data/test/dummy/app/views/jinda/feed.rss.builder +15 -13
- data/test/dummy/app/views/jinda/index.html.haml +3 -2
- data/test/dummy/app/views/layouts/application.haml +2 -2
- data/test/dummy/app/views/mindmap_editor/edit.html.haml +126 -0
- data/test/dummy/app/views/mindmap_editor/save.html.haml +2 -0
- data/test/dummy/bin/docker-entrypoint +3 -0
- data/test/dummy/bin/lint_modified +21 -0
- data/test/dummy/bin/setup +1 -1
- data/test/dummy/config/application.rb +7 -2
- data/test/dummy/config/boot.rb +2 -1
- data/test/dummy/config/cable.yml +1 -1
- data/test/dummy/config/credentials.yml.enc +1 -1
- data/test/dummy/config/environments/development.rb +7 -1
- data/test/dummy/config/environments/production.rb +30 -26
- data/test/dummy/config/environments/test.rb +12 -8
- data/test/dummy/config/initializers/content_security_policy.rb +2 -2
- data/test/dummy/config/initializers/filter_parameter_logging.rb +3 -3
- data/test/dummy/config/initializers/mindmap_converter.rb +5 -0
- data/test/dummy/config/initializers/mongoid.rb +24 -9
- data/test/dummy/config/initializers/omniauth.rb +5 -0
- data/test/dummy/config/initializers/permissions_policy.rb +11 -9
- data/test/dummy/config/locales/en.yml +11 -13
- data/test/dummy/config/mongoid.yml +172 -53
- data/test/dummy/config/mongoid.yml-docker +3 -3
- data/test/dummy/config/mongoid.yml-localhost +3 -3
- data/test/dummy/config/puma.rb +21 -20
- data/test/dummy/config/routes.rb +7 -1
- data/test/dummy/docker-compose-mongodb.yml +13 -0
- data/test/dummy/docker-compose-web.yml +36 -0
- data/test/dummy/docker-compose.yml +10 -18
- data/test/dummy/log/development.log +5834 -2261
- data/test/dummy/spec/controllers/api/v1_get_index_spec.rb +15 -14
- data/test/dummy/spec/controllers/api/v1_get_my_spec.rb +9 -4
- data/test/dummy/spec/controllers/api/v1_post_spec.rb +4 -3
- data/test/dummy/spec/controllers/sessions_controller_spec.rb +82 -90
- data/test/dummy/spec/factories/pictures.rb +5 -0
- data/test/dummy/spec/features/userlogins_spec.rb +12 -15
- data/test/dummy/spec/mailers/note_spec.rb +5 -8
- data/test/dummy/spec/mailers/previews/note_preview.rb +3 -5
- data/test/dummy/spec/models/note_spec.rb +36 -35
- data/test/dummy/spec/models/picture_spec.rb +5 -0
- data/test/dummy/spec/models/user_spec.rb +10 -8
- data/test/dummy/spec/rails_helper.rb +29 -31
- data/test/dummy/spec/requests/ctrs_spec.rb +7 -0
- data/test/dummy/spec/requests/devs_spec.rb +7 -0
- data/test/dummy/spec/spec_helper.rb +19 -17
- data/test/dummy/spec/support/authentication_helper.rb +8 -7
- data/test/dummy/spec/support/databasecleaner.rb +3 -1
- data/test/dummy/spec/support/factory_bot.rb +7 -5
- data/test/dummy/spec/support/omniauth_macros.rb +14 -19
- data/test/dummy/spec/support/request_spec_helper.rb +3 -1
- data/test/dummy/spec/views/articles/_article.html.erb_spec.rbx +9 -8
- data/test/generated_app_test.rb +261 -0
- data/test/installation_test.rb +368 -0
- data/test/integration_test.rb +398 -0
- data/test/jenkins_stage_test.rb +182 -0
- data/test/note_model_test.rb +224 -0
- data/test/note_validation_integration_test.rb +292 -0
- data/test/run_unit_tests.sh +91 -0
- data/test/test_helper.rb +8 -16
- metadata +188 -60
- data/lib/generators/jinda/templates/app/assets/stylesheets/application.css.scss +0 -15
- data/lib/generators/jinda/templates/app/controllers/jinda_org/password_resets.rb +0 -28
- data/lib/generators/jinda/templates/app/views/layouts/_head.html.erb +0 -10
- data/lib/generators/jinda/templates/app/views/layouts/_meta_tag.html.erb +0 -19
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_footer.haml +0 -7
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_header.haml +0 -147
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu.haml +0 -47
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_menu_mm.haml +0 -34
- data/lib/generators/jinda/templates/app/views/layouts/bsb/_sidebar.haml +0 -155
- data/lib/generators/jinda/templates/app/views/layouts/bsb/application.haml-bsb +0 -47
- data/lib/generators/jinda/templates/app/views/layouts/gmail.html.erb +0 -9
- data/lib/generators/jinda/templates/app/views/layouts/jqm/_full.haml +0 -33
- data/lib/generators/jinda/templates/app/views/layouts/jqm/_page.haml +0 -16
- data/lib/generators/jinda/templates/app/views/layouts/jqm/application.haml-jqm +0 -4
- data/lib/generators/jinda/templates/app/views/layouts/mailer.html.erb +0 -13
- data/lib/generators/jinda/templates/app/views/layouts/mailer.html.haml +0 -3
- data/lib/generators/jinda/templates/app/views/layouts/mailer.text.erb +0 -1
- data/lib/generators/jinda/templates/app/views/layouts/mailer.text.haml +0 -1
- data/lib/generators/jinda/templates/app/views/layouts/mobile.html.erb +0 -13
- data/lib/generators/jinda/templates/app/views/layouts/mobilejq.html.erb +0 -31
- data/lib/generators/jinda/templates/app/views/layouts/print.html.erb +0 -22
- data/lib/generators/jinda/templates/app/views/layouts/utf8.html.erb +0 -22
- data/lib/generators/jinda/templates/config/initializers/fix_mongoid_generator.rb-org +0 -14
- data/test/dummy/Guardfile +0 -96
- data/test/dummy/app/controllers/application_controller.rb.bak +0 -2
- data/test/dummy/app/controllers/password_resets.rb +0 -28
- data/test/dummy/app/helpers/application_helper.rb.bak +0 -2
- data/test/dummy/app/views/identities/new-bak.html.haml +0 -32
- data/test/dummy/app/views/layouts/application.haml.bak +0 -4
- data/test/dummy/app/views/layouts/application.html.erb.bak +0 -15
- data/test/dummy/app/views/layouts/lte/_header.haml +0 -111
- data/test/dummy/app/views/layouts/lte/_rightbar.haml +0 -123
- data/test/dummy/app/views/sessions/new-bak.html.haml +0 -22
- data/test/dummy/config/initializers/fix_mongoid_generator.rb-org +0 -14
- data/test/dummy/tmp/development_secret.txt +0 -1
- data/test/integration/navigation_test.rb +0 -7
- data/test/jinda_test.rb +0 -7
- /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/application.scss +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/assets/stylesheets/jinda.scss +0 -0
- /data/lib/generators/jinda/templates/app/mailers/{application_mailer.rb → application_mailer.rb-org} +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard1.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/adminltes/dashboard2.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_flash.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_footer.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu.haml +0 -0
- /data/{test/dummy → lib/generators/jinda/templates}/app/views/layouts/lte/_menu_mm.haml +0 -0
- /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
|