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
data/lib/jinda/themes.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
|
|
2
3
|
# ############################### Themes ###################################
|
|
3
4
|
#
|
|
@@ -6,104 +7,118 @@
|
|
|
6
7
|
# ##########################################################################
|
|
7
8
|
def get_login_user_info
|
|
8
9
|
if current_ma_user.present?
|
|
9
|
-
$user_image = (
|
|
10
|
-
$user_name
|
|
10
|
+
$user_image = (current_ma_user.image == '' ? asset_url('user.png', width: '48') : current_ma_user.image)
|
|
11
|
+
$user_name = current_ma_user.code
|
|
11
12
|
$user_email = current_ma_user.email
|
|
12
|
-
$user_id
|
|
13
|
+
$user_id = current_ma_user.try(:id)
|
|
13
14
|
else
|
|
14
|
-
$user_image = asset_url(
|
|
15
|
-
$user_name
|
|
15
|
+
$user_image = asset_url('user.png', width: '48')
|
|
16
|
+
$user_name = 'Guest User'
|
|
16
17
|
$user_email = 'guest@sample.com'
|
|
17
|
-
$user_id
|
|
18
|
+
$user_id = ''
|
|
18
19
|
end
|
|
19
|
-
|
|
20
|
+
[$user_image, $user_name, $user_email, $user_id]
|
|
20
21
|
end
|
|
22
|
+
|
|
21
23
|
# search image from User in Article/View/Show
|
|
22
24
|
def get_user_image(user_id)
|
|
23
25
|
user_image = User.find(user_id).image
|
|
24
|
-
|
|
25
|
-
return user_image
|
|
26
|
+
(user_image == '' ? asset_url('user.png', width: '48') : user_image)
|
|
26
27
|
end
|
|
27
28
|
|
|
28
|
-
|
|
29
29
|
def name2code(s)
|
|
30
30
|
# rather not ignore # symbol cause it could be comment
|
|
31
|
-
code,
|
|
32
|
-
code.downcase.strip.
|
|
31
|
+
code, = s.split(':')
|
|
32
|
+
code.downcase.strip.tr(' ', '_').gsub(%r{[^#_/a-zA-Z0-9]}, '')
|
|
33
33
|
end
|
|
34
|
+
|
|
34
35
|
def name2camel(s)
|
|
35
|
-
s.
|
|
36
|
+
s.tr(' ', '_').camelcase
|
|
36
37
|
end
|
|
38
|
+
|
|
37
39
|
def true_action?(s)
|
|
38
|
-
%w
|
|
40
|
+
%w[call ws redirect invoke email].include? s
|
|
39
41
|
end
|
|
42
|
+
|
|
40
43
|
def set_global
|
|
41
|
-
$xmain= @xmain
|
|
44
|
+
$xmain = @xmain
|
|
45
|
+
$runseq = @runseq
|
|
46
|
+
$user = current_ma_user
|
|
47
|
+
$xvars = @xmain.xvars
|
|
48
|
+
$ip = request.env['REMOTE_ADDR']
|
|
42
49
|
end
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
|
|
51
|
+
# use in pending tasks
|
|
52
|
+
def authorize?
|
|
53
|
+
@runseq = @xmain.runseqs.find @xmain.current_runseq
|
|
45
54
|
return false unless @runseq
|
|
55
|
+
|
|
46
56
|
@user = current_ma_user
|
|
47
57
|
set_global
|
|
48
|
-
return false
|
|
58
|
+
return false if @runseq.rule && @runseq.rule && !eval(@runseq.rule)
|
|
49
59
|
return true if true_action?(@runseq.action)
|
|
50
60
|
# return false if check_wait
|
|
51
61
|
return true if @runseq.role.blank?
|
|
62
|
+
|
|
52
63
|
unless @runseq.role.empty?
|
|
53
64
|
return false unless @user.role
|
|
65
|
+
|
|
54
66
|
return @user.role.upcase.split(',').include?(@runseq.role.upcase)
|
|
55
67
|
end
|
|
56
|
-
|
|
68
|
+
true
|
|
57
69
|
end
|
|
58
|
-
|
|
70
|
+
|
|
71
|
+
# use when initialize new transaction
|
|
72
|
+
def authorize_init?
|
|
59
73
|
# check module role
|
|
60
74
|
mrole = @service.module.role
|
|
61
75
|
return false if mrole && !current_ma_user
|
|
62
76
|
return false if mrole && !current_ma_user.has_role(mrole)
|
|
63
77
|
|
|
64
78
|
# check step 1 role
|
|
65
|
-
xml= @service.xml
|
|
79
|
+
xml = @service.xml
|
|
66
80
|
step1 = REXML::Document.new(xml).root.elements['node']
|
|
67
|
-
role= get_option_xml(
|
|
81
|
+
role = get_option_xml('role', step1) || ''
|
|
68
82
|
# rule= get_option_xml("rule", step1) || true
|
|
69
|
-
|
|
70
|
-
return true if role==
|
|
71
|
-
unless current_ma_user
|
|
72
|
-
return role.blank?
|
|
73
|
-
else
|
|
74
|
-
return false unless current_ma_user.role
|
|
75
|
-
return current_ma_user.has_role(role)
|
|
76
|
-
end
|
|
83
|
+
get_option_xml('rule', step1) || true
|
|
84
|
+
return true if role == ''
|
|
85
|
+
return role.blank? unless current_ma_user
|
|
77
86
|
|
|
87
|
+
return false unless current_ma_user.role
|
|
88
|
+
|
|
89
|
+
current_ma_user.has_role(role)
|
|
78
90
|
end
|
|
91
|
+
|
|
79
92
|
def ma_log(message)
|
|
80
93
|
# Jinda::Notice.create :message => ERB::Util.html_escape(message.gsub("`","'")),
|
|
81
94
|
# :unread=> true, :ip=> ($ip || request.env["REMOTE_ADDR"])
|
|
82
95
|
if session[:user_id]
|
|
83
|
-
Jinda::Notice.create :
|
|
84
|
-
|
|
96
|
+
Jinda::Notice.create message: ERB::Util.html_escape(message.tr('`', "'")),
|
|
97
|
+
user_id: $user.id, unread: true, ip: request.env['REMOTE_ADDR']
|
|
85
98
|
else
|
|
86
|
-
Jinda::Notice.create :
|
|
87
|
-
|
|
99
|
+
Jinda::Notice.create message: ERB::Util.html_escape(message.tr('`', "'")),
|
|
100
|
+
unread: true, ip: request.env['REMOTE_ADDR']
|
|
88
101
|
end
|
|
89
102
|
end
|
|
90
103
|
|
|
91
|
-
alias
|
|
104
|
+
alias ma_notice ma_log
|
|
92
105
|
|
|
93
106
|
# methods from application_helper
|
|
94
107
|
def markdown(text)
|
|
95
108
|
begin
|
|
96
109
|
erbified = ERB.new(text.html_safe).result(binding)
|
|
97
|
-
rescue =>
|
|
98
|
-
flash[:notice] = "This ruby version not support #{
|
|
110
|
+
rescue StandardError => e
|
|
111
|
+
flash[:notice] = "This ruby version not support #{e}"
|
|
99
112
|
return
|
|
100
113
|
end
|
|
101
|
-
red = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :
|
|
114
|
+
red = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true)
|
|
102
115
|
red.render(erbified).html_safe
|
|
103
116
|
end
|
|
104
|
-
|
|
117
|
+
|
|
118
|
+
def align_text(s, pixel = 3)
|
|
105
119
|
"<span style='position:relative; top:-#{pixel}px;'>#{s}</span>".html_safe
|
|
106
120
|
end
|
|
121
|
+
|
|
107
122
|
def status_icon(status)
|
|
108
123
|
case status
|
|
109
124
|
when 'R'
|
|
@@ -120,32 +135,38 @@ def status_icon(status)
|
|
|
120
135
|
image_tag 'cancel.png'
|
|
121
136
|
end
|
|
122
137
|
end
|
|
138
|
+
|
|
123
139
|
def role_name(code)
|
|
124
|
-
role= Jinda::Role.where(code:code).first
|
|
125
|
-
|
|
140
|
+
role = Jinda::Role.where(code: code).first
|
|
141
|
+
role ? role.name : ''
|
|
126
142
|
end
|
|
143
|
+
|
|
127
144
|
def uncomment(s)
|
|
128
|
-
s.sub(/^#\s/,'')
|
|
145
|
+
s.sub(/^#\s/, '')
|
|
129
146
|
end
|
|
147
|
+
|
|
130
148
|
def code_div(s)
|
|
131
149
|
"<pre style='background-color: #efffef;'><code class='ruby' lang='ruby'> #{s}</code></pre>".html_safe
|
|
132
150
|
end
|
|
151
|
+
|
|
133
152
|
def ajax?(s)
|
|
134
|
-
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
out
|
|
142
|
-
out +=
|
|
143
|
-
out
|
|
144
|
-
out
|
|
145
|
-
|
|
153
|
+
!s.match?('file_field')
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# square text
|
|
157
|
+
def step(s, total)
|
|
158
|
+
s = s.zero? ? 1 : s.to_i
|
|
159
|
+
total = total.to_i
|
|
160
|
+
out = "<div class='step'>"
|
|
161
|
+
(s - 1).times { |ss| out += "<span class='steps_done'>#{ss + 1}</span>" }
|
|
162
|
+
out += %(<span class='step_now' >)
|
|
163
|
+
out += s.to_s
|
|
164
|
+
out += '</span>'
|
|
165
|
+
out += %()
|
|
166
|
+
((s + 1)..total).each do |i|
|
|
146
167
|
out += "<span class='steps_more'>#{i}</span>"
|
|
147
168
|
end
|
|
148
|
-
out +=
|
|
169
|
+
out += '</div>'
|
|
149
170
|
out.html_safe
|
|
150
171
|
end
|
|
151
172
|
|
|
@@ -155,13 +176,13 @@ def current_ma_user
|
|
|
155
176
|
# else
|
|
156
177
|
# return nil
|
|
157
178
|
# end
|
|
158
|
-
|
|
159
|
-
@user ||= User.where(:
|
|
160
|
-
|
|
179
|
+
# @user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
|
|
180
|
+
@user ||= User.where(auth_token: cookies[:auth_token]).first if cookies[:auth_token]
|
|
181
|
+
@user
|
|
161
182
|
end
|
|
162
183
|
|
|
163
184
|
def ui_action?(s)
|
|
164
|
-
%w
|
|
185
|
+
%w[form output mail pdf].include? s
|
|
165
186
|
end
|
|
166
187
|
# def handle_ma_notice
|
|
167
188
|
# if Jinda::Notice.recent.count>0
|
|
@@ -172,4 +193,3 @@ end
|
|
|
172
193
|
# ""
|
|
173
194
|
# end
|
|
174
195
|
# end
|
|
175
|
-
|
data/lib/jinda/version.rb
CHANGED
data/lib/jinda.rb
CHANGED
data/lib/tasks/jinda.rake
CHANGED
|
@@ -1,42 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'jinda'
|
|
2
4
|
require 'jinda/helpers'
|
|
3
5
|
include Jinda::Helpers
|
|
4
6
|
|
|
5
|
-
@btext=
|
|
6
|
-
@etext=
|
|
7
|
+
@btext = '# jinda begin'
|
|
8
|
+
@etext = '# jinda end'
|
|
7
9
|
|
|
8
10
|
namespace :jinda do
|
|
9
|
-
desc
|
|
10
|
-
task :
|
|
11
|
-
@app= get_app
|
|
11
|
+
desc 'generate models from mm'
|
|
12
|
+
task update: :environment do
|
|
13
|
+
@app = get_app
|
|
12
14
|
process_models
|
|
13
15
|
process_controllers
|
|
14
16
|
gen_views
|
|
15
17
|
end
|
|
16
18
|
|
|
17
|
-
desc
|
|
18
|
-
task :
|
|
19
|
-
usamples
|
|
20
|
-
{ code: 'admin', password: 'secret', email: 'admin@test.com', role: 'M,A,D',
|
|
21
|
-
|
|
19
|
+
desc 'generate admin user'
|
|
20
|
+
task seed: :environment do
|
|
21
|
+
usamples = [
|
|
22
|
+
{ code: 'admin', password: 'secret', email: 'admin@test.com', role: 'M,A,D',
|
|
23
|
+
image: 'https://user-images.githubusercontent.com/3953832/110025024-7911b480-7cf4-11eb-83ee-8dbe6e8fc96f.png' },
|
|
24
|
+
{ code: 'tester', password: 'password', email: 'tester@test.com', role: 'M', image: 'https://www.manateeschools.net/cms/lib/FL02202357/Centricity/domain/2439/staff_photos/fflinststone.jpg' }
|
|
22
25
|
]
|
|
23
26
|
usamples.each do |h|
|
|
24
|
-
code
|
|
25
|
-
email
|
|
27
|
+
code = h[:code].to_s
|
|
28
|
+
email = h[:email].to_s
|
|
26
29
|
password = h[:password].to_s
|
|
27
|
-
role
|
|
28
|
-
image
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
role = h[:role].to_s
|
|
31
|
+
image = h[:image]
|
|
32
|
+
next if Identity.exists?(code: code)
|
|
33
|
+
|
|
34
|
+
identity = Identity.create code: code, email: email, password: password,
|
|
35
|
+
password_confirmation: password
|
|
36
|
+
User.create provider: 'identity', uid: identity.id.to_s, code: identity.code, email: identity.email,
|
|
37
|
+
role: role, image: image
|
|
33
38
|
end
|
|
34
39
|
end
|
|
35
40
|
|
|
36
|
-
desc
|
|
37
|
-
task :
|
|
41
|
+
desc 'cancel all pending tasks'
|
|
42
|
+
task cancel: :environment do
|
|
38
43
|
Jinda::Xmain.update_all "status='X'", "status='I' or status='R'"
|
|
39
44
|
end
|
|
40
45
|
end
|
|
41
|
-
|
|
42
|
-
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Jinda Integration Tests
|
|
2
|
+
|
|
3
|
+
This directory contains two levels of testing for the Jinda gem:
|
|
4
|
+
|
|
5
|
+
1. **Installation Tests** (`installation_test.rb`) - Verify the gem generates a working Rails app
|
|
6
|
+
2. **Integration Tests** (`integration_test.rb`) - Verify the generated app actually works
|
|
7
|
+
|
|
8
|
+
## Test Flow
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
┌─────────────────────────────────────┐
|
|
12
|
+
│ 1. installation_test.rb │
|
|
13
|
+
│ - Creates Rails app │
|
|
14
|
+
│ - Installs Jinda gem │
|
|
15
|
+
│ - Runs generators │
|
|
16
|
+
│ - Seeds database │
|
|
17
|
+
│ - Verifies file structure │
|
|
18
|
+
└──────────────┬──────────────────────┘
|
|
19
|
+
│
|
|
20
|
+
▼
|
|
21
|
+
┌─────────────────────────────────────┐
|
|
22
|
+
│ 2. integration_test.rb │
|
|
23
|
+
│ - Starts Rails server │
|
|
24
|
+
│ - Tests home page │
|
|
25
|
+
│ - Tests login (admin/secret) │
|
|
26
|
+
│ - Tests authenticated pages │
|
|
27
|
+
│ - Verifies MongoDB connection │
|
|
28
|
+
└─────────────────────────────────────┘
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Installation Test (`installation_test.rb`)
|
|
32
|
+
|
|
33
|
+
### What It Does
|
|
34
|
+
|
|
35
|
+
1. **Prerequisites Check** - Ruby, Rails, MongoDB
|
|
36
|
+
2. **Creates Rails App** - `rails new` with Jinda-specific options
|
|
37
|
+
3. **Adds Jinda Gem** - To Gemfile (local or git source)
|
|
38
|
+
4. **Bundle Install** - Initial dependencies
|
|
39
|
+
5. **jinda:install** - Runs the main generator
|
|
40
|
+
6. **Bundle Install** - Post-generator dependencies
|
|
41
|
+
7. **jinda:config** - Configures MongoDB, OmniAuth, etc.
|
|
42
|
+
8. **Updates MongoDB Config** - Sets correct port
|
|
43
|
+
9. **jinda:seed** - Creates admin user (username: admin, password: secret)
|
|
44
|
+
10. **Rails Environment** - Verifies it loads
|
|
45
|
+
11. **Rails Server** - Starts and responds to HTTP
|
|
46
|
+
12. **Verifies Files** - All required files exist
|
|
47
|
+
|
|
48
|
+
### Test App Location
|
|
49
|
+
|
|
50
|
+
Generated apps are created in: `~/tmp/jinda_tests/jinda_test_<timestamp>`
|
|
51
|
+
|
|
52
|
+
### Usage
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Run with local gem (default)
|
|
56
|
+
rake test_installation
|
|
57
|
+
# or
|
|
58
|
+
ruby test/installation_test.rb
|
|
59
|
+
|
|
60
|
+
# Run with git source
|
|
61
|
+
JINDA_GEM_SOURCE=git ruby test/installation_test.rb
|
|
62
|
+
|
|
63
|
+
# Run with specific branch
|
|
64
|
+
JINDA_GEM_SOURCE=git JINDA_GIT_BRANCH=jinda-0.8.0 ruby test/installation_test.rb
|
|
65
|
+
|
|
66
|
+
# Keep test app for debugging
|
|
67
|
+
SKIP_CLEANUP=true ruby test/installation_test.rb
|
|
68
|
+
|
|
69
|
+
# Custom MongoDB port
|
|
70
|
+
MONGODB_PORT=27017 ruby test/installation_test.rb
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Expected Output
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
12 runs, 33 assertions, 0 failures, 0 errors, 0 skips
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Integration Test (`integration_test.rb`)
|
|
80
|
+
|
|
81
|
+
### What It Does
|
|
82
|
+
|
|
83
|
+
Tests the **actual functionality** of the generated Jinda Rails application:
|
|
84
|
+
|
|
85
|
+
1. **Starts Rails Server** - In background on port 3000
|
|
86
|
+
2. **Home Page Loads** - Verifies HTTP 200/302
|
|
87
|
+
3. **Version Info Displayed** - Ruby, Rails, Jinda gem versions
|
|
88
|
+
4. **Installation Info** - Documentation section visible
|
|
89
|
+
5. **Login Page Accessible** - `/auth/identity` route works
|
|
90
|
+
6. **Admin Login** - Tests with username: "admin", password: "secret"
|
|
91
|
+
7. **Authenticated Dashboard** - Session cookie maintained
|
|
92
|
+
8. **Users Page** - Admin can access `/users`
|
|
93
|
+
9. **Articles Page** - Route responds correctly
|
|
94
|
+
10. **Logout Functionality** - Session cleanup
|
|
95
|
+
11. **MongoDB Connection** - Database accessible from Rails
|
|
96
|
+
12. **Admin User Exists** - Seeded data verified
|
|
97
|
+
|
|
98
|
+
### Content Verification
|
|
99
|
+
|
|
100
|
+
The test verifies the home page (based on your screenshot) contains:
|
|
101
|
+
|
|
102
|
+
- ✓ "Jinda" title
|
|
103
|
+
- ✓ "Dashboard" section
|
|
104
|
+
- ✓ "Ruby Version 3.3.0"
|
|
105
|
+
- ✓ "Rails Version 7.1.6"
|
|
106
|
+
- ✓ "gem jinda 0.9.0"
|
|
107
|
+
- ✓ "Recently tested with" section
|
|
108
|
+
- ✓ "Create New Rails" instructions
|
|
109
|
+
- ✓ "Installation" section
|
|
110
|
+
|
|
111
|
+
### Admin Credentials
|
|
112
|
+
|
|
113
|
+
The test uses credentials from `db/seeds.rb`:
|
|
114
|
+
|
|
115
|
+
- **Username**: `admin`
|
|
116
|
+
- **Password**: `secret`
|
|
117
|
+
- **Email**: `admin@test.com`
|
|
118
|
+
|
|
119
|
+
### Usage
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Run integration tests (requires existing test app)
|
|
123
|
+
rake test_integration
|
|
124
|
+
# or
|
|
125
|
+
ruby test/integration_test.rb
|
|
126
|
+
|
|
127
|
+
# Test specific app
|
|
128
|
+
TEST_APP_PATH=/path/to/app ruby test/integration_test.rb
|
|
129
|
+
|
|
130
|
+
# Keep server running after tests (for manual debugging)
|
|
131
|
+
KEEP_SERVER=true ruby test/integration_test.rb
|
|
132
|
+
|
|
133
|
+
# Custom port
|
|
134
|
+
TEST_PORT=3001 ruby test/integration_test.rb
|
|
135
|
+
|
|
136
|
+
# Custom MongoDB port
|
|
137
|
+
MONGODB_PORT=27888 ruby test/integration_test.rb
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Expected Output
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
=== Starting Rails server on port 3000 ===
|
|
144
|
+
✓ Server started (PID: 12345)
|
|
145
|
+
✓ Home page loads successfully
|
|
146
|
+
✓ Version information displayed correctly
|
|
147
|
+
✓ Installation information displayed
|
|
148
|
+
✓ Login page accessible
|
|
149
|
+
✓ Admin login successful
|
|
150
|
+
✓ Authenticated access works
|
|
151
|
+
✓ Users page accessible
|
|
152
|
+
✓ Articles page responds
|
|
153
|
+
✓ Logout functionality tested
|
|
154
|
+
✓ MongoDB connection verified
|
|
155
|
+
✓ Admin user verified in database
|
|
156
|
+
|
|
157
|
+
12 runs, 24 assertions, 0 failures, 0 errors, 0 skips
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Running Both Tests in Sequence
|
|
161
|
+
|
|
162
|
+
### Full Test Suite
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Run both installation and integration tests
|
|
166
|
+
rake test_all
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
This will:
|
|
170
|
+
1. Create a new Rails app with Jinda
|
|
171
|
+
2. Immediately test its functionality
|
|
172
|
+
3. Clean up afterward (unless `SKIP_CLEANUP=true`)
|
|
173
|
+
|
|
174
|
+
### Manual Sequence
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# 1. Installation (creates app)
|
|
178
|
+
SKIP_CLEANUP=true rake test_installation
|
|
179
|
+
|
|
180
|
+
# 2. Find the app path
|
|
181
|
+
ls -lt ~/tmp/jinda_tests/
|
|
182
|
+
|
|
183
|
+
# 3. Integration (tests the app)
|
|
184
|
+
TEST_APP_PATH=~/tmp/jinda_tests/jinda_test_XXXXX rake test_integration
|
|
185
|
+
|
|
186
|
+
# 4. Manual cleanup when done
|
|
187
|
+
rm -rf ~/tmp/jinda_tests/jinda_test_XXXXX
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Debugging Failed Tests
|
|
191
|
+
|
|
192
|
+
### Installation Test Failures
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Keep the test app
|
|
196
|
+
SKIP_CLEANUP=true ruby test/installation_test.rb
|
|
197
|
+
|
|
198
|
+
# Navigate to it
|
|
199
|
+
cd ~/tmp/jinda_tests/jinda_test_XXXXX
|
|
200
|
+
|
|
201
|
+
# Investigate
|
|
202
|
+
ls -la app/controllers/
|
|
203
|
+
cat config/mongoid.yml
|
|
204
|
+
bundle exec rails console
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Integration Test Failures
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Keep server running
|
|
211
|
+
KEEP_SERVER=true ruby test/integration_test.rb
|
|
212
|
+
|
|
213
|
+
# In another terminal
|
|
214
|
+
curl http://localhost:3000
|
|
215
|
+
curl http://localhost:3000/auth/identity
|
|
216
|
+
|
|
217
|
+
# Check logs
|
|
218
|
+
cd ~/tmp/jinda_tests/jinda_test_XXXXX
|
|
219
|
+
tail -f log/development.log
|
|
220
|
+
tail -f log/test_server.log
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Common Issues
|
|
224
|
+
|
|
225
|
+
**MongoDB not running:**
|
|
226
|
+
```bash
|
|
227
|
+
docker run -d --name jinda_mongo -p 27888:27017 mongo:latest
|
|
228
|
+
# or
|
|
229
|
+
MONGODB_PORT=27017 ruby test/installation_test.rb
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Port already in use:**
|
|
233
|
+
```bash
|
|
234
|
+
# Find process
|
|
235
|
+
lsof -i :3000
|
|
236
|
+
# Kill it
|
|
237
|
+
kill -9 <PID>
|
|
238
|
+
# Or use different port
|
|
239
|
+
TEST_PORT=3001 ruby test/integration_test.rb
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Server won't start:**
|
|
243
|
+
```bash
|
|
244
|
+
cd ~/tmp/jinda_tests/jinda_test_XXXXX
|
|
245
|
+
cat log/test_server_error.log
|
|
246
|
+
bundle exec rails server # Try manually
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## CI/CD Integration
|
|
250
|
+
|
|
251
|
+
### GitHub Actions Workflows
|
|
252
|
+
|
|
253
|
+
**RuboCop Workflow** (`rubocop.yml`):
|
|
254
|
+
- Only runs code quality checks
|
|
255
|
+
- Does NOT run tests
|
|
256
|
+
- Fast feedback (~2 min)
|
|
257
|
+
|
|
258
|
+
**Jenkins Test Workflow** (`jenkins-test.yml`):
|
|
259
|
+
- Runs installation tests only
|
|
260
|
+
- Builds gem package
|
|
261
|
+
- Duration: ~5 min
|
|
262
|
+
- Why not integration? Server startup in CI is complex
|
|
263
|
+
|
|
264
|
+
### Jenkins Pipeline
|
|
265
|
+
|
|
266
|
+
**Jenkinsfile** (`ci/Jenkinsfile`):
|
|
267
|
+
- Runs RuboCop checks
|
|
268
|
+
- Runs installation tests
|
|
269
|
+
- Builds and validates gem
|
|
270
|
+
- Optional: Can be extended to run integration tests
|
|
271
|
+
|
|
272
|
+
To add integration tests to CI, add after installation tests:
|
|
273
|
+
|
|
274
|
+
```groovy
|
|
275
|
+
stage('Integration Tests') {
|
|
276
|
+
steps {
|
|
277
|
+
echo "=== Running integration tests ==="
|
|
278
|
+
sh '''
|
|
279
|
+
cd ${WORKSPACE}
|
|
280
|
+
TEST_APP_PATH=${WORKSPACE}/tmp/jinda_tests/jinda_test_* \\
|
|
281
|
+
TEST_PORT=3000 \\
|
|
282
|
+
MONGODB_PORT=${MONGODB_PORT} \\
|
|
283
|
+
ruby test/integration_test.rb
|
|
284
|
+
'''
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Test Maintenance
|
|
290
|
+
|
|
291
|
+
### Adding New Integration Tests
|
|
292
|
+
|
|
293
|
+
Add tests to `integration_test.rb`:
|
|
294
|
+
|
|
295
|
+
```ruby
|
|
296
|
+
def test_13_my_new_feature
|
|
297
|
+
skip 'No session cookie from login' unless @@session_cookie
|
|
298
|
+
|
|
299
|
+
uri = URI("#{@base_url}/my_feature")
|
|
300
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
301
|
+
|
|
302
|
+
request = Net::HTTP::Get.new(uri.path)
|
|
303
|
+
request['Cookie'] = @@session_cookie
|
|
304
|
+
|
|
305
|
+
response = http.request(request)
|
|
306
|
+
|
|
307
|
+
assert_equal 200, response.code.to_i, 'Feature should be accessible'
|
|
308
|
+
assert_includes response.body, 'expected content'
|
|
309
|
+
|
|
310
|
+
puts '✓ My feature works'
|
|
311
|
+
end
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Test Naming Convention
|
|
315
|
+
|
|
316
|
+
- `test_01_*` to `test_12_*` - Numbered tests run in order
|
|
317
|
+
- Tests are order-dependent (sequential workflow)
|
|
318
|
+
- Use descriptive names after the number
|
|
319
|
+
|
|
320
|
+
### Environment Variables
|
|
321
|
+
|
|
322
|
+
| Variable | Default | Description |
|
|
323
|
+
|----------|---------|-------------|
|
|
324
|
+
| `TEST_APP_PATH` | auto | Path to existing Jinda app |
|
|
325
|
+
| `TEST_PORT` | 3000 | Port for Rails server |
|
|
326
|
+
| `MONGODB_PORT` | 27888 | Port for MongoDB |
|
|
327
|
+
| `KEEP_SERVER` | false | Keep server running after tests |
|
|
328
|
+
| `SKIP_CLEANUP` | false | Don't delete test app |
|
|
329
|
+
| `JINDA_GEM_SOURCE` | local | Use 'git' for remote |
|
|
330
|
+
| `JINDA_GIT_URL` | github.com/kul1/jinda.git | Git repo URL |
|
|
331
|
+
| `JINDA_GIT_BRANCH` | default | Specific branch/tag |
|
|
332
|
+
|
|
333
|
+
## Architecture
|
|
334
|
+
|
|
335
|
+
### Test Independence
|
|
336
|
+
|
|
337
|
+
- Installation tests are self-contained
|
|
338
|
+
- Integration tests depend on installation tests creating an app
|
|
339
|
+
- Both can run independently if app exists
|
|
340
|
+
|
|
341
|
+
### Class Variables
|
|
342
|
+
|
|
343
|
+
Both test files use class variables (`@@`) to maintain state across tests:
|
|
344
|
+
|
|
345
|
+
- `@@test_app_path` - Location of test app
|
|
346
|
+
- `@@app_created` - Installation success flag
|
|
347
|
+
- `@@server_pid` - Rails server process
|
|
348
|
+
- `@@session_cookie` - Authentication state
|
|
349
|
+
|
|
350
|
+
### Cleanup Strategy
|
|
351
|
+
|
|
352
|
+
- Installation test: Cleanup in `Minitest.after_run`
|
|
353
|
+
- Integration test: Kills server in `Minitest.after_run`
|
|
354
|
+
- Both respect `SKIP_CLEANUP` and `KEEP_SERVER` flags
|
|
355
|
+
|
|
356
|
+
## Summary
|
|
357
|
+
|
|
358
|
+
| Test | Purpose | Duration | CI |
|
|
359
|
+
|------|---------|----------|-----|
|
|
360
|
+
| **installation_test.rb** | Generates working app | ~30s | ✓ |
|
|
361
|
+
| **integration_test.rb** | Tests app functionality | ~20s | Optional |
|
|
362
|
+
| **test_all** | Both in sequence | ~50s | Future |
|
|
363
|
+
|
|
364
|
+
**Quick Start:**
|
|
365
|
+
```bash
|
|
366
|
+
# Full test suite
|
|
367
|
+
rake test_all
|
|
368
|
+
|
|
369
|
+
# Just installation (CI default)
|
|
370
|
+
rake test
|
|
371
|
+
|
|
372
|
+
# Just integration (requires existing app)
|
|
373
|
+
rake test_integration
|
|
374
|
+
```
|