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 +4 -4
- data/README.md +1 -5
- data/lib/commands/make_test.rb +23 -0
- data/lib/commands/model.rb +1 -1
- data/lib/help/make_test.rb +12 -4
- data/lib/railspp.rb +6 -6
- data/lib/templates/global_controller.txt +0 -2
- data/lib/templates/mini_test_controller.txt +84 -0
- data/lib/templates/rack_cors_initializer.txt +7 -6
- data/lib/utils/strings.rb +1 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a53edb8e7f6d285127a63c28572ac7b90b8067164c823a3737bc9b9fb4629cf6
|
4
|
+
data.tar.gz: 767b6dc11d386579aaa57ea41ea17a14144e5330c884a1013a67fbb3a78b6a77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
|
data/lib/commands/make_test.rb
CHANGED
@@ -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
|
data/lib/commands/model.rb
CHANGED
@@ -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
|
|
data/lib/help/make_test.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
|
-
|
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
|
8
|
-
'railspp make_test (
|
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
|
-
'-
|
71
|
-
'-
|
70
|
+
'- mt => Generate a unit test in minitest',
|
71
|
+
'- make_test => Generate a unit test in minitest',
|
72
72
|
]
|
73
73
|
end
|
74
74
|
|
@@ -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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
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.
|
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
|