railspp 0.0.10 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a77ba5eb53d12bcaa760402b6b65cfc3ac0e1a985b77f83d90773c7ef0c53689
4
- data.tar.gz: e24e3ae5757b9a4b626d1cb5b56906946fdd62dfa5bd72e071a27e5c6a024c9f
3
+ metadata.gz: a53edb8e7f6d285127a63c28572ac7b90b8067164c823a3737bc9b9fb4629cf6
4
+ data.tar.gz: 767b6dc11d386579aaa57ea41ea17a14144e5330c884a1013a67fbb3a78b6a77
5
5
  SHA512:
6
- metadata.gz: f2b759f1b1edc4a1f5774fa72b6ae5a5ab1cfefb29b683255f3372da56777294d37e02e4ce6c5bd73e6bd8bb29f062fdbb447ca5aa623c8df80f036a9084e2f6
7
- data.tar.gz: 97f93f50b1d8162074201ffe6cc5d877fb5f8257ed42b19088168e99c3e85a1a5f3a9a90c6f297f5795034499b31dd6d06895a8edfb58bab9eb7297d888aa9f5
6
+ metadata.gz: 529248e00025c528f567ef3cce15f034f218991ccb150c59ddca75032d65595685c1c41ebd4aea7082788b4741121a0e44c3ad509ae22ba0f03860e993115a4f
7
+ data.tar.gz: '05586d03c4feeea8aa7962e65bd8a377be1ed6fe9064b8dfc43ab442e7a60840a07290b6f9c277f175e81b9c309044a299e6037e15b3fab0c502ffe44d8061f0'
data/README.md CHANGED
@@ -25,7 +25,7 @@ gem isntall railspp
25
25
 
26
26
  Your command CLI command bin path is `railspp`
27
27
 
28
- <!-- ![CLI DOCUMENTATION](./docs/command_list.png) -->
28
+ ![CLI DOCUMENTATION](./docs/CLI_COMMANDS.png)
29
29
 
30
30
  ## Getting Started
31
31
 
@@ -144,22 +144,18 @@ Test cover:
144
144
  Index:
145
145
 
146
146
  - status_code = 200
147
- - json_format = { data: (array), count: (integer) }
148
147
 
149
148
  Show:
150
149
 
151
150
  - status_code = 200
152
- - json_format = { id: (integer) }
153
151
 
154
152
  Create:
155
153
 
156
154
  - status_code = 201
157
- - json_format = { id: (integer) }
158
155
 
159
156
  Update:
160
157
 
161
158
  - status_code = 200
162
- - json_format = { id: (integer) }
163
159
 
164
160
  Destroy:
165
161
 
@@ -5,7 +5,30 @@ class MakeTestCommand < MoreUtils
5
5
  class << self
6
6
 
7
7
  def run *args
8
+ lookup = flag_lookup(args)
9
+ arguments = get_args(args)
8
10
 
11
+ namespace_regex = '{{ NAMESPACE }}'
12
+ model_regex = '{{ MODEL }}'
13
+ routes_regex = '{{ ROUTE }}'
14
+ namespace_snakecase_regex = '{{ NAMESPACE_SNAKECASE }}'
15
+
16
+ # api_route = arguments[0]
17
+ api_route = '/api/v1/user'
18
+ namespace_array = api_route.split('/')
19
+ model = namespace_array.pop
20
+ namespace_array = namespace_array.reject { |e| e == '' }
21
+ namespace = namespace_array.map { |e| e.downcase.capitalize }.join('::')
22
+ namespace_snake = (namespace_array.join('_') + '_' + model).underscore
23
+
24
+ test_template = get_file_str("#{this_dir}/../templates/mini_test_controller.txt")
25
+ test_template = test_template.gsub(namespace_regex, namespace)
26
+ test_template = test_template.gsub(model_regex, model)
27
+ test_template = test_template.gsub(namespace_snakecase_regex, namespace_snake)
28
+ test_template = test_template.gsub(routes_regex, api_route)
29
+ write_file("#{root}/test/controllers#{api_route}_controller_test.rb", test_template)
30
+
31
+ puts "Genreated your unit for api route: #{api_route}"
9
32
  end
10
33
 
11
34
  end
@@ -19,8 +19,8 @@ class ModelCommand < MoreUtils
19
19
  system("rails generate model #{model_name} #{others.join(' ')}")
20
20
 
21
21
  api_version_path = lookup[:"api-version"] || 'api/v1'
22
- system("mkdir -p #{root}/app/controllers/#{api_version_path}")
23
22
 
23
+ system("mkdir -p #{root}/app/controllers/#{api_version_path}")
24
24
  controller_prefix = api_version_path.split('/').map { |e| e.downcase.capitalize }.join('::')
25
25
  controller_name = controller_prefix + '::' + model_name
26
26
 
@@ -1,11 +1,19 @@
1
- class MakeTestHelpCommand
1
+ require_relative '../utils/strings.rb'
2
+
3
+
4
+ class MakeTestHelpCommand < MoreUtils
2
5
  class << self
3
6
 
4
7
  def run *args
5
- puts "No Options available.
8
+ puts "No Options available
9
+
10
+ With your generated your mini test
11
+
12
+ Route Path Example:
13
+ '/api/v1/user'
6
14
 
7
- Run to generate railspp tests your generated controllers:
8
- 'railspp make_test (resource-prefix)'
15
+ Run to generate a mini test for your controller:
16
+ 'railspp make_test (route-path)'
9
17
  "
10
18
  end
11
19
 
data/lib/railspp.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  require_relative './commands/initialize.rb'
2
- require_relative './commands/make_test.rb'
3
2
  require_relative './commands/model.rb'
3
+ require_relative './commands/make_test.rb'
4
4
  require_relative './help/documentation.rb'
5
5
  require_relative './help/initialize.rb'
6
- require_relative './help/make_test.rb'
7
6
  require_relative './help/model.rb'
7
+ require_relative './help/make_test.rb'
8
8
  require_relative './utils/strings.rb'
9
9
 
10
10
 
@@ -43,8 +43,8 @@ class RailsPlusPlus < MoreUtils
43
43
  initialize: InitializeCommand,
44
44
  m: ModelCommand,
45
45
  model: ModelCommand,
46
- make_test: MakeTestCommand,
47
46
  mt: MakeTestCommand,
47
+ make_test: MakeTestCommand,
48
48
  }
49
49
  end
50
50
 
@@ -55,8 +55,8 @@ class RailsPlusPlus < MoreUtils
55
55
  initialize: InitializeHelpCommand,
56
56
  m: ModelHelpCommand,
57
57
  model: ModelHelpCommand,
58
- make_test: MakeTestHelpCommand,
59
58
  mt: MakeTestHelpCommand,
59
+ make_test: MakeTestHelpCommand,
60
60
  }
61
61
  end
62
62
 
@@ -67,8 +67,8 @@ class RailsPlusPlus < MoreUtils
67
67
  '- initialize => Initialize your project',
68
68
  '- m => Generate your CRUD model, controller, and migration',
69
69
  '- model => Generate your CRUD model, controller, and migration',
70
- '- make_test => Generate your resource unit test',
71
- '- mt => Generate your resource unit test'
70
+ '- mt => Generate a unit test in minitest',
71
+ '- make_test => Generate a unit test in minitest',
72
72
  ]
73
73
  end
74
74
 
@@ -1,7 +1,5 @@
1
1
  class GlobalController < ApplicationController
2
2
 
3
- before_action :set_headers
4
-
5
3
  include Response
6
4
  include ExceptionHandler
7
5
 
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+ require 'faker'
3
+
4
+ class {{ NAMESPACE }}ControllerTest < ActionDispatch::IntegrationTest
5
+
6
+ def model
7
+ "{{ MODEL }}".singularize.camelize.constantize
8
+ end
9
+
10
+ def get_columns
11
+ model.columns_hash.map { |k, v| { key: k.to_sym, data_type: v.type } }
12
+ end
13
+
14
+ def data_types val
15
+ lookup = {
16
+ string: Faker::Lorem.sentence.to_s,
17
+ datetime: DateTime.now,
18
+ integer: 1,
19
+ boolean: false,
20
+ text: Faker::Lorem.paragraph.to_s,
21
+ }
22
+ lookup[val] || nil
23
+ end
24
+
25
+ def black_list_keys
26
+ {
27
+ id: true,
28
+ created_at: true,
29
+ updated_at: true,
30
+ }
31
+ end
32
+
33
+ def set_data_values
34
+ get_columns.each_with_object({}) do |e, acc|
35
+ key = e[:key]
36
+ val = e[:data_type]
37
+ if special_key_values[key]
38
+ acc[key] = special_key_values[val]
39
+ elsif black_list_keys[key]
40
+ else
41
+ acc[key] = data_types(val)
42
+ end
43
+ acc
44
+ end
45
+ end
46
+
47
+ def random_params
48
+ set_data_values
49
+ end
50
+
51
+ setup do
52
+ @data = model.create(random_params)
53
+ end
54
+
55
+ test "should create {{ NAMESPACE_SNAKECASE }}" do
56
+ post '{{ ROUTE }}', params: random_params
57
+ assert_response :created
58
+ end
59
+
60
+ test "should get index {{ NAMESPACE_SNAKECASE }}" do
61
+ get '{{ ROUTE }}'
62
+ assert_response :success
63
+ end
64
+
65
+ test "should show {{ NAMESPACE_SNAKECASE }}" do
66
+ get "{{ ROUTE }}/#{@data.id}"
67
+ assert_response :success
68
+ end
69
+
70
+ test "should put update {{ NAMESPACE_SNAKECASE }}" do
71
+ put "{{ ROUTE }}/#{@data.id}", params: random_params
72
+ assert_response :success
73
+ end
74
+
75
+ test "should patch update {{ NAMESPACE_SNAKECASE }}" do
76
+ patch "{{ ROUTE }}/#{@data.id}", params: random_params
77
+ assert_response :success
78
+ end
79
+
80
+ test "should destroy {{ NAMESPACE_SNAKECASE }}" do
81
+ delete "{{ ROUTE }}/#{@data.id}"
82
+ assert_response :no_content
83
+ end
84
+ end
@@ -1,7 +1,8 @@
1
- def set_headers
2
- headers['Access-Control-Allow-Origin'] = '*'
3
- headers['Access-Control-Expose-Headers'] = 'ETag'
4
- headers['Access-Control-Allow-Methods'] = 'GET, POST, PATCH, PUT, DELETE, OPTIONS, HEAD'
5
- headers['Access-Control-Allow-Headers'] = '*,x-requested-with,Content-Type,If-Modified-Since,If-None-Match'
6
- headers['Access-Control-Max-Age'] = '86400'
1
+ require 'rack/cors'
2
+
3
+ Rails.application.config.middleware.insert_before 0, Rack::Cors do
4
+ allow do
5
+ origins '*'
6
+ resource '*', headers: :any, methods: [:get, :post, :patch, :put, :delete, :options]
7
+ end
7
8
  end
data/lib/utils/strings.rb CHANGED
@@ -21,7 +21,7 @@ class MoreUtils
21
21
  class << self
22
22
 
23
23
  def gem_version
24
- "0.0.10"
24
+ "0.1.2"
25
25
  end
26
26
 
27
27
  def get_file_str path
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railspp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Layne Faler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack-cors
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Scaffolding your CRUD operations
42
56
  email: laynefaler@gmail.com
43
57
  executables:
@@ -63,6 +77,7 @@ files:
63
77
  - lib/templates/documentation_controller.txt
64
78
  - lib/templates/exception_handler.txt
65
79
  - lib/templates/global_controller.txt
80
+ - lib/templates/mini_test_controller.txt
66
81
  - lib/templates/rack_cors_initializer.txt
67
82
  - lib/templates/response.txt
68
83
  - lib/templates/routes_documentation.txt