crudie 0.0.3 → 0.0.4
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 +4 -4
- data/lib/crudie/spec.rb +5 -145
- data/lib/crudie/spec/acceptance.rb +181 -0
- data/lib/crudie/spec/unit.rb +150 -0
- data/lib/crudie/version.rb +1 -1
- metadata +46 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57c9008695012cf6225661e85f53a2eede894431
|
4
|
+
data.tar.gz: e627a68ce7147a58d357f1a7bc4024ba6799ea6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 624b8ac1074195d0b9e139fadd5cd80e1e9b1997d0723b091e711cc5b5d632765c26a1853f612edf00c45d54f438a624c7a2e78c67ab6b0939578f014f41ca55
|
7
|
+
data.tar.gz: cc4d2bce18d21f29acd4cb44c8e647d060418c1098ebd51b1866b62c8618ab4d4993a2d5585f08a6691c79b6bc8493e5bbac22912fd4f238605c94ab5efb7005
|
data/lib/crudie/spec.rb
CHANGED
@@ -1,155 +1,15 @@
|
|
1
1
|
# Crudie spec
|
2
|
+
#
|
3
|
+
# Crudie::Spec::Unit
|
2
4
|
# usage:
|
3
5
|
# RSpec.describe ProjectsController, :type => :controller do
|
4
6
|
# include Crudie::Spec
|
5
7
|
# include_crudie_spec_for :project, :context_name => :user
|
6
8
|
# end
|
9
|
+
|
7
10
|
module Crudie
|
8
11
|
module Spec
|
9
|
-
|
10
|
-
|
11
|
-
class << base
|
12
|
-
def include_crudie_spec_for resource, options = {}
|
13
|
-
context_name = options[:context_name]
|
14
|
-
|
15
|
-
methods_to_test = options[:only] || [ :create, :index, :update, :show, :destroy ]
|
16
|
-
excluded_methods = options[:except] || []
|
17
|
-
methods_to_test = methods_to_test - excluded_methods
|
18
|
-
|
19
|
-
describe "Crudie spec for `#{resource}`" do
|
20
|
-
let(:resource) { resource }
|
21
|
-
let(:resources) { resource.to_s.pluralize }
|
22
|
-
context
|
23
|
-
|
24
|
-
methods_to_test.each { |m| send("test_#{m}".to_sym, resource, context_name) }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
def context
|
30
|
-
let(:crudie_context) { double(:crudie_context, :find => crudie_instance) }
|
31
|
-
let(:crudie_instance) { double(:crudie_instance, :valid? => true) }
|
32
|
-
before :each do
|
33
|
-
allow(controller).to receive(:crudie_context).and_return(crudie_context)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_index resource, context_name
|
38
|
-
describe 'GET :index' do
|
39
|
-
let(:params) do
|
40
|
-
prm = {}
|
41
|
-
prm["#{context_name}_id"] = 123 if context_name
|
42
|
-
prm
|
43
|
-
end
|
44
|
-
it "returns projects of user" do
|
45
|
-
get :index, params
|
46
|
-
expect(controller.instance_variable_get("@#{resources}")).to be(crudie_context)
|
47
|
-
expect(response.status).to eq 200
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_create resource, context_name
|
54
|
-
describe "POST :create" do
|
55
|
-
let(:params) do
|
56
|
-
prm = {}
|
57
|
-
prm["#{context_name}_id".to_sym] = 123 if context_name
|
58
|
-
prm[resource] = { 'key' => 'val' }
|
59
|
-
prm
|
60
|
-
end
|
61
|
-
|
62
|
-
before :each do
|
63
|
-
allow(controller).to receive(:crudie_params).and_return(params[resource])
|
64
|
-
expect(crudie_context).to receive(:create).with(params[resource]).and_return(crudie_instance)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "creates a #{resource} under context" do
|
68
|
-
post :create, params
|
69
|
-
end
|
70
|
-
|
71
|
-
it "sets controller.@#{resource} as #{resource}" do
|
72
|
-
post :create, params
|
73
|
-
|
74
|
-
expect(controller.instance_variable_get("@#{resource}")).to be(crudie_instance)
|
75
|
-
end
|
76
|
-
|
77
|
-
it "returns 409 if resource is not valid" do
|
78
|
-
allow(crudie_instance).to receive_messages(:valid? => false,
|
79
|
-
:errors => double(:messages => 'the messages'))
|
80
|
-
post :create, params
|
81
|
-
expect(response.status).to eq 409
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
def test_show resource, context_name
|
88
|
-
describe "GET :show" do
|
89
|
-
let(:params) do
|
90
|
-
prm = { :id => 123 }
|
91
|
-
prm["#{context_name}_id"] = 123 if context_name
|
92
|
-
prm
|
93
|
-
end
|
94
|
-
|
95
|
-
it "shows the resource instance by id" do
|
96
|
-
get :show, params
|
97
|
-
expect(controller.instance_variable_get("@#{resource}")).to be crudie_instance
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_update resource, context_name
|
104
|
-
describe "PUT :update" do
|
105
|
-
let(:params) do
|
106
|
-
prm = { :id => 123, resource => { 'key' => 'val' } }
|
107
|
-
prm["#{context_name}_id"] = 123 if context_name
|
108
|
-
prm
|
109
|
-
end
|
110
|
-
before :each do
|
111
|
-
allow(controller).to receive(:crudie_params).and_return(params[resource])
|
112
|
-
end
|
113
|
-
|
114
|
-
it "updates instance" do
|
115
|
-
expect(crudie_instance).to receive(:update_attributes).with(params[resource])
|
116
|
-
.and_return(true)
|
117
|
-
put :update, params
|
118
|
-
expect(controller.instance_variable_get("@#{resource}")).to be crudie_instance
|
119
|
-
end
|
120
|
-
|
121
|
-
it "render 409 if updating failed" do
|
122
|
-
expect(crudie_instance).to receive(:update_attributes)
|
123
|
-
.with(params[resource]).and_return(false)
|
124
|
-
expect(crudie_instance).to receive(:errors).and_return(double(:messages => 'the messages'))
|
125
|
-
|
126
|
-
put :update, params
|
127
|
-
expect(response.status).to eq 409
|
128
|
-
end
|
129
|
-
|
130
|
-
end
|
131
|
-
|
132
|
-
end
|
133
|
-
|
134
|
-
def test_destroy resource, context_name
|
135
|
-
describe "DELETE :destroy" do
|
136
|
-
let(:params) do
|
137
|
-
prm = { :id => 123 }
|
138
|
-
prm["#{context_name}_id"] = 123 if context_name
|
139
|
-
prm
|
140
|
-
end
|
141
|
-
|
142
|
-
it "destroy the instance" do
|
143
|
-
expect(crudie_instance).to receive(:destroy)
|
144
|
-
delete :destroy, params
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
|
12
|
+
require 'crudie/spec/unit'
|
13
|
+
require 'crudie/spec/acceptance'
|
154
14
|
end
|
155
15
|
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# Acceptance spec helper
|
2
|
+
# Usage:
|
3
|
+
# 1. for resource without parent:
|
4
|
+
# include Crudie::Spec::Acceptance
|
5
|
+
# include_acceptance_spec_for :resource => {
|
6
|
+
# :name => :user,
|
7
|
+
# :creator => Proc.new {|index| User.create :name => index },
|
8
|
+
# :context => Proc.new { User.all }
|
9
|
+
# },
|
10
|
+
# :parameters => {
|
11
|
+
# :name => {
|
12
|
+
# :desc => 'user name',
|
13
|
+
# :value => 'the new user name',
|
14
|
+
# :options => {
|
15
|
+
# :scope => :user,
|
16
|
+
# :required => true
|
17
|
+
# }
|
18
|
+
# }
|
19
|
+
# }
|
20
|
+
#
|
21
|
+
# 2. for resource with parent:
|
22
|
+
# include Crudie::Spec::Acceptance
|
23
|
+
# include_acceptance_spec_for :parent => {
|
24
|
+
# :name => :user,
|
25
|
+
# :creator => Proc.new { User.create :name => 'jack' }
|
26
|
+
# },
|
27
|
+
# :resource => {
|
28
|
+
# :name => :project,
|
29
|
+
# :creator => Proc.new {|i, user| user.projects.create :name => i },
|
30
|
+
# :context => Proc.new {|parent| parent.projects }
|
31
|
+
# },
|
32
|
+
# :parameters => {
|
33
|
+
# :name => {
|
34
|
+
# :desc => 'project name',
|
35
|
+
# :value => 'the new project name',
|
36
|
+
# :options => {
|
37
|
+
# :scope => :project,
|
38
|
+
# :required => true
|
39
|
+
# }
|
40
|
+
# }
|
41
|
+
# }
|
42
|
+
|
43
|
+
module Crudie::Spec::Acceptance
|
44
|
+
def self.included base
|
45
|
+
class << base
|
46
|
+
def include_acceptance_spec_for options
|
47
|
+
resource_names = options[:resource][:name].to_s.pluralize
|
48
|
+
resource_name_id = "#{options[:resource][:name]}_id"
|
49
|
+
resource_creator = options[:resource][:creator]
|
50
|
+
resource_context = options[:resource][:context]
|
51
|
+
|
52
|
+
request_parameters = options[:parameters]
|
53
|
+
|
54
|
+
parent_exists = ! options[:parent].nil?
|
55
|
+
|
56
|
+
if parent_exists
|
57
|
+
parent_names = options[:parent][:name].to_s.pluralize
|
58
|
+
parent_creator = options[:parent][:creator]
|
59
|
+
parent_name_id = "#{options[:parent][:name]}_id"
|
60
|
+
|
61
|
+
plural_url = "/#{parent_names}/:#{parent_name_id}/#{resource_names}"
|
62
|
+
singular_url = "#{plural_url}/:#{resource_name_id}"
|
63
|
+
|
64
|
+
let(:parent_instance) { self.instance_eval &parent_creator}
|
65
|
+
let(parent_name_id) { parent_instance.id }
|
66
|
+
else
|
67
|
+
plural_url = "/#{resource_names}"
|
68
|
+
singular_url = "#{plural_url}/:#{resource_name_id}"
|
69
|
+
end
|
70
|
+
|
71
|
+
only_actions = options[:only] || [ :index, :show, :update, :destroy, :create ]
|
72
|
+
except = options[:except] || []
|
73
|
+
actions = only_actions - except
|
74
|
+
|
75
|
+
shared_context 'with_single_resource_instance' do
|
76
|
+
let!(:resource_instance) do
|
77
|
+
if parent_exists
|
78
|
+
resource_creator.call(1, parent_instance)
|
79
|
+
else
|
80
|
+
resource_creator.call(1)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
shared_context 'with_parameters' do
|
86
|
+
request_parameters.each do |key, detail|
|
87
|
+
parameter key, detail[:desc], detail[:options]
|
88
|
+
let(key) { detail[:value] }
|
89
|
+
end
|
90
|
+
let(resource_name_id) { resource_instance.id }
|
91
|
+
end
|
92
|
+
|
93
|
+
# index spec
|
94
|
+
if actions.include?(:index)
|
95
|
+
get plural_url do
|
96
|
+
let!(:resources) do
|
97
|
+
3.times do |i|
|
98
|
+
parent_exists ?
|
99
|
+
resource_creator.call(i, parent_instance) :
|
100
|
+
resource_creator.call(i)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
example 'Index' do
|
105
|
+
do_request
|
106
|
+
expect(response_status).to eq 200
|
107
|
+
expect(JSON.parse(response_body).count).to eq 3
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# show spec
|
113
|
+
if actions.include?(:show)
|
114
|
+
get singular_url do
|
115
|
+
include_context 'with_single_resource_instance'
|
116
|
+
let(resource_name_id) { resource_instance.id }
|
117
|
+
|
118
|
+
example 'Show' do
|
119
|
+
do_request
|
120
|
+
expect(JSON.parse(response_body)['id']).to eq(resource_instance.id)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# Create spec
|
126
|
+
if actions.include?(:create)
|
127
|
+
post plural_url do
|
128
|
+
include_context 'with_parameters'
|
129
|
+
example 'Create' do
|
130
|
+
do_request
|
131
|
+
|
132
|
+
if parent_exists
|
133
|
+
expect(resource_context.call(parent_instance).count).to eq 1
|
134
|
+
else
|
135
|
+
expect(resource_context.call.count).to eq 1
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# Update spec
|
143
|
+
if actions.include?(:update)
|
144
|
+
put singular_url do
|
145
|
+
include_context 'with_single_resource_instance'
|
146
|
+
include_context 'with_parameters'
|
147
|
+
|
148
|
+
example 'Updating' do
|
149
|
+
do_request
|
150
|
+
|
151
|
+
resource_instance.reload
|
152
|
+
request_parameters.each do |key, val|
|
153
|
+
expect(resource_instance.send(key)).to eq(send(key))
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# destroy spec
|
160
|
+
if actions.include?(:destroy)
|
161
|
+
delete singular_url do
|
162
|
+
include_context 'with_single_resource_instance'
|
163
|
+
let(resource_name_id) { resource_instance.id }
|
164
|
+
|
165
|
+
example 'Deletion' do
|
166
|
+
do_request
|
167
|
+
if parent_exists
|
168
|
+
expect(resource_context.call(parent_instance)
|
169
|
+
.where(:id => resource_instance.id)).to be_empty
|
170
|
+
else
|
171
|
+
expect(resource_context.call
|
172
|
+
.where(:id => resource_instance.id)).to be_empty
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# Crudie spec
|
2
|
+
# usage:
|
3
|
+
# RSpec.describe ProjectsController, :type => :controller do
|
4
|
+
# include Crudie::Spec
|
5
|
+
# include_crudie_spec_for :project, :context_name => :user
|
6
|
+
# end
|
7
|
+
module Crudie::Spec::Unit
|
8
|
+
def self.included base
|
9
|
+
class << base
|
10
|
+
def include_crudie_spec_for resource, options = {}
|
11
|
+
context_name = options[:context_name]
|
12
|
+
|
13
|
+
methods_to_test = options[:only] || [ :create, :index, :update, :show, :destroy ]
|
14
|
+
excluded_methods = options[:except] || []
|
15
|
+
methods_to_test = methods_to_test - excluded_methods
|
16
|
+
|
17
|
+
describe "Crudie spec for `#{resource}`" do
|
18
|
+
let(:resource) { resource }
|
19
|
+
let(:resources) { resource.to_s.pluralize }
|
20
|
+
context
|
21
|
+
|
22
|
+
methods_to_test.each { |m| send("test_#{m}".to_sym, resource, context_name) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
def context
|
28
|
+
let(:crudie_context) { double(:crudie_context, :find => crudie_instance) }
|
29
|
+
let(:crudie_instance) { double(:crudie_instance, :valid? => true) }
|
30
|
+
before :each do
|
31
|
+
allow(controller).to receive(:crudie_context).and_return(crudie_context)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_index resource, context_name
|
36
|
+
describe 'GET :index' do
|
37
|
+
let(:params) do
|
38
|
+
prm = {}
|
39
|
+
prm["#{context_name}_id"] = 123 if context_name
|
40
|
+
prm
|
41
|
+
end
|
42
|
+
it "returns projects of user" do
|
43
|
+
get :index, params
|
44
|
+
expect(controller.instance_variable_get("@#{resources}")).to be(crudie_context)
|
45
|
+
expect(response.status).to eq 200
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_create resource, context_name
|
52
|
+
describe "POST :create" do
|
53
|
+
let(:params) do
|
54
|
+
prm = {}
|
55
|
+
prm["#{context_name}_id".to_sym] = 123 if context_name
|
56
|
+
prm[resource] = { 'key' => 'val' }
|
57
|
+
prm
|
58
|
+
end
|
59
|
+
|
60
|
+
before :each do
|
61
|
+
allow(controller).to receive(:crudie_params).and_return(params[resource])
|
62
|
+
expect(crudie_context).to receive(:create).with(params[resource]).and_return(crudie_instance)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "creates a #{resource} under context" do
|
66
|
+
post :create, params
|
67
|
+
end
|
68
|
+
|
69
|
+
it "sets controller.@#{resource} as #{resource}" do
|
70
|
+
post :create, params
|
71
|
+
|
72
|
+
expect(controller.instance_variable_get("@#{resource}")).to be(crudie_instance)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "returns 409 if resource is not valid" do
|
76
|
+
allow(crudie_instance).to receive_messages(:valid? => false,
|
77
|
+
:errors => double(:messages => 'the messages'))
|
78
|
+
post :create, params
|
79
|
+
expect(response.status).to eq 409
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
def test_show resource, context_name
|
86
|
+
describe "GET :show" do
|
87
|
+
let(:params) do
|
88
|
+
prm = { :id => 123 }
|
89
|
+
prm["#{context_name}_id"] = 123 if context_name
|
90
|
+
prm
|
91
|
+
end
|
92
|
+
|
93
|
+
it "shows the resource instance by id" do
|
94
|
+
get :show, params
|
95
|
+
expect(controller.instance_variable_get("@#{resource}")).to be crudie_instance
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_update resource, context_name
|
102
|
+
describe "PUT :update" do
|
103
|
+
let(:params) do
|
104
|
+
prm = { :id => 123, resource => { 'key' => 'val' } }
|
105
|
+
prm["#{context_name}_id"] = 123 if context_name
|
106
|
+
prm
|
107
|
+
end
|
108
|
+
before :each do
|
109
|
+
allow(controller).to receive(:crudie_params).and_return(params[resource])
|
110
|
+
end
|
111
|
+
|
112
|
+
it "updates instance" do
|
113
|
+
expect(crudie_instance).to receive(:update_attributes).with(params[resource])
|
114
|
+
.and_return(true)
|
115
|
+
put :update, params
|
116
|
+
expect(controller.instance_variable_get("@#{resource}")).to be crudie_instance
|
117
|
+
end
|
118
|
+
|
119
|
+
it "render 409 if updating failed" do
|
120
|
+
expect(crudie_instance).to receive(:update_attributes)
|
121
|
+
.with(params[resource]).and_return(false)
|
122
|
+
expect(crudie_instance).to receive(:errors).and_return(double(:messages => 'the messages'))
|
123
|
+
|
124
|
+
put :update, params
|
125
|
+
expect(response.status).to eq 409
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_destroy resource, context_name
|
133
|
+
describe "DELETE :destroy" do
|
134
|
+
let(:params) do
|
135
|
+
prm = { :id => 123 }
|
136
|
+
prm["#{context_name}_id"] = 123 if context_name
|
137
|
+
prm
|
138
|
+
end
|
139
|
+
|
140
|
+
it "destroy the instance" do
|
141
|
+
expect(crudie_instance).to receive(:destroy)
|
142
|
+
delete :destroy, params
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
data/lib/crudie/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crudie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yang-Hsing Lin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,6 +52,48 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec_api_documentation
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: factory_girl_rails
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: jbuilder
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
55
97
|
description: A rails plugin to abstract CRUD api in controller
|
56
98
|
email:
|
57
99
|
- yanghsing.lin@gmail.com
|
@@ -64,6 +106,8 @@ files:
|
|
64
106
|
- lib/crudie.rb
|
65
107
|
- lib/crudie/controller_methods.rb
|
66
108
|
- lib/crudie/spec.rb
|
109
|
+
- lib/crudie/spec/acceptance.rb
|
110
|
+
- lib/crudie/spec/unit.rb
|
67
111
|
- lib/crudie/version.rb
|
68
112
|
- lib/tasks/crudie_tasks.rake
|
69
113
|
homepage: ''
|