mobile_workflow 0.6.8 → 0.6.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 685158e15df7ff0f9d893db92dcb1446827e3a8ad61db0a18f76ca95904b4d29
4
- data.tar.gz: 223f09dd75966eec26028fa1c17bdcc2ab7ddaf01a5c73a119817c22064b81f7
3
+ metadata.gz: db9e697a2d4bc53ea4b9a231248f9d32c21199d030a75826e0c006055e9828ed
4
+ data.tar.gz: 7658139e3a461174483e4adde83327da338b73a84ef4e9e6f9423903b8e3b2d2
5
5
  SHA512:
6
- metadata.gz: ae81fb8cfc35faf25aacb35ecab0a46deb91c706c7c280aaa3b41d090dd9ff88a8c2480ce21d07c2f2e6190268c8fa7794dc4565ef441e488c19146ede830258
7
- data.tar.gz: 99801e61d43ccf7d64a533b7c786001444359a7e3b244b4443805d588310de9f4dfa4b14979be40fa19867ecd70436cda26f308b840d1fe00157ba919158decc
6
+ metadata.gz: 3c5ca58a42c0634029ce8d7b43e04b1383c930d673ca6c2418911767227bc4ae2bebaab3afed5bc3981085ede273ab242253c7be2560eef92df71533fb88bd8c
7
+ data.tar.gz: '018017ea7b7d4baeb4372c0159267bb632fc33a14eeb9c67d0de117f27372cebb8df8e09f9f90604fdea5842093a93966a1e3f24a4102c40e0aa65638e7f4ecd'
@@ -4,12 +4,16 @@ module MobileWorkflow
4
4
  include Rails.application.routes.url_helpers
5
5
 
6
6
  ON_SUCCESS_OPTIONS = [:none, :reload, :backward, :forward]
7
- BUTTON_STYLES = [:primary, :outline, :danger]
8
-
7
+ BUTTON_STYLES = [:primary, :outline, :danger]
8
+
9
9
  def mw_list_item(id: self.id, text:, detail_text: nil, sf_symbol_name: nil, image_attachment: nil)
10
10
  mw_list_item = {id: id, text: text, detailText: detail_text, sfSymbolName: sf_symbol_name}
11
11
  mw_list_item[:imageURL] = preview_url(image_attachment, options: { resize_to_fill: [100, 100] }) if image_attachment
12
- mw_list_item.compact
12
+ mw_list_item.compact
13
+ end
14
+
15
+ def mw_map_item(id: self.id, text:, detail_text: nil, latitude:, longitude:)
16
+ {id: id, text: text, detailText: detail_text, latitude: latitude, longitude: longitude}.compact
13
17
  end
14
18
 
15
19
  def mw_display_text(text:, label: nil)
@@ -54,6 +58,13 @@ module MobileWorkflow
54
58
  {type: :button, label: label, url: url, method: method, style: style, onSuccess: on_success}
55
59
  end
56
60
 
61
+ def mw_display_button_for_system_url(label:, apple_system_url:, android_system_url:, method: :put, style: :primary, on_success: :none)
62
+ validate_on_success!(on_success)
63
+ validate_button_style!(style)
64
+
65
+ {type: :button, label: label, appleSystemURL: apple_system_url, androidSystemURL: android_system_url, method: method, style: style, onSuccess: on_success}
66
+ end
67
+
57
68
  def mw_display_button_for_modal_workflow(label:, modal_workflow_name:, style: :primary, on_success: :none)
58
69
  validate_on_success!(on_success)
59
70
  validate_button_style!(style)
@@ -30,8 +30,9 @@ module MobileWorkflow
30
30
  end
31
31
 
32
32
  def permitted_params
33
- params = attributes_names.map{ |name| ":#{name}" }
34
- params.join(", ")
33
+ permitted_attributes = attributes_names.dup
34
+ permitted_attributes.delete('user')
35
+ permitted_attributes.map{ |name| ":#{name}" }.join(", ")
35
36
  end
36
37
 
37
38
  def index_action?
@@ -1,9 +1,13 @@
1
1
  require "rails/generators/base"
2
+ require "rails/generators/active_model"
3
+ require "rails/generators/active_record/migration"
4
+ require "active_record"
2
5
  require "mobile_workflow/open_api_spec/parser"
3
6
 
4
7
  module MobileWorkflow
5
8
  module Generators
6
9
  class InstallGenerator < Rails::Generators::Base
10
+ include ActiveRecord::Generators::Migration
7
11
 
8
12
  source_root File.expand_path("../templates", __FILE__)
9
13
 
@@ -20,10 +24,16 @@ module MobileWorkflow
20
24
  route "mount MobileWorkflow::Engine => '/'"
21
25
  end
22
26
 
27
+ def copy_rake_tasks
28
+ copy_file("lib/tasks/mobile_workflow_doorkeeper.rake") if options[:doorkeeper_oauth]
29
+ end
30
+
23
31
  def generate_doorkeeper
24
32
  return unless options[:doorkeeper_oauth]
25
33
  say "Generating Doorkeeper OAuth"
26
34
 
35
+ migration_template "create_users.rb", "db/migrate/create_users.rb"
36
+
27
37
  generate 'doorkeeper:install'
28
38
  gsub_file 'config/initializers/doorkeeper.rb', 'raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"', 'User.find_by_id(session[:user_id]) || redirect_to(new_session_url(return_to: request.fullpath))'
29
39
  generate 'doorkeeper:migration'
@@ -36,6 +46,7 @@ module MobileWorkflow
36
46
  copy_file("app/views/layouts/application.html.erb")
37
47
  copy_file("app/views/sessions/new.html.erb")
38
48
  copy_file("app/helpers/application_helper.rb")
49
+ copy_file("spec/factories/users.rb")
39
50
  end
40
51
 
41
52
  def generate_models
@@ -73,7 +84,7 @@ module MobileWorkflow
73
84
  generate_model(controller_name, model_properties)
74
85
  end
75
86
 
76
- generate "mobile_workflow:controller #{controller_name} --actions #{actions.join(" ")} --attributes #{model_properties} #{s3_storage? ? '--s3-storage' : ''}".strip
87
+ generate "mobile_workflow:controller #{controller_name} --actions #{actions.join(" ")} --attributes #{model_properties} #{generate_controller_args}".strip
77
88
  route "resources :#{plural_controller_name}, only: [#{actions.map{|a| ":#{a}"}.join(", ")}]"
78
89
  end
79
90
  end
@@ -88,6 +99,13 @@ module MobileWorkflow
88
99
  generate("mobile_workflow:model #{model_name} #{model_properties}")
89
100
  end
90
101
 
102
+ def generate_controller_args
103
+ args = ''
104
+ args += ' --s3-storage' if s3_storage?
105
+ args += ' --doorkeeper-oauth' if doorkeeper_oauth?
106
+ args.strip
107
+ end
108
+
91
109
  def model_name_to_properties
92
110
  @model_name_to_properties ||= open_api_spec.model_name_to_properties
93
111
  end
@@ -45,6 +45,7 @@ group :development, :test do
45
45
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
46
46
  gem 'dotenv-rails'
47
47
  gem 'factory_bot_rails'
48
+ gem "rufo"
48
49
  end
49
50
 
50
51
  group :production do
@@ -0,0 +1,5 @@
1
+ desc "Log the first Doorkeeper App details"
2
+ task print_oauth_app: :environment do
3
+ puts Doorkeeper::Application.first.uid
4
+ puts Doorkeeper::Application.first.secret
5
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :user do
3
+ sequence(:email) { |n| "person#{n}@example.com" }
4
+ password { 'Password123' }
5
+ end
6
+ end
@@ -20,7 +20,7 @@ class <%= controller_class_name %>Controller < ApiController
20
20
  <% if create_action? -%>
21
21
  def create
22
22
  <% if doorkeeper_oauth? -%>
23
- @<%= singular_table_name %> = current_user
23
+ @<%= singular_table_name %>.user = current_user
24
24
  <% end -%>
25
25
  if @<%= singular_table_name %>.save
26
26
  <% if s3_storage? -%>
@@ -29,7 +29,7 @@ class <%= controller_class_name %>Controller < ApiController
29
29
  render json: { response: @<%= singular_table_name %> }, status: :created
30
30
  <% end -%>
31
31
  else
32
- head :unprocessable_entity
32
+ render json: { message: @<%= singular_table_name %>.errors.full_messages.to_sentence }, status: :unprocessable_entity
33
33
  end
34
34
  end
35
35
 
@@ -8,7 +8,7 @@ RSpec.describe <%= controller_class_name %>Controller do
8
8
  let(:json_response) { JSON.parse(response.body, symbolize_names: true) }
9
9
  <% if doorkeeper_oauth? -%>
10
10
  let(:user) { create(:user) }
11
- let(:token) { instance_double('Doorkeeper::AccessToken', :accessible? => true, :acceptable? => true, resource_owner_id: user.id) }
11
+ let(:token) { instance_double(Doorkeeper::AccessToken, accessible?: true, acceptable?: true, resource_owner_id: user.id) }
12
12
  <% end -%>
13
13
 
14
14
  <% if index_action? -%>
@@ -18,13 +18,19 @@ module MobileWorkflow::Cli
18
18
  end
19
19
 
20
20
  def factory_bot
21
- inject_into_file 'spec/rails_helper.rb', before: "end\n" do
22
- "config.include FactoryBot::Syntax::Methods"
21
+ inject_into_file 'spec/rails_helper.rb', after: "RSpec.configure do |config|\n" do
22
+ "\tconfig.include FactoryBot::Syntax::Methods\n"
23
23
  end
24
24
  end
25
+
26
+ def migrate_db
27
+ rails_command("db:drop")
28
+ rails_command("db:create")
29
+ rails_command("db:migrate")
30
+ end
25
31
 
26
32
  def administrate_generator
27
- Bundler.with_unbundled_env { generate 'administrate:install' }
33
+ generate 'administrate:install'
28
34
 
29
35
  file 'app/assets/config/manifest.js', <<-CODE
30
36
  //= link administrate/application.css
@@ -39,7 +45,7 @@ module Admin
39
45
  end
40
46
  CODE
41
47
 
42
- Bundler.with_unbundled_env { generate 'administrate:routes' }
48
+ generate 'administrate:routes'
43
49
  end
44
50
 
45
51
  def ability_generator
@@ -57,9 +63,25 @@ CODE
57
63
  gen_opts = ""
58
64
  gen_opts += "--doorkeeper_oauth" if options[:doorkeeper_oauth]
59
65
  generate "mobile_workflow:install #{gen_opts}"
66
+ end
67
+
68
+ def format_source
69
+ `rufo .`
70
+ end
71
+
72
+ def generate_dot_env
73
+ admin_user = 'admin'
74
+ admin_password = SecureRandom.base64(12)
60
75
 
61
- # Copy user migrations if needed
62
- rails_command 'mobile_workflow:install:migrations' if options[:doorkeeper_oauth]
76
+ file '.env', <<-CODE
77
+ ADMIN_USER=#{admin_user}
78
+ ADMIN_PASSWORD=#{admin_password}
79
+ CODE
80
+ end
81
+
82
+ def git_commit(message = 'Initial commit')
83
+ git add: "."
84
+ git commit: %Q{ -m '#{message}'}
63
85
  end
64
86
 
65
87
  def s3_backend(region)
@@ -37,12 +37,11 @@ module MobileWorkflow::Cli
37
37
  build :ability_generator
38
38
  build :active_storage if options[:s3_storage]
39
39
  build :mobile_workflow_generator, ARGV[1]
40
- setup_db
40
+ build :migrate_db
41
41
  build :administrate_generator
42
-
43
- generate_dot_env
44
- initial_git_commit
45
-
42
+ build :format_source
43
+ build :generate_dot_env
44
+ build :git_commit
46
45
  build :heroku if options[:heroku]
47
46
  build :dokku, options[:dokku_host] if options[:dokku]
48
47
  build :s3_backend, options[:aws_region] if options[:s3_storage]
@@ -55,30 +54,5 @@ module MobileWorkflow::Cli
55
54
  ::MobileWorkflow::Cli::AppBuilder
56
55
  end
57
56
 
58
- # Todo: MBS - move these methods to the builder class
59
- # Ideally override RailsBuilder methods
60
- private
61
- def setup_db
62
- Bundler.with_unbundled_env do
63
- rails_command("db:drop")
64
- rails_command("db:create")
65
- rails_command("db:migrate")
66
- end
67
- end
68
-
69
- def initial_git_commit
70
- git add: "."
71
- git commit: %Q{ -m 'Initial commit' }
72
- end
73
-
74
- def generate_dot_env
75
- admin_user = 'admin'
76
- admin_password = SecureRandom.base64(12)
77
-
78
- file '.env', <<-CODE
79
- ADMIN_USER=#{admin_user}
80
- ADMIN_PASSWORD=#{admin_password}
81
- CODE
82
- end
83
57
  end
84
58
  end
@@ -5,7 +5,7 @@ module MobileWorkflow::Cli
5
5
 
6
6
  attr_accessor :access_id, :secret_key, :region, :bucket_name
7
7
 
8
- def initialize(app_name:, region:)
8
+ def initialize(app_name:, region: 'us-east-1')
9
9
  @app_name = app_name
10
10
  @aws_name = @app_name.gsub("_", "-")
11
11
  @region = region
@@ -1,5 +1,5 @@
1
1
  module MobileWorkflow
2
- VERSION = '0.6.8'
2
+ VERSION = '0.6.13'
3
3
  RUBY_VERSION = '2.7.2'
4
4
  RAILS_VERSION = '6.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobile_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.6.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brooke-Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-01 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -103,7 +103,6 @@ files:
103
103
  - app/views/layouts/mobile_workflow/application.html.erb
104
104
  - bin/mwf
105
105
  - config/routes.rb
106
- - db/migrate/20200823174210_create_users.rb
107
106
  - lib/generators/mobile_workflow/controller_generator.rb
108
107
  - lib/generators/mobile_workflow/install/install_generator.rb
109
108
  - lib/generators/mobile_workflow/install/templates/Gemfile.erb
@@ -115,8 +114,11 @@ files:
115
114
  - lib/generators/mobile_workflow/install/templates/app/helpers/application_helper.rb
116
115
  - lib/generators/mobile_workflow/install/templates/app/views/layouts/application.html.erb
117
116
  - lib/generators/mobile_workflow/install/templates/app/views/sessions/new.html.erb
117
+ - lib/generators/mobile_workflow/install/templates/create_users.rb
118
+ - lib/generators/mobile_workflow/install/templates/lib/tasks/mobile_workflow_doorkeeper.rake
118
119
  - lib/generators/mobile_workflow/install/templates/seeds.rb.erb
119
120
  - lib/generators/mobile_workflow/install/templates/sessions_controller.rb.erb
121
+ - lib/generators/mobile_workflow/install/templates/spec/factories/users.rb
120
122
  - lib/generators/mobile_workflow/install/templates/storage.s3.yml
121
123
  - lib/generators/mobile_workflow/install/templates/user.rb.erb
122
124
  - lib/generators/mobile_workflow/model_generator.rb