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