railspp 0.0.10 → 0.1.2

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: 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