katapult 0.1.2 → 0.2.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.ruby-version +1 -1
  4. data/README.md +61 -35
  5. data/bin/katapult +24 -34
  6. data/features/authenticate.feature +344 -0
  7. data/features/basics.feature +590 -0
  8. data/features/binary.feature +33 -1
  9. data/features/model.feature +9 -13
  10. data/features/step_definitions/rails_steps.rb +3 -2
  11. data/features/wui.feature +49 -4
  12. data/lib/generators/katapult/basics/basics_generator.rb +63 -17
  13. data/lib/generators/katapult/basics/templates/.gitignore +1 -0
  14. data/lib/generators/katapult/basics/templates/.ruby-version +1 -1
  15. data/lib/generators/katapult/basics/templates/Capfile +25 -0
  16. data/lib/generators/katapult/basics/templates/Gemfile +14 -6
  17. data/lib/generators/katapult/basics/templates/Guardfile +44 -0
  18. data/lib/generators/katapult/basics/templates/config/database.sample.yml +3 -2
  19. data/lib/generators/katapult/basics/templates/config/database.yml +3 -2
  20. data/lib/generators/katapult/basics/templates/config/deploy/production.rb +8 -0
  21. data/lib/generators/katapult/basics/templates/config/deploy/staging.rb +7 -0
  22. data/lib/generators/katapult/basics/templates/config/deploy.rb +37 -0
  23. data/lib/generators/katapult/basics/templates/config/initializers/ext.rb +3 -0
  24. data/lib/generators/katapult/basics/templates/features/support/factory_girl.rb +1 -0
  25. data/lib/generators/katapult/basics/templates/features/support/paths.rb +6 -0
  26. data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/db.rake +28 -0
  27. data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/deploy.rake +15 -0
  28. data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/passenger.rake +8 -0
  29. data/lib/generators/katapult/basics/templates/{config/initializers → lib/ext/action_view}/form_for_with_development_errors.rb +0 -2
  30. data/lib/generators/katapult/basics/templates/lib/ext/action_view/spec_label.rb +46 -0
  31. data/lib/generators/katapult/basics/templates/{config/initializers → lib/ext/active_record}/find_by_anything.rb +0 -0
  32. data/lib/generators/katapult/basics/templates/lib/ext/active_record/these.rb +7 -0
  33. data/lib/generators/katapult/basics/templates/lib/ext/array/xss_aware_join.rb +10 -0
  34. data/lib/generators/katapult/basics/templates/lib/ext/enumerable/natural_sort.rb +15 -0
  35. data/lib/generators/katapult/basics/templates/lib/ext/hash/infinite.rb +7 -0
  36. data/lib/generators/katapult/basics/templates/lib/ext/string/html_entities.rb +11 -0
  37. data/lib/generators/katapult/basics/templates/lib/ext/string/to_sort_atoms.rb +52 -0
  38. data/lib/generators/katapult/basics/templates/lib/tasks/pending_migrations.rake +24 -0
  39. data/lib/generators/katapult/basics/templates/spec/factories/factories.rb +9 -0
  40. data/lib/generators/katapult/basics/templates/spec/support/factory_girl.rb +3 -0
  41. data/lib/generators/katapult/clearance/clearance_generator.rb +125 -0
  42. data/lib/generators/katapult/clearance/templates/app/controllers/passwords_controller.rb +16 -0
  43. data/lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.html.haml +6 -0
  44. data/lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.text.erb +3 -0
  45. data/lib/generators/katapult/clearance/templates/app/views/passwords/create.html.haml +5 -0
  46. data/lib/generators/katapult/clearance/templates/app/views/passwords/edit.html.haml +16 -0
  47. data/lib/generators/katapult/clearance/templates/app/views/passwords/new.html.haml +14 -0
  48. data/lib/generators/katapult/clearance/templates/app/views/sessions/new.html.haml +19 -0
  49. data/lib/generators/katapult/clearance/templates/config/initializers/clearance.rb +15 -0
  50. data/lib/generators/katapult/clearance/templates/config/locales/clearance.en.yml +59 -0
  51. data/lib/generators/katapult/clearance/templates/features/authentication.feature +94 -0
  52. data/lib/generators/katapult/clearance/templates/features/step_definitions/authentication_steps.rb +4 -0
  53. data/lib/generators/katapult/cucumber_features/templates/feature.feature +11 -7
  54. data/lib/generators/katapult/haml/haml_generator.rb +5 -0
  55. data/lib/generators/katapult/haml/templates/_form.html.haml +4 -4
  56. data/lib/generators/katapult/haml/templates/app/views/layouts/_flashes.html.haml +3 -0
  57. data/lib/generators/katapult/haml/templates/app/views/layouts/application.html.haml +9 -3
  58. data/lib/generators/katapult/haml/templates/index.html.haml +1 -1
  59. data/lib/generators/katapult/haml/templates/show.html.haml +2 -4
  60. data/lib/generators/katapult/install/templates/lib/katapult/application_model.rb +9 -7
  61. data/lib/generators/katapult/model/model_generator.rb +1 -1
  62. data/lib/generators/katapult/w_u_i/templates/controller.rb +1 -1
  63. data/lib/generators/katapult/w_u_i/w_u_i_generator.rb +4 -2
  64. data/lib/katapult/application_model.rb +8 -1
  65. data/lib/katapult/attribute.rb +10 -11
  66. data/lib/katapult/authentication.rb +25 -0
  67. data/lib/katapult/binary_util.rb +37 -0
  68. data/lib/katapult/element.rb +1 -1
  69. data/lib/katapult/generator.rb +6 -0
  70. data/lib/katapult/model.rb +13 -1
  71. data/lib/katapult/parser.rb +7 -0
  72. data/lib/katapult/version.rb +1 -1
  73. data/lib/katapult/wui.rb +4 -0
  74. data/lib/katapult.rb +2 -0
  75. data/spec/attribute_spec.rb +13 -0
  76. data/spec/element_spec.rb +5 -0
  77. data/spec/model_spec.rb +5 -4
  78. data/spec/util_spec.rb +8 -8
  79. data/spec/wui_spec.rb +19 -0
  80. metadata +44 -8
  81. data/features/katapult.feature +0 -271
  82. data/lib/katapult/util.rb +0 -16
@@ -1,271 +0,0 @@
1
- Feature: Katapult in general
2
-
3
- Background:
4
- Given a pristine Rails application
5
-
6
-
7
- Scenario: Install katapult
8
- When I install katapult
9
- Then the file "lib/katapult/application_model.rb" should contain exactly:
10
- """
11
- # Here you define the fundamentals of your application.
12
- #
13
- # Add a model:
14
- # model 'customer' do |customer|
15
- # customer.attr :name
16
- # customer.attr :birth, type: :date
17
- # customer.attr :email
18
- # end
19
- #
20
- # Add a web user interface:
21
- # wui 'customer' do |wui|
22
- # wui.action :index
23
- # wui.action :show
24
- # wui.action :lock, scope: :member, method: :post
25
- # end
26
- #
27
- # Add navigation
28
- # navigation :main
29
-
30
- """
31
-
32
-
33
- Scenario: Generate basic files and settings
34
- Given I install katapult
35
-
36
- When I generate katapult basics
37
- Then the file ".ruby-version" should contain "2.1.5"
38
-
39
-
40
- And the file "config/cucumber.yml" should contain:
41
- """
42
- default: <%= std_opts %> features
43
- wip: --tags @wip:3 --wip features
44
- parallel: <%= std_opts %> features <%= log_failures %>
45
- rerun: -r features --format pretty --strict <%= rerun_failures %> <%= log_failures %>
46
- """
47
-
48
-
49
- And the file ".gitignore" should contain "config/database.yml"
50
- And the file "Gemfile" should contain "gem 'rails', '4.2.4'"
51
- And the file "Gemfile" should contain exactly:
52
- """
53
- source 'https://rubygems.org'
54
-
55
- # from original Gemfile
56
- gem 'rails', '4.2.4'
57
- gem 'jquery-rails'
58
- gem 'jbuilder', '~> 2.0'
59
- gem 'katapult', path: '../../..'
60
-
61
- # engines
62
- gem 'haml-rails'
63
- gem 'mysql2', '~> 0.3.18' # Work around require-error in Rails 4.2
64
-
65
- # internal
66
- gem 'exception_notification'
67
- gem 'breach-mitigation-rails'
68
-
69
- # better coding
70
- gem 'modularity'
71
- gem 'edge_rider'
72
- gem 'andand'
73
-
74
- # models
75
- gem 'has_defaults'
76
- gem 'assignable_values'
77
-
78
- # gem 'carrierwave'
79
- # gem 'mini_magick'
80
-
81
- # gem 'spreadsheet'
82
- # gem 'vcard'
83
-
84
- # views
85
- # gem 'simple_form'
86
- # gem 'nested_form'
87
- gem 'will_paginate'
88
- gem 'makandra-navy', require: 'navy'
89
-
90
- # assets
91
- gem 'bootstrap-sass'
92
- gem 'sass-rails'
93
- gem 'autoprefixer-rails'
94
- gem 'coffee-rails'
95
- gem 'uglifier'
96
- gem 'compass-rails', '>= 2.0.4' # fixes "uninitialized constant Sprockets::SassCacheStore"
97
- gem 'compass-rgbapng'
98
-
99
- group :development do
100
- gem 'query_diet'
101
- gem 'better_errors'
102
- gem 'binding_of_caller'
103
- gem 'thin'
104
-
105
- gem 'parallel_tests'
106
- gem 'guard-livereload', require: false
107
- gem 'rack-livereload'
108
- gem 'spring-commands-rspec'
109
- gem 'spring-commands-cucumber'
110
- end
111
-
112
- group :development, :test do
113
- gem 'byebug'
114
- gem 'factory_girl_rails'
115
- gem 'rspec-rails'
116
- gem 'spring'
117
- end
118
-
119
- group :test do
120
- gem 'database_cleaner'
121
- gem 'timecop'
122
- gem 'launchy'
123
-
124
- gem 'capybara'
125
- gem 'capybara-screenshot'
126
- gem 'cucumber-rails', require: false
127
- gem 'cucumber_factory'
128
- gem 'selenium-webdriver'
129
- gem 'spreewald'
130
-
131
- gem 'rspec'
132
- gem 'shoulda-matchers', require: false
133
- end
134
-
135
- """
136
-
137
-
138
-
139
- # Config
140
- And the file "config/application.rb" should contain "config.time_zone = 'Berlin'"
141
- And the file "config/database.yml" should contain exactly:
142
- """
143
- common: &common
144
- adapter: mysql2
145
- encoding: utf8
146
- username: katapult
147
- password: secret
148
-
149
- development:
150
- <<: *common
151
- database: katapult_test_app_development
152
-
153
- test: &test
154
- <<: *common
155
- database: katapult_test_app_test<%= ENV['TEST_ENV_NUMBER'] %>
156
- """
157
-
158
- And the file "config/database.sample.yml" should contain exactly:
159
- """
160
- common: &common
161
- adapter: mysql2
162
- encoding: utf8
163
- username: root
164
- password:
165
-
166
- development:
167
- <<: *common
168
- database: katapult_test_app_development
169
-
170
- test:
171
- <<: *common
172
- database: katapult_test_app_test<%= ENV['TEST_ENV_NUMBER'] %>
173
- """
174
-
175
- And the file "config/cucumber.yml" should contain:
176
- """
177
- default: <%= std_opts %> features
178
- wip: --tags @wip:3 --wip features
179
- parallel: <%= std_opts %> features <%= log_failures %>
180
- rerun: -r features --format pretty --strict <%= rerun_failures %> <%= log_failures %>
181
- """
182
- And the file "config/initializers/find_by_anything.rb" should contain:
183
- """
184
- ActiveRecord::Base.class_eval do
185
-
186
- def self.find_by_anything(identifier)
187
- """
188
- And the file "config/initializers/exception_notification.rb" should contain:
189
- """
190
- ExceptionNotification.configure do |config|
191
-
192
- config.add_notifier :email, {
193
- email_prefix: '[katapult_test_app] ',
194
- exception_recipients: %w[fail@makandra.de],
195
- """
196
- And the file "config/initializers/form_for_with_development_errors.rb" should contain:
197
- """
198
- if Rails.env == 'development'
199
-
200
- ActionView::Helpers::FormHelper.class_eval do
201
-
202
- def form_for_with_development_errors(*args, &block)
203
- """
204
-
205
-
206
-
207
- # Tests
208
- And the file "features/support/env-custom.rb" should contain:
209
- """
210
- require 'spreewald/all_steps'
211
- """
212
- And the file "features/support/cucumber_factory.rb" should contain:
213
- """
214
- Cucumber::Factory.add_steps(self)
215
- """
216
- And the file "features/support/capybara_screenshot.rb" should contain:
217
- """
218
- require 'capybara-screenshot/cucumber'
219
-
220
- # Keep up to the number of screenshots specified in the hash
221
- Capybara::Screenshot.prune_strategy = { keep: 10 }
222
- """
223
- And the file "features/support/database_cleaner.rb" should contain:
224
- """
225
- DatabaseCleaner.clean_with(:deletion) # clean once, now
226
- DatabaseCleaner.strategy = :transaction
227
- Cucumber::Rails::Database.javascript_strategy = :deletion
228
- """
229
- And a file named "features/support/paths.rb" should exist
230
- And a file named "features/support/selectors.rb" should exist
231
- And the file "spec/rails_helper.rb" should match /^Dir.Rails.root.join.+spec.support/
232
- And the file "spec/support/shoulda_matchers.rb" should contain:
233
- """
234
- require 'shoulda/matchers'
235
-
236
- Shoulda::Matchers.configure do |config|
237
- config.integrate do |with|
238
- with.test_framework :rspec
239
- with.library :rails
240
- end
241
- end
242
- """
243
-
244
-
245
-
246
- # styles
247
- And the file "app/assets/stylesheets/application.sass" should contain:
248
- """
249
- @import compass
250
- @import bootstrap
251
-
252
- @import application/blocks/all
253
-
254
- """
255
- And the file "app/assets/stylesheets/application/blocks/_all.sass" should contain exactly:
256
- """
257
- @import items
258
- @import layout
259
- @import navigation
260
- @import tools
261
-
262
- """
263
- And a file named "app/assets/stylesheets/application/blocks/_items.sass" should exist
264
- And a file named "app/assets/stylesheets/application/blocks/_layout.sass" should exist
265
- And a file named "app/assets/stylesheets/application/blocks/_navigation.sass" should exist
266
- And a file named "app/assets/stylesheets/application/blocks/_tools.sass" should exist
267
-
268
- # And the file "config/deploy.rb" should contain exactly:
269
- # """
270
- # stages
271
- # """
data/lib/katapult/util.rb DELETED
@@ -1,16 +0,0 @@
1
- # Utility methods.
2
-
3
- # The Katapult::Util module is used inside the `katapult` script. It should not
4
- # require any gems in order to prevent version conflicts.
5
-
6
- module Katapult
7
- module Util
8
- extend self
9
-
10
- def git_commit(message)
11
- message.gsub! /'/, "" # remove single quotes
12
- system "git add --all; git commit -m '#{ message }' --author='katapult <katapult@makandra.com>'"
13
- end
14
-
15
- end
16
- end