hanami 2.0.0.beta2 → 2.0.0.beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -1
  3. data/lib/hanami/configuration/null_configuration.rb +2 -2
  4. data/lib/hanami/configuration.rb +17 -17
  5. data/lib/hanami/routes.rb +48 -21
  6. data/lib/hanami/version.rb +1 -1
  7. data/spec/{new_integration → integration}/action/cookies_spec.rb +0 -0
  8. data/spec/{new_integration → integration}/action/csrf_protection_spec.rb +0 -0
  9. data/spec/{new_integration → integration}/action/routes_spec.rb +3 -5
  10. data/spec/{new_integration → integration}/action/sessions_spec.rb +0 -0
  11. data/spec/{new_integration → integration}/action/slice_configuration_spec.rb +0 -0
  12. data/spec/{new_integration → integration}/action/view_integration_spec.rb +0 -0
  13. data/spec/{new_integration → integration}/action/view_rendering/automatic_rendering_spec.rb +0 -0
  14. data/spec/{new_integration → integration}/action/view_rendering/paired_view_inference_spec.rb +0 -0
  15. data/spec/{new_integration → integration}/action/view_rendering_spec.rb +0 -0
  16. data/spec/{new_integration → integration}/code_loading/loading_from_app_spec.rb +0 -0
  17. data/spec/{new_integration → integration}/code_loading/loading_from_lib_spec.rb +0 -0
  18. data/spec/{new_integration → integration}/code_loading/loading_from_slice_spec.rb +0 -0
  19. data/spec/{new_integration → integration}/container/application_routes_helper_spec.rb +1 -3
  20. data/spec/{new_integration → integration}/container/auto_injection_spec.rb +0 -0
  21. data/spec/{new_integration → integration}/container/auto_registration_spec.rb +0 -0
  22. data/spec/{new_integration → integration}/container/autoloader_spec.rb +0 -0
  23. data/spec/{new_integration → integration}/container/imports_spec.rb +0 -0
  24. data/spec/{new_integration → integration}/container/prepare_container_spec.rb +0 -0
  25. data/spec/{new_integration → integration}/container/shutdown_spec.rb +0 -0
  26. data/spec/{new_integration → integration}/container/standard_bootable_components_spec.rb +0 -0
  27. data/spec/{new_integration → integration}/dotenv_loading_spec.rb +0 -0
  28. data/spec/{new_integration → integration}/rack_app/middleware_spec.rb +9 -15
  29. data/spec/{new_integration → integration}/rack_app/non_booted_rack_app_spec.rb +3 -5
  30. data/spec/{new_integration → integration}/rack_app/rack_app_spec.rb +28 -48
  31. data/spec/{new_integration → integration}/settings/access_to_constants_spec.rb +0 -0
  32. data/spec/{new_integration → integration}/settings/loading_from_env_spec.rb +0 -0
  33. data/spec/{new_integration → integration}/settings/settings_component_loading_spec.rb +0 -0
  34. data/spec/{new_integration → integration}/settings/using_types_spec.rb +0 -0
  35. data/spec/{new_integration → integration}/setup_spec.rb +20 -0
  36. data/spec/{new_integration → integration}/slices/external_slice_spec.rb +2 -4
  37. data/spec/{new_integration → integration}/slices/slice_configuration_spec.rb +0 -0
  38. data/spec/{new_integration → integration}/slices/slice_loading_spec.rb +0 -0
  39. data/spec/{new_integration → integration}/slices/slice_routing_spec.rb +5 -13
  40. data/spec/{new_integration → integration}/slices/slice_settings_spec.rb +0 -0
  41. data/spec/{new_integration → integration}/slices_spec.rb +0 -0
  42. data/spec/{new_integration → integration}/view/context/assets_spec.rb +0 -0
  43. data/spec/{new_integration → integration}/view/context/inflector_spec.rb +0 -0
  44. data/spec/{new_integration → integration}/view/context/request_spec.rb +0 -0
  45. data/spec/{new_integration → integration}/view/context/routes_spec.rb +1 -3
  46. data/spec/{new_integration → integration}/view/context/settings_spec.rb +0 -0
  47. data/spec/{new_integration → integration}/view/inflector_spec.rb +0 -0
  48. data/spec/{new_integration → integration}/view/part_namespace_spec.rb +0 -0
  49. data/spec/{new_integration → integration}/view/path_spec.rb +0 -0
  50. data/spec/{new_integration → integration}/view/slice_configuration_spec.rb +0 -0
  51. data/spec/{new_integration → integration}/view/template_spec.rb +0 -0
  52. data/spec/{new_integration → integration}/view/views_spec.rb +0 -0
  53. data/spec/unit/hanami/configuration/actions_spec.rb +4 -15
  54. data/spec/unit/hanami/configuration/router_spec.rb +45 -0
  55. data/spec/unit/hanami/configuration/views_spec.rb +4 -15
  56. data/spec/unit/hanami/version_spec.rb +1 -1
  57. metadata +97 -244
  58. data/lib/hanami/server.rb +0 -29
  59. data/spec/integration/application_middleware_stack_spec.rb +0 -84
  60. data/spec/integration/assets/cdn_spec.rb +0 -48
  61. data/spec/integration/assets/fingerprint_spec.rb +0 -42
  62. data/spec/integration/assets/helpers_spec.rb +0 -50
  63. data/spec/integration/assets/serve_spec.rb +0 -70
  64. data/spec/integration/assets/subresource_integrity_spec.rb +0 -54
  65. data/spec/integration/body_parsers_spec.rb +0 -50
  66. data/spec/integration/cli/assets/precompile_spec.rb +0 -147
  67. data/spec/integration/cli/assets_spec.rb +0 -14
  68. data/spec/integration/cli/console_spec.rb +0 -105
  69. data/spec/integration/cli/db/apply_spec.rb +0 -74
  70. data/spec/integration/cli/db/console_spec.rb +0 -40
  71. data/spec/integration/cli/db/create_spec.rb +0 -50
  72. data/spec/integration/cli/db/drop_spec.rb +0 -54
  73. data/spec/integration/cli/db/migrate_spec.rb +0 -108
  74. data/spec/integration/cli/db/prepare_spec.rb +0 -36
  75. data/spec/integration/cli/db/rollback_spec.rb +0 -96
  76. data/spec/integration/cli/db/version_spec.rb +0 -38
  77. data/spec/integration/cli/db_spec.rb +0 -21
  78. data/spec/integration/cli/destroy/action_spec.rb +0 -143
  79. data/spec/integration/cli/destroy/app_spec.rb +0 -118
  80. data/spec/integration/cli/destroy/mailer_spec.rb +0 -74
  81. data/spec/integration/cli/destroy/migration_spec.rb +0 -70
  82. data/spec/integration/cli/destroy/model_spec.rb +0 -113
  83. data/spec/integration/cli/destroy_spec.rb +0 -18
  84. data/spec/integration/cli/generate/action_spec.rb +0 -469
  85. data/spec/integration/cli/generate/app_spec.rb +0 -215
  86. data/spec/integration/cli/generate/mailer_spec.rb +0 -189
  87. data/spec/integration/cli/generate/migration_spec.rb +0 -72
  88. data/spec/integration/cli/generate/model_spec.rb +0 -290
  89. data/spec/integration/cli/generate/secret_spec.rb +0 -56
  90. data/spec/integration/cli/generate_spec.rb +0 -19
  91. data/spec/integration/cli/new/database_spec.rb +0 -235
  92. data/spec/integration/cli/new/hanami_head_spec.rb +0 -27
  93. data/spec/integration/cli/new/template_spec.rb +0 -118
  94. data/spec/integration/cli/new/test_spec.rb +0 -274
  95. data/spec/integration/cli/new_spec.rb +0 -970
  96. data/spec/integration/cli/plugins_spec.rb +0 -39
  97. data/spec/integration/cli/routes_spec.rb +0 -49
  98. data/spec/integration/cli/server_spec.rb +0 -626
  99. data/spec/integration/cli/version_spec.rb +0 -85
  100. data/spec/integration/early_hints_spec.rb +0 -35
  101. data/spec/integration/handle_exceptions_spec.rb +0 -244
  102. data/spec/integration/head_spec.rb +0 -89
  103. data/spec/integration/http_headers_spec.rb +0 -29
  104. data/spec/integration/mailer_spec.rb +0 -32
  105. data/spec/integration/middleware_spec.rb +0 -81
  106. data/spec/integration/mount_applications_spec.rb +0 -88
  107. data/spec/integration/project_initializers_spec.rb +0 -40
  108. data/spec/integration/rackup_spec.rb +0 -35
  109. data/spec/integration/rake/with_minitest_spec.rb +0 -67
  110. data/spec/integration/rake/with_rspec_spec.rb +0 -69
  111. data/spec/integration/routing_helpers_spec.rb +0 -61
  112. data/spec/integration/security/content_security_policy_spec.rb +0 -46
  113. data/spec/integration/security/csrf_protection_spec.rb +0 -42
  114. data/spec/integration/security/force_ssl_spec.rb +0 -29
  115. data/spec/integration/security/x_content_type_options_spec.rb +0 -46
  116. data/spec/integration/security/x_frame_options_spec.rb +0 -46
  117. data/spec/integration/security/x_xss_protection_spec.rb +0 -46
  118. data/spec/integration/send_file_spec.rb +0 -51
  119. data/spec/integration/sessions_spec.rb +0 -247
  120. data/spec/integration/static_middleware_spec.rb +0 -21
  121. data/spec/integration/streaming_spec.rb +0 -41
  122. data/spec/integration/unsafe_send_file_spec.rb +0 -52
  123. data/spec/support/fixtures/hanami-plugin/Gemfile +0 -8
  124. data/spec/support/fixtures/hanami-plugin/README.md +0 -35
  125. data/spec/support/fixtures/hanami-plugin/Rakefile +0 -4
  126. data/spec/support/fixtures/hanami-plugin/bin/console +0 -15
  127. data/spec/support/fixtures/hanami-plugin/bin/setup +0 -8
  128. data/spec/support/fixtures/hanami-plugin/hanami-plugin.gemspec +0 -28
  129. data/spec/support/fixtures/hanami-plugin/lib/hanami/plugin/cli.rb +0 -19
  130. data/spec/support/fixtures/hanami-plugin/lib/hanami/plugin/version.rb +0 -7
  131. data/spec/support/fixtures/hanami-plugin/lib/hanami/plugin.rb +0 -8
  132. data/spec/unit/hanami/routes_spec.rb +0 -25
@@ -1,118 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "hanami destroy", type: :integration do
4
- describe "app" do
5
- it "destroys app" do
6
- with_project do
7
- generate "app admin"
8
-
9
- output = [
10
- "subtract .env.test",
11
- "subtract .env.development",
12
- "subtract config/environment.rb",
13
- "subtract config/environment.rb",
14
- "remove spec/admin",
15
- "remove apps/admin"
16
- ]
17
-
18
- run_cmd "hanami destroy app admin", output
19
-
20
- expect(".env.test").to_not have_file_content(%r{ADMIN_SESSIONS_SECRET})
21
- expect(".env.development").to_not have_file_content(%r{ADMIN_SESSIONS_SECRET})
22
-
23
- expect("config/environment.rb").to_not have_file_content(%r{mount Admin::App})
24
- expect("config/environment.rb").to_not have_file_content("require_relative '../apps/admin/app'")
25
-
26
- expect("public/assets/admin").to_not be_an_existing_path
27
- expect("public/assets.json").to_not be_an_existing_path
28
-
29
- expect("spec/admin").to_not be_an_existing_path
30
- expect("apps/admin").to_not be_an_existing_path
31
- end
32
- end
33
-
34
- it "destroys app with actions and assets" do
35
- with_project do
36
- generate "app api --app-base-url=/api/v1"
37
- generate "action api home#index"
38
-
39
- asset = File.join("apps", "api", "assets", "javascripts", "app.js")
40
- touch asset
41
-
42
- hanami "assets precompile"
43
-
44
- output = [
45
- "subtract .env.test",
46
- "subtract .env.development",
47
- "subtract config/environment.rb",
48
- "subtract config/environment.rb",
49
- "remove public/assets/api/v1",
50
- "remove public/assets.json",
51
- "remove spec/api",
52
- "remove apps/api"
53
- ]
54
-
55
- run_cmd "hanami destroy app api", output
56
-
57
- expect(".env.test").to_not have_file_content(%r{API_SESSIONS_SECRET})
58
- expect(".env.development").to_not have_file_content(%r{API_SESSIONS_SECRET})
59
-
60
- expect("config/environment.rb").to_not have_file_content(%r{mount Api::App})
61
- expect("config/environment.rb").to_not have_file_content("require_relative '../apps/api/app'")
62
-
63
- expect("public/assets/api/v1").to_not be_an_existing_path
64
- expect("public/assets.json").to_not be_an_existing_path
65
-
66
- expect("spec/api").to_not be_an_existing_path
67
- expect("apps/api").to_not be_an_existing_path
68
- end
69
- end
70
-
71
- it "fails with missing argument" do
72
- with_project do
73
- output = <<-OUT
74
- ERROR: "hanami destroy app" was called with no arguments
75
- Usage: "hanami destroy app APP"
76
- OUT
77
-
78
- run_cmd "hanami destroy app", output, exit_status: 1
79
- end
80
- end
81
-
82
- it "fails with unknown app" do
83
- with_project do
84
- output = <<-OUT
85
- `unknown' is not a valid APP. Please specify one of: `web'
86
- OUT
87
-
88
- run_cmd "hanami destroy app unknown", output, exit_status: 1
89
- end
90
- end
91
-
92
- it "prints help message" do
93
- with_project do
94
- output = <<~OUT
95
- Command:
96
- hanami destroy app
97
-
98
- Usage:
99
- hanami destroy app APP
100
-
101
- Description:
102
- Destroy an app
103
-
104
- Arguments:
105
- APP # REQUIRED The app name (eg. `web`)
106
-
107
- Options:
108
- --help, -h # Print this help
109
-
110
- Examples:
111
- hanami destroy app admin # Destroy `admin` app
112
- OUT
113
-
114
- run_cmd 'hanami destroy app --help', output
115
- end
116
- end
117
- end # app
118
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "hanami destroy", type: :integration do
4
- describe "mailer" do
5
- context "destroy a mailer" do
6
- let(:output) do
7
- ["remove spec/bookshelf_generate_mailer/mailers/welcome_spec.rb",
8
- "remove lib/bookshelf_generate_mailer/mailers/templates/welcome.html.erb",
9
- "remove lib/bookshelf_generate_mailer/mailers/templates/welcome.txt.erb",
10
- "remove lib/bookshelf_generate_mailer/mailers/welcome.rb"]
11
- end
12
-
13
- it "generate the mailer files" do
14
- with_project("bookshelf_generate_mailer", test: "rspec") do
15
- generate "mailer welcome"
16
-
17
- run_cmd "hanami destroy mailer welcome", output
18
-
19
- expect("spec/bookshelf_generate_mailer/mailers/welcome_spec.rb").to_not be_an_existing_file
20
- expect("lib/bookshelf_generate_mailer/mailers/templates/welcome.html.erb").to_not be_an_existing_file
21
- expect("lib/bookshelf_generate_mailer/mailers/templates/welcome.txt.erb").to_not be_an_existing_file
22
- expect("lib/bookshelf_generate_mailer/mailers/welcome.rb").to_not be_an_existing_file
23
- end
24
- end
25
- end
26
-
27
- it "fails with missing arguments" do
28
- with_project("bookshelf_generate_mailer_without_args") do
29
- output = <<~OUT
30
- ERROR: "hanami generate mailer" was called with no arguments
31
- Usage: "hanami generate mailer MAILER"
32
- OUT
33
-
34
- run_cmd "hanami generate mailer", output, exit_status: 1
35
- end
36
- end
37
-
38
- it "fails with unknown mailer" do
39
- with_project do
40
- output = <<~OUT
41
- cannot find `unknown' mailer. Please have a look at `lib/bookshelf/mailers' directory to find an existing mailer.
42
- OUT
43
-
44
- run_cmd "hanami destroy mailer unknown", output, exit_status: 1
45
- end
46
- end
47
-
48
- it "prints help message" do
49
- with_project do
50
- output = <<~OUT
51
- Command:
52
- hanami destroy mailer
53
-
54
- Usage:
55
- hanami destroy mailer MAILER
56
-
57
- Description:
58
- Destroy a mailer
59
-
60
- Arguments:
61
- MAILER # REQUIRED The mailer name (eg. `welcome`)
62
-
63
- Options:
64
- --help, -h # Print this help
65
-
66
- Examples:
67
- hanami destroy mailer welcome # Destroy `WelcomeMailer` mailer
68
- OUT
69
-
70
- run_cmd 'hanami destroy mailer --help', output
71
- end
72
- end
73
- end
74
- end
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pathname"
4
-
5
- RSpec.describe "hanami destroy", type: :integration do
6
- describe "migration" do
7
- it "destroys migration" do
8
- with_project do
9
- migration = Pathname.new("db").join("migrations", "20170127165331_create_users.rb").to_s
10
- File.open(migration, "wb+") { |f| f.write("migration") }
11
-
12
- output = [
13
- "remove #{migration}"
14
- ]
15
-
16
- run_cmd "hanami destroy migration create_users", output
17
-
18
- expect(migration).to_not be_an_existing_file
19
- end
20
- end
21
-
22
- it "fails with missing argument" do
23
- with_project do
24
- output = <<~OUT
25
- ERROR: "hanami destroy migration" was called with no arguments
26
- Usage: "hanami destroy migration MIGRATION"
27
- OUT
28
- run_command "hanami destroy migration", output, exit_status: 1
29
- end
30
- end
31
-
32
- it "fails with unknown migration" do
33
- with_project do
34
- output = <<~OUT
35
- cannot find `create_unknowns'. Please have a look at `db/migrations' directory to find an existing migration
36
- OUT
37
- run_command "hanami destroy migration create_unknowns", output, exit_status: 1
38
- end
39
- end
40
-
41
- it "prints help message" do
42
- with_project do
43
- banner = <<~OUT
44
- Command:
45
- hanami destroy migration
46
-
47
- Usage:
48
- hanami destroy migration MIGRATION
49
-
50
- Description:
51
- Destroy a migration
52
-
53
- Arguments:
54
- MIGRATION # REQUIRED The migration name (eg. `create_users`)
55
-
56
- Options:
57
- --help, -h # Print this help
58
-
59
- Examples:
60
- OUT
61
- output = [
62
- banner,
63
- %r{ hanami destroy migration create_users # Destroy `db/migrations/[\d]{14}_create_users.rb`}
64
- ]
65
-
66
- run_command "hanami destroy migration --help", output
67
- end
68
- end
69
- end # migration
70
- end
@@ -1,113 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pathname"
4
-
5
- RSpec.describe "hanami destroy", type: :integration do
6
- describe "model" do
7
- it "destroys model" do
8
- with_project do
9
- generate "model user"
10
- migration = Dir.glob(Pathname.new("db").join("migrations", "*_create_users.rb")).first.to_s
11
-
12
- output = [
13
- "remove spec/bookshelf/repositories/user_repository_spec.rb",
14
- "remove spec/bookshelf/entities/user_spec.rb",
15
- "remove lib/bookshelf/repositories/user_repository.rb",
16
- "remove lib/bookshelf/entities/user.rb"
17
- ]
18
-
19
- run_cmd "hanami destroy model user", output
20
-
21
- expect(migration).to be_an_existing_file
22
-
23
- expect("lib/bookshelf/entities/user.rb").to_not be_an_existing_file
24
- expect("lib/bookshelf/repositories/user_repository.rb").to_not be_an_existing_file
25
- expect("spec/bookshelf/entities/user_spec.rb").to_not be_an_existing_file
26
- expect("spec/bookshelf/repositories/user_repository_spec.rb").to_not be_an_existing_file
27
- end
28
- end
29
-
30
- it "destroys model even if migration was deleted manually" do
31
- with_project do
32
- generate "model user"
33
- migration = Dir.glob(Pathname.new("db").join("migrations", "*_create_users.rb")).first.to_s
34
-
35
- run_simple "rm #{migration}"
36
-
37
- expect(migration).to_not be_an_existing_file
38
-
39
- output = [
40
- "remove spec/bookshelf/repositories/user_repository_spec.rb",
41
- "remove spec/bookshelf/entities/user_spec.rb",
42
- "remove lib/bookshelf/repositories/user_repository.rb",
43
- "remove lib/bookshelf/entities/user.rb"
44
- ]
45
-
46
- run_cmd "hanami destroy model user", output
47
- end
48
- end
49
-
50
- it "fails with missing argument" do
51
- with_project do
52
- output = <<~OUT
53
- ERROR: "hanami destroy model" was called with no arguments
54
- Usage: "hanami destroy model MODEL"
55
- OUT
56
-
57
- run_cmd "hanami destroy model", output, exit_status: 1
58
- end
59
- end
60
-
61
- xit "prints help message" do
62
- with_project do
63
- output = <<~OUT
64
- Usage:
65
- hanami destroy model NAME
66
-
67
- Description:
68
- `hanami destroy model` will destroy an entity along with repository and \n corresponding tests
69
-
70
- > $ hanami destroy model car
71
- OUT
72
-
73
- run_cmd 'hanami destroy model --help', output
74
- end
75
- end
76
-
77
- it "fails with unknown model" do
78
- with_project do
79
- output = <<~OUT
80
- cannot find `unknown' model. Please have a look at `lib/bookshelf/entities' directory to find an existing model.
81
- OUT
82
-
83
- run_cmd "hanami destroy model unknown", output, exit_status: 1
84
- end
85
- end
86
-
87
- it "prints help message" do
88
- with_project do
89
- output = <<~OUT
90
- Command:
91
- hanami destroy model
92
-
93
- Usage:
94
- hanami destroy model MODEL
95
-
96
- Description:
97
- Destroy a model
98
-
99
- Arguments:
100
- MODEL # REQUIRED The model name (eg. `user`)
101
-
102
- Options:
103
- --help, -h # Print this help
104
-
105
- Examples:
106
- hanami destroy model user # Destroy `User` entity and `UserRepository` repository
107
- OUT
108
-
109
- run_cmd 'hanami destroy model --help', output
110
- end
111
- end
112
- end # model
113
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "hanami destroy", type: :integration do
4
- it "prints subcommands" do
5
- with_project do
6
- output = <<~OUT
7
- Commands:
8
- hanami destroy action APP ACTION # Destroy an action from app
9
- hanami destroy app APP # Destroy an app
10
- hanami destroy mailer MAILER # Destroy a mailer
11
- hanami destroy migration MIGRATION # Destroy a migration
12
- hanami destroy model MODEL # Destroy a model
13
- OUT
14
-
15
- run_cmd "hanami destroy", output, exit_status: 1
16
- end
17
- end
18
- end