katapult 0.2.0 → 0.3.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 +5 -5
- data/.rspec +1 -0
- data/.ruby-version +1 -1
- data/Gemfile +9 -0
- data/README.md +122 -94
- data/Rakefile +13 -0
- data/bin/katapult +59 -25
- data/features/application_model.feature +55 -0
- data/features/authenticate.feature +88 -62
- data/features/basics.feature +64 -402
- data/features/binary.feature +56 -42
- data/features/configuration.feature +4 -4
- data/features/model.feature +21 -30
- data/features/navigation.feature +35 -48
- data/features/step_definitions/aruba_steps.rb +3 -0
- data/features/step_definitions/katapult_steps.rb +307 -8
- data/features/step_definitions/rails_steps.rb +74 -14
- data/features/step_definitions/test_steps.rb +5 -5
- data/features/step_definitions/version_steps.rb +22 -0
- data/features/support/env.rb +11 -3
- data/features/{wui.feature → web_ui.feature} +175 -148
- data/katapult.gemspec +8 -13
- data/lib/generators/katapult/app_model/app_model_generator.rb +12 -0
- data/lib/generators/katapult/app_model/templates/lib/katapult/application_model.rb +40 -0
- data/lib/generators/katapult/basics/basics_generator.rb +186 -51
- data/lib/generators/katapult/basics/templates/.browserslistrc +1 -0
- data/lib/generators/katapult/basics/templates/.gitignore +20 -21
- data/lib/generators/katapult/basics/templates/.rspec_parallel +3 -0
- data/lib/generators/katapult/basics/templates/Capfile +5 -1
- data/lib/generators/katapult/basics/templates/Gemfile +23 -34
- data/lib/generators/katapult/basics/templates/Guardfile +0 -12
- data/lib/generators/katapult/basics/templates/app/controllers/errors_controller.rb +9 -0
- data/lib/generators/katapult/basics/templates/app/helpers/unpoly_helper.rb +13 -0
- data/lib/generators/katapult/{haml → basics}/templates/app/views/layouts/_flashes.html.haml +1 -1
- data/lib/generators/katapult/basics/templates/app/views/layouts/_menu_bar.html.haml.tt +12 -0
- data/lib/generators/katapult/basics/templates/app/views/layouts/application.html.haml.tt +25 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/images/.keep +0 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/index.js +16 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/application.js +0 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/bootstrap.js +12 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/compilers/.keep +0 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/macros/content_link.js +17 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/macros/modal_link.js +17 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/javascripts/unpoly.js +9 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/_definitions.sass +25 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/_environment.sass +2 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/_mixins.sass +3 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/blocks/.keep +0 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/custom_bootstrap.sass +50 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/ext/.keep +0 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/ext/bootstrap/navbar.sass +83 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/theme.sass +11 -0
- data/lib/generators/katapult/basics/templates/app/webpack/assets/stylesheets/unpoly.sass +2 -0
- data/lib/generators/katapult/basics/templates/app/webpack/packs/application.js +13 -0
- data/lib/generators/katapult/basics/templates/config/database.sample.yml +1 -1
- data/lib/generators/katapult/basics/templates/config/deploy.rb +3 -4
- data/lib/generators/katapult/basics/templates/config/environments/staging.rb +5 -0
- data/lib/generators/katapult/basics/templates/config/initializers/better_errors.rb +23 -0
- data/lib/generators/katapult/basics/templates/config/initializers/exception_notification.rb.tt +1 -1
- data/lib/generators/katapult/basics/templates/config/initializers/ext.rb +1 -1
- data/lib/generators/katapult/basics/templates/config/webpack/loaders/unpoly.js +4 -0
- data/lib/generators/katapult/basics/templates/features/support/capybara_screenshot.rb +7 -0
- data/lib/generators/katapult/basics/templates/features/support/factory_bot.rb +1 -0
- data/lib/generators/katapult/basics/templates/features/support/paths.rb +7 -2
- data/lib/generators/katapult/basics/templates/features/support/rspec_doubles.rb +1 -0
- data/lib/generators/katapult/basics/templates/features/support/selectors.rb +3 -3
- data/lib/generators/katapult/basics/templates/features/support/selenium.rb +13 -0
- data/lib/generators/katapult/basics/templates/features/support/{env-custom.rb → spreewald.rb} +0 -0
- data/lib/generators/katapult/basics/templates/features/support/webpacker.rb +35 -0
- data/lib/generators/katapult/basics/templates/lib/ext/action_view/form_for_with_development_errors.rb +31 -31
- data/lib/generators/katapult/basics/templates/lib/ext/active_record/find_by_anything.rb +4 -3
- data/lib/generators/katapult/basics/templates/public/robots.txt +5 -0
- data/lib/generators/katapult/basics/templates/spec/assets/sample.pdf +0 -0
- data/lib/generators/katapult/basics/templates/spec/factories/factories.rb +1 -1
- data/lib/generators/katapult/basics/templates/spec/support/database_cleaner.rb +20 -0
- data/lib/generators/katapult/basics/templates/spec/support/factory_bot.rb +3 -0
- data/lib/generators/katapult/basics/templates/spec/support/fixture_file.rb +6 -0
- data/lib/generators/katapult/basics/templates/spec/support/postgresql_sequences.rb +15 -0
- data/lib/generators/katapult/basics/templates/spec/support/timecop.rb +3 -0
- data/lib/generators/katapult/clearance/clearance_generator.rb +14 -2
- data/lib/generators/katapult/clearance/templates/app/views/layouts/_current_user.html.haml +11 -0
- data/lib/generators/katapult/clearance/templates/app/views/passwords/create.html.haml +10 -4
- data/lib/generators/katapult/clearance/templates/app/views/passwords/edit.html.haml +12 -12
- data/lib/generators/katapult/clearance/templates/app/views/passwords/new.html.haml +14 -11
- data/lib/generators/katapult/clearance/templates/app/views/sessions/new.html.haml +16 -15
- data/lib/generators/katapult/clearance/templates/features/authentication.feature +3 -3
- data/lib/generators/katapult/cucumber_features/templates/feature.feature +1 -1
- data/lib/generators/katapult/model_specs/templates/model_spec.rb +3 -5
- data/lib/generators/katapult/navigation/navigation_generator.rb +7 -1
- data/lib/generators/katapult/navigation/templates/app/views/layouts/_navigation.html.haml +15 -0
- data/lib/generators/katapult/transform/transform_generator.rb +12 -17
- data/lib/generators/katapult/views/templates/_form.html.haml +48 -0
- data/lib/generators/katapult/views/templates/app/helpers/table_helper.rb +14 -0
- data/lib/generators/katapult/views/templates/app/webpack/assets/stylesheets/blocks/action_bar.sass +22 -0
- data/lib/generators/katapult/views/templates/app/webpack/assets/stylesheets/blocks/title.sass +11 -0
- data/lib/generators/katapult/views/templates/custom_action.html.haml +5 -0
- data/lib/generators/katapult/views/templates/edit.html.haml +4 -0
- data/lib/generators/katapult/views/templates/index.html.haml +26 -0
- data/lib/generators/katapult/{haml → views}/templates/new.html.haml +1 -1
- data/lib/generators/katapult/views/templates/show.html.haml +39 -0
- data/lib/generators/katapult/{haml/haml_generator.rb → views/views_generator.rb} +19 -25
- data/lib/generators/katapult/{w_u_i → web_ui}/templates/_route.rb +3 -3
- data/lib/generators/katapult/{w_u_i → web_ui}/templates/controller.rb +21 -23
- data/lib/generators/katapult/{w_u_i/w_u_i_generator.rb → web_ui/web_ui_generator.rb} +7 -12
- data/lib/katapult/action.rb +1 -1
- data/lib/katapult/application_model.rb +8 -8
- data/lib/katapult/binary_util.rb +48 -10
- data/lib/katapult/generator.rb +2 -10
- data/lib/katapult/generator_goodies.rb +23 -0
- data/lib/katapult/navigation.rb +10 -5
- data/lib/katapult/parser.rb +15 -8
- data/lib/katapult/version.rb +5 -1
- data/lib/katapult/{wui.rb → web_ui.rb} +19 -4
- data/lib/katapult.rb +0 -5
- data/script/console +5 -2
- data/script/kta +8 -0
- data/script/update +80 -0
- data/spec/action_spec.rb +0 -1
- data/spec/attribute_spec.rb +0 -1
- data/spec/element_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/parser_spec.rb +26 -0
- data/spec/util_spec.rb +0 -1
- data/spec/{wui_spec.rb → web_ui_spec.rb} +24 -12
- metadata +86 -124
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_all.sass +0 -4
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_items.sass +0 -11
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_layout.sass +0 -26
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_navigation.sass +0 -11
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_tools.sass +0 -12
- data/lib/generators/katapult/basics/templates/app/assets/stylesheets/application.sass +0 -6
- data/lib/generators/katapult/basics/templates/config/spring.rb +0 -3
- data/lib/generators/katapult/basics/templates/features/support/factory_girl.rb +0 -1
- data/lib/generators/katapult/basics/templates/spec/support/factory_girl.rb +0 -3
- data/lib/generators/katapult/haml/templates/_form.html.haml +0 -38
- data/lib/generators/katapult/haml/templates/app/views/layouts/application.html.haml +0 -33
- data/lib/generators/katapult/haml/templates/custom_action.html.haml +0 -5
- data/lib/generators/katapult/haml/templates/edit.html.haml +0 -4
- data/lib/generators/katapult/haml/templates/index.html.haml +0 -29
- data/lib/generators/katapult/haml/templates/show.html.haml +0 -39
- data/lib/generators/katapult/install/install_generator.rb +0 -14
- data/lib/generators/katapult/install/templates/lib/katapult/application_model.rb +0 -20
- data/lib/generators/katapult/navigation/templates/app/models/navigation.rb +0 -12
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
#@announce-output
|
|
2
|
+
#@announce-stderr
|
|
1
3
|
Feature: Add authentication to an application
|
|
2
4
|
|
|
3
5
|
Background:
|
|
4
|
-
Given a
|
|
5
|
-
And I install katapult
|
|
6
|
-
And I generate katapult basics
|
|
6
|
+
Given a new Rails application with Katapult basics installed
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
Scenario: Authenticate with the
|
|
10
|
-
When I
|
|
9
|
+
Scenario: Authenticate with the user model
|
|
10
|
+
When I write to "lib/katapult/application_model.rb" with:
|
|
11
11
|
"""
|
|
12
12
|
model 'user'
|
|
13
|
-
|
|
13
|
+
web_ui('user', &:crud)
|
|
14
14
|
authenticate 'user', system_email: 'system@example.com'
|
|
15
15
|
"""
|
|
16
|
-
And I successfully transform the application model
|
|
16
|
+
And I successfully transform the application model including migrations
|
|
17
17
|
Then the file "Gemfile" should contain "gem 'clearance'"
|
|
18
18
|
And the file "app/controllers/application_controller.rb" should contain:
|
|
19
19
|
"""
|
|
@@ -41,19 +41,35 @@ Feature: Add authentication to an application
|
|
|
41
41
|
end
|
|
42
42
|
"""
|
|
43
43
|
And the file "app/controllers/users_controller.rb" should match /permit.*email.*password/
|
|
44
|
+
And the file "app/views/layouts/_menu_bar.html.haml" should contain:
|
|
45
|
+
"""
|
|
46
|
+
= render 'layouts/current_user' if signed_in?
|
|
47
|
+
"""
|
|
48
|
+
And the file "app/views/layouts/_current_user.html.haml" should contain:
|
|
49
|
+
"""
|
|
50
|
+
%ul.nav.navbar-nav.navbar-right
|
|
51
|
+
%li.dropdown
|
|
52
|
+
= link_to edit_user_path(current_user), data: { toggle: 'dropdown' } do
|
|
53
|
+
Hello,
|
|
54
|
+
= current_user
|
|
55
|
+
%span.caret
|
|
56
|
+
|
|
57
|
+
%ul.dropdown-menu
|
|
58
|
+
%li= link_to 'Edit profile', edit_user_path(current_user)
|
|
59
|
+
%li.divider
|
|
60
|
+
%li= link_to 'Sign out', sign_out_path, method: :delete, class: 'navbar-logout'
|
|
61
|
+
"""
|
|
44
62
|
And the file "app/views/users/_form.html.haml" should contain:
|
|
45
63
|
"""
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
= form.email_field :email
|
|
64
|
+
.form-group
|
|
65
|
+
= form.label :email
|
|
66
|
+
= form.email_field :email
|
|
50
67
|
"""
|
|
51
68
|
And the file "app/views/users/_form.html.haml" should contain:
|
|
52
69
|
"""
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
= form.password_field :password
|
|
70
|
+
.form-group
|
|
71
|
+
= form.label :password
|
|
72
|
+
= form.password_field :password
|
|
57
73
|
"""
|
|
58
74
|
And the file "app/views/clearance_mailer/change_password.html.haml" should contain exactly:
|
|
59
75
|
"""
|
|
@@ -73,69 +89,80 @@ Feature: Add authentication to an application
|
|
|
73
89
|
"""
|
|
74
90
|
And the file "app/views/passwords/create.html.haml" should contain exactly:
|
|
75
91
|
"""
|
|
76
|
-
|
|
77
|
-
|
|
92
|
+
.row
|
|
93
|
+
.col-md-4.col-md-offset-4
|
|
78
94
|
|
|
79
|
-
|
|
80
|
-
|
|
95
|
+
%h1
|
|
96
|
+
Password Reset Instructions Sent
|
|
97
|
+
|
|
98
|
+
%p
|
|
99
|
+
We've sent you an email with instructions on how to reset your password.
|
|
100
|
+
|
|
101
|
+
%p
|
|
102
|
+
= link_to 'Back to sign-in form', sign_in_path, class: 'btn btn-primary'
|
|
81
103
|
"""
|
|
82
104
|
And the file "app/views/passwords/edit.html.haml" should contain exactly:
|
|
83
105
|
"""
|
|
84
|
-
|
|
85
|
-
|
|
106
|
+
.row
|
|
107
|
+
.col-md-4.col-md-offset-4
|
|
86
108
|
|
|
87
|
-
|
|
88
|
-
|
|
109
|
+
%h1
|
|
110
|
+
Reset Password
|
|
89
111
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
112
|
+
= form_for :password_reset,
|
|
113
|
+
url: user_password_path(@user, token: @user.confirmation_token),
|
|
114
|
+
html: { method: :put } do |form|
|
|
93
115
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
116
|
+
.form-group
|
|
117
|
+
= form.label :password
|
|
118
|
+
= form.password_field :password, class: 'form-control',
|
|
119
|
+
placeholder: 'New password'
|
|
98
120
|
|
|
99
|
-
|
|
121
|
+
= form.submit 'Update password', class: 'btn btn-primary'
|
|
100
122
|
"""
|
|
101
123
|
And the file "app/views/passwords/new.html.haml" should contain exactly:
|
|
102
124
|
"""
|
|
103
|
-
|
|
104
|
-
|
|
125
|
+
.row
|
|
126
|
+
.col-md-4.col-md-offset-4
|
|
105
127
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
to reset your password.
|
|
128
|
+
%h1
|
|
129
|
+
Password Reset
|
|
109
130
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
131
|
+
%p
|
|
132
|
+
Please enter your email address. We will send you instructions on how
|
|
133
|
+
to reset your password.
|
|
134
|
+
|
|
135
|
+
= form_for :password, url: passwords_path do |form|
|
|
136
|
+
.form-group
|
|
137
|
+
= form.label :email
|
|
138
|
+
= form.email_field :email, class: 'form-control',
|
|
139
|
+
placeholder: 'Email address'
|
|
115
140
|
|
|
116
|
-
|
|
141
|
+
= form.submit 'Request instructions', class: 'btn btn-primary'
|
|
117
142
|
"""
|
|
118
143
|
And the file "app/views/sessions/new.html.haml" should contain exactly:
|
|
119
144
|
"""
|
|
120
|
-
|
|
121
|
-
|
|
145
|
+
.row
|
|
146
|
+
.col-md-4.col-md-offset-4
|
|
122
147
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
= form.label :email
|
|
126
|
-
= form.email_field :email, class: 'form-control',
|
|
127
|
-
placeholder: 'Email Address', required: true, autofocus: true
|
|
148
|
+
%h1
|
|
149
|
+
Please sign in
|
|
128
150
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
151
|
+
= form_for :session, url: session_path do |form|
|
|
152
|
+
.form-group
|
|
153
|
+
= form.label :email
|
|
154
|
+
= form.email_field :email, class: 'form-control',
|
|
155
|
+
placeholder: 'Email Address', required: true, autofocus: true
|
|
156
|
+
|
|
157
|
+
.form-group
|
|
158
|
+
= form.label :password
|
|
159
|
+
= form.password_field :password, class: 'form-control', required: true,
|
|
160
|
+
placeholder: 'Password'
|
|
133
161
|
|
|
134
|
-
|
|
135
|
-
|
|
162
|
+
%p
|
|
163
|
+
= form.submit 'Sign in', class: 'btn btn-primary'
|
|
164
|
+
= link_to 'Forgot password', new_password_path, class: 'btn btn-link'
|
|
136
165
|
|
|
137
|
-
%p
|
|
138
|
-
= link_to 'Forgot password', new_password_path, class: 'text-muted'
|
|
139
166
|
"""
|
|
140
167
|
And the file "config/environments/test.rb" should contain:
|
|
141
168
|
"""
|
|
@@ -177,7 +204,7 @@ Feature: Add authentication to an application
|
|
|
177
204
|
"""
|
|
178
205
|
And there should be a migration with:
|
|
179
206
|
"""
|
|
180
|
-
class AddClearanceToUsers < ActiveRecord::Migration
|
|
207
|
+
class AddClearanceToUsers < ActiveRecord::Migration[5.1]
|
|
181
208
|
def self.up
|
|
182
209
|
change_table :users do |t|
|
|
183
210
|
t.string :encrypted_password, limit: 128
|
|
@@ -261,7 +288,7 @@ Feature: Add authentication to an application
|
|
|
261
288
|
And I sign in as the user above
|
|
262
289
|
|
|
263
290
|
When I go to the homepage
|
|
264
|
-
And I follow "henry@example.com" within the
|
|
291
|
+
And I follow "henry@example.com" within the navbar
|
|
265
292
|
Then I should be on the form for the user above
|
|
266
293
|
|
|
267
294
|
When I fill in "Password" with "new-password"
|
|
@@ -284,7 +311,7 @@ Feature: Add authentication to an application
|
|
|
284
311
|
And I should see "Password Reset"
|
|
285
312
|
|
|
286
313
|
When I fill in "Email" with "henry@example.com"
|
|
287
|
-
And I press "Request
|
|
314
|
+
And I press "Request instructions"
|
|
288
315
|
Then an email should have been sent with:
|
|
289
316
|
\"\"\"
|
|
290
317
|
From: system@example.com
|
|
@@ -299,7 +326,7 @@ Feature: Add authentication to an application
|
|
|
299
326
|
And I should see "Reset Password"
|
|
300
327
|
|
|
301
328
|
When I fill in "Choose password" with "new-password"
|
|
302
|
-
And I press "Update
|
|
329
|
+
And I press "Update password"
|
|
303
330
|
Then I should see "Password successfully changed" within the flash
|
|
304
331
|
And I should be on the homepage
|
|
305
332
|
"""
|
|
@@ -341,4 +368,3 @@ Feature: Add authentication to an application
|
|
|
341
368
|
|
|
342
369
|
When I run cucumber
|
|
343
370
|
Then the features should pass
|
|
344
|
-
|