backframe 0.0.49 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +16 -0
- data/.gitignore +2 -2
- data/.rspec +2 -0
- data/.rubocop.yml +1156 -0
- data/Gemfile +9 -13
- data/README.md +133 -4
- data/Rakefile +3 -7
- data/backframe.gemspec +10 -11
- data/circle.yml +5 -2
- data/lib/backframe.rb +21 -34
- data/lib/backframe/mime.rb +4 -0
- data/lib/backframe/query.rb +48 -0
- data/lib/backframe/query/sort.rb +29 -0
- data/lib/backframe/railtie.rb +1 -16
- data/lib/backframe/response.rb +60 -0
- data/lib/backframe/response/adapter/csv.rb +39 -0
- data/lib/backframe/response/adapter/json.rb +53 -0
- data/lib/backframe/response/adapter/xlsx.rb +41 -0
- data/lib/backframe/response/adapter/xml.rb +37 -0
- data/lib/backframe/response/collection.rb +43 -0
- data/lib/backframe/response/fields.rb +62 -0
- data/lib/backframe/response/record.rb +38 -0
- data/lib/backframe/service.rb +60 -0
- data/lib/backframe/service/result/base.rb +24 -0
- data/lib/backframe/service/result/failure.rb +21 -0
- data/lib/backframe/service/result/success.rb +21 -0
- data/lib/backframe/version.rb +1 -1
- data/spec/fixtures/active_record.rb +22 -0
- data/spec/fixtures/models.rb +25 -0
- data/spec/fixtures/queries.rb +28 -0
- data/spec/fixtures/seeds.rb +12 -0
- data/spec/fixtures/serializers.rb +23 -0
- data/spec/fixtures/services.rb +26 -0
- data/spec/query/sort_spec.rb +47 -0
- data/spec/query_spec.rb +63 -0
- data/spec/response/adapter/csv_spec.rb +47 -0
- data/spec/response/adapter/json_spec.rb +66 -0
- data/spec/response/adapter/xlsx_spec.rb +59 -0
- data/spec/response/adapter/xml_spec.rb +63 -0
- data/spec/response/fields_spec.rb +45 -0
- data/spec/response/record_spec.rb +45 -0
- data/spec/response_spec.rb +153 -0
- data/spec/service/result/failure_spec.rb +16 -0
- data/spec/service/result/sucess_spec.rb +17 -0
- data/spec/service_spec.rb +16 -0
- data/spec/spec_helper.rb +15 -52
- metadata +78 -81
- data/lib/backframe/actioncontroller/acts_as_activation.rb +0 -70
- data/lib/backframe/actioncontroller/acts_as_api.rb +0 -39
- data/lib/backframe/actioncontroller/acts_as_api/adapter.rb +0 -53
- data/lib/backframe/actioncontroller/acts_as_api/errors.rb +0 -48
- data/lib/backframe/actioncontroller/acts_as_api/headers.rb +0 -11
- data/lib/backframe/actioncontroller/acts_as_api/page.rb +0 -181
- data/lib/backframe/actioncontroller/acts_as_reset.rb +0 -86
- data/lib/backframe/actioncontroller/acts_as_resource.rb +0 -92
- data/lib/backframe/actioncontroller/acts_as_resource/actions.rb +0 -100
- data/lib/backframe/actioncontroller/acts_as_session.rb +0 -80
- data/lib/backframe/activerecord/acts_as_activable.rb +0 -50
- data/lib/backframe/activerecord/acts_as_distinct.rb +0 -49
- data/lib/backframe/activerecord/acts_as_enum.rb +0 -62
- data/lib/backframe/activerecord/acts_as_orderable.rb +0 -40
- data/lib/backframe/activerecord/acts_as_percent.rb +0 -46
- data/lib/backframe/activerecord/acts_as_phone.rb +0 -59
- data/lib/backframe/activerecord/acts_as_user.rb +0 -101
- data/lib/backframe/activerecord/default_values.rb +0 -32
- data/lib/backframe/activerecord/filter_sort.rb +0 -79
- data/lib/backframe/activerecord/migration.rb +0 -25
- data/lib/backframe/image_cache/image_cache.rb +0 -45
- data/lib/backframe/image_cache/lib/asset.rb +0 -109
- data/lib/backframe/image_cache/lib/cache.rb +0 -67
- data/lib/backframe/image_cache/lib/conversions.rb +0 -132
- data/lib/backframe/models/activation.rb +0 -60
- data/lib/backframe/models/activity.rb +0 -40
- data/lib/backframe/models/reset.rb +0 -59
- data/lib/backframe/models/story.rb +0 -9
- data/lib/backframe/serializers/activity_serializer.rb +0 -44
- data/spec/backframe/acts_as_api_spec.rb +0 -225
- data/spec/backframe/acts_as_resource_spec.rb +0 -178
- data/spec/support/example_factory.rb +0 -9
- data/spec/support/example_serializer.rb +0 -3
- data/spec/support/schema.rb +0 -8
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Response::Fields do
|
4
|
+
|
5
|
+
it 'returns the default fields in the default order' do
|
6
|
+
actual = Backframe::Response::Fields.new(Backframe::Fixtures::Contact, nil)
|
7
|
+
expected = [
|
8
|
+
{ label: "id", key: "id" },
|
9
|
+
{ label: "first_name", key: "first_name" },
|
10
|
+
{ label: "last_name", key: "last_name" },
|
11
|
+
{ label: "email", key: "email" },
|
12
|
+
{ label: "photo.id", key: "photo.id" },
|
13
|
+
{ label: "photo.path", key: "photo.path" }
|
14
|
+
]
|
15
|
+
expect(actual.any?).to eq(false)
|
16
|
+
expect(actual.array).to eq(expected)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns the fields with an alternate order' do
|
20
|
+
actual = Backframe::Response::Fields.new(Backframe::Fixtures::Contact, 'last_name,first_name')
|
21
|
+
expected = [
|
22
|
+
{ label: "last_name", key: "last_name" },
|
23
|
+
{ label: "first_name", key: "first_name" }
|
24
|
+
]
|
25
|
+
expect(actual.array).to eq(expected)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns a field with an alias' do
|
29
|
+
actual = Backframe::Response::Fields.new(Backframe::Fixtures::Contact, 'First Name:first_name')
|
30
|
+
expected = [
|
31
|
+
{ label: "First Name", key: "first_name" }
|
32
|
+
]
|
33
|
+
expect(actual.array).to eq(expected)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns fields with mixed aliases' do
|
37
|
+
actual = Backframe::Response::Fields.new(Backframe::Fixtures::Contact, 'First Name:first_name,last_name')
|
38
|
+
expected = [
|
39
|
+
{ label: "First Name", key: "first_name" },
|
40
|
+
{ label: "last_name", key: "last_name" }
|
41
|
+
]
|
42
|
+
expect(actual.array).to eq(expected)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Response::Record do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@hash = { first_name: 'Greg', last_name: 'Kops', email: 'greg@thinktopography.com', photo: { id: 1, path: '/images/greg.jpg' } }
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'casts a string path' do
|
10
|
+
actual = Backframe::Response::Record.cast_path('a')
|
11
|
+
expected = ['a']
|
12
|
+
expect(actual).to eq(expected)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'casts a nested string path' do
|
16
|
+
actual = Backframe::Response::Record.cast_path('a.b.c')
|
17
|
+
expected = ['a','b','c']
|
18
|
+
expect(actual).to eq(expected)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'casts a symbol path' do
|
22
|
+
actual = Backframe::Response::Record.cast_path(:a)
|
23
|
+
expected = ['a']
|
24
|
+
expect(actual).to eq(expected)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'casts an array path' do
|
28
|
+
actual = Backframe::Response::Record.cast_path(['a'])
|
29
|
+
expected = ['a']
|
30
|
+
expect(actual).to eq(expected)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'gets top level value' do
|
34
|
+
actual = Backframe::Response::Record.get_value(@hash, 'first_name')
|
35
|
+
expected = 'Greg'
|
36
|
+
expect(actual).to eq(expected)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'gets nested value' do
|
40
|
+
actual = Backframe::Response::Record.get_value(@hash, 'photo.id')
|
41
|
+
expected = 1
|
42
|
+
expect(actual).to eq(expected)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Response do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@records = [
|
7
|
+
{ id: 1, first_name: 'Greg', last_name: 'Kops', email: 'greg@thinktopography.com', photo: { id: 1, path: '/images/greg.jpg' } },
|
8
|
+
{ id: 2, first_name: 'Megan', last_name: 'Pugh', email: 'megan@thinktopography.com', photo: { id: 2, path: '/images/megan.jpg' } },
|
9
|
+
{ id: 3, first_name: 'Kath', last_name: 'Tibbetts', email: 'kath@thinktopography.com', photo: { id: 3, path: '/images/kath.jpg' } },
|
10
|
+
{ id: 4, first_name: 'Armand', last_name: 'Zerilli', email: 'armand@thinktopography.com', photo: { id: 4, path: '/images/armand.jpg' } }
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'handles success' do
|
15
|
+
actual = Backframe::Response.success({ text: 'test', content_type: 'text/plain' })
|
16
|
+
expected = { text: 'test', content_type: 'text/plain', status: 200 }
|
17
|
+
expect(actual).to eq(expected)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'handles failure' do
|
21
|
+
actual = Backframe::Response.failure('Application Error', 500)
|
22
|
+
expected = {
|
23
|
+
json: {
|
24
|
+
error: {
|
25
|
+
message: 'Application Error',
|
26
|
+
status: 500
|
27
|
+
}
|
28
|
+
},
|
29
|
+
content_type: 'application/json',
|
30
|
+
status: 500
|
31
|
+
}
|
32
|
+
expect(actual).to eq(expected)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'renders error if no format provided' do
|
36
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'bat' })
|
37
|
+
expected = {
|
38
|
+
json: { error: { message: "Unknown Format", status: 404 } },
|
39
|
+
content_type: 'application/json',
|
40
|
+
status: 404
|
41
|
+
}
|
42
|
+
expect(actual).to eq(expected)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'renders plain' do
|
46
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'json' })
|
47
|
+
expected = {
|
48
|
+
json: {
|
49
|
+
records: @records,
|
50
|
+
total_records: 4,
|
51
|
+
current_page: 1,
|
52
|
+
total_pages: 1
|
53
|
+
},
|
54
|
+
content_type: 'application/json',
|
55
|
+
status: 200
|
56
|
+
}
|
57
|
+
expect(actual).to eq(expected)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'renders with pagination' do
|
61
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'json', page: 1, per_page: 2 })
|
62
|
+
expected = {
|
63
|
+
json: {
|
64
|
+
records: @records[0, 2],
|
65
|
+
total_records: 4,
|
66
|
+
current_page: 1,
|
67
|
+
total_pages: 2
|
68
|
+
},
|
69
|
+
content_type: 'application/json',
|
70
|
+
status: 200
|
71
|
+
}
|
72
|
+
expect(actual).to eq(expected)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'renders with fields' do
|
76
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'json', fields: 'First Name:first_name' })
|
77
|
+
expected = {
|
78
|
+
json: {
|
79
|
+
records: @records.map { |r| { first_name: r[:first_name]} },
|
80
|
+
total_records: 4,
|
81
|
+
current_page: 1,
|
82
|
+
total_pages: 1
|
83
|
+
},
|
84
|
+
content_type: 'application/json',
|
85
|
+
status: 200
|
86
|
+
}
|
87
|
+
expect(actual).to eq(expected)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'renders default xml response' do
|
91
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'xml' })
|
92
|
+
expected = {
|
93
|
+
xml: [
|
94
|
+
'<?xml version="1.0"?><records>',
|
95
|
+
'<record><id>1</id><first_name>Greg</first_name><last_name>Kops</last_name><email>greg@thinktopography.com</email><photo.id>1</photo.id><photo.path>/images/greg.jpg</photo.path></record>',
|
96
|
+
'<record><id>2</id><first_name>Megan</first_name><last_name>Pugh</last_name><email>megan@thinktopography.com</email><photo.id>2</photo.id><photo.path>/images/megan.jpg</photo.path></record>',
|
97
|
+
'<record><id>3</id><first_name>Kath</first_name><last_name>Tibbetts</last_name><email>kath@thinktopography.com</email><photo.id>3</photo.id><photo.path>/images/kath.jpg</photo.path></record>',
|
98
|
+
'<record><id>4</id><first_name>Armand</first_name><last_name>Zerilli</last_name><email>armand@thinktopography.com</email><photo.id>4</photo.id><photo.path>/images/armand.jpg</photo.path></record>',
|
99
|
+
'</records>'
|
100
|
+
].join,
|
101
|
+
content_type: "application/xhtml+xml",
|
102
|
+
status: 200
|
103
|
+
}
|
104
|
+
expect(actual).to eq(expected)
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'renders default csv response' do
|
108
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'csv' })
|
109
|
+
expected = {
|
110
|
+
text: [
|
111
|
+
'id,first_name,last_name,email,photo.id,photo.path',
|
112
|
+
'1,Greg,Kops,greg@thinktopography.com,1,/images/greg.jpg',
|
113
|
+
'2,Megan,Pugh,megan@thinktopography.com,2,/images/megan.jpg',
|
114
|
+
'3,Kath,Tibbetts,kath@thinktopography.com,3,/images/kath.jpg',
|
115
|
+
'4,Armand,Zerilli,armand@thinktopography.com,4,/images/armand.jpg'
|
116
|
+
].join("\n"),
|
117
|
+
content_type: "text/plain",
|
118
|
+
status: 200
|
119
|
+
}
|
120
|
+
expect(actual).to eq(expected)
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'renders default tsv response' do
|
124
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'tsv' })
|
125
|
+
expected = {
|
126
|
+
text: [
|
127
|
+
"id\tfirst_name\tlast_name\temail\tphoto.id\tphoto.path",
|
128
|
+
"1\tGreg\tKops\tgreg@thinktopography.com\t1\t/images/greg.jpg",
|
129
|
+
"2\tMegan\tPugh\tmegan@thinktopography.com\t2\t/images/megan.jpg",
|
130
|
+
"3\tKath\tTibbetts\tkath@thinktopography.com\t3\t/images/kath.jpg",
|
131
|
+
"4\tArmand\tZerilli\tarmand@thinktopography.com\t4\t/images/armand.jpg"
|
132
|
+
].join("\n"),
|
133
|
+
content_type: "text/plain",
|
134
|
+
status: 200
|
135
|
+
}
|
136
|
+
expect(actual).to eq(expected)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'renders default xlsx response' do
|
140
|
+
actual = Backframe::Response.render(Backframe::Fixtures::Contact, { format: 'xlsx' })
|
141
|
+
expect(actual[:content_type]).to eq('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
|
142
|
+
expect(actual[:status]).to eq(200)
|
143
|
+
File.open('tmp.xlsx', 'w') { |file| file.write(actual[:text]) }
|
144
|
+
xlsx = Roo::Excelx.new('tmp.xlsx')
|
145
|
+
expect(xlsx.sheet(0).row(1)).to eq(["id", "first_name", "last_name", "email", "photo.id", "photo.path"])
|
146
|
+
expect(xlsx.sheet(0).row(2)).to eq(["1", "Greg", "Kops", "greg@thinktopography.com", "1", "/images/greg.jpg"])
|
147
|
+
expect(xlsx.sheet(0).row(3)).to eq(["2", "Megan", "Pugh", "megan@thinktopography.com", "2", "/images/megan.jpg"])
|
148
|
+
expect(xlsx.sheet(0).row(4)).to eq(["3", "Kath", "Tibbetts", "kath@thinktopography.com", "3", "/images/kath.jpg"])
|
149
|
+
expect(xlsx.sheet(0).row(5)).to eq(["4", "Armand", "Zerilli", "armand@thinktopography.com", "4", "/images/armand.jpg"])
|
150
|
+
File.unlink('tmp.xlsx')
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Service::Result::Failure do
|
4
|
+
|
5
|
+
it 'reports failure' do
|
6
|
+
records = Backframe::Service::Result::Failure.new({})
|
7
|
+
expect(records.success?).to be false
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'provides access to value object' do
|
11
|
+
records = Backframe::Service::Result::Failure.new(message: 'There was a problem', errors: {})
|
12
|
+
expect(records.message).to eq('There was a problem')
|
13
|
+
expect(records.errors).to eq({})
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Service::Result::Success do
|
4
|
+
|
5
|
+
it 'reports success' do
|
6
|
+
records = Backframe::Service::Result::Success.new({})
|
7
|
+
expect(records.success?).to be true
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'provides access to value object' do
|
11
|
+
records = Backframe::Service::Result::Success.new({ one: 1, two: 2, three: 3 })
|
12
|
+
expect(records.one).to eq(1)
|
13
|
+
expect(records.two).to eq(2)
|
14
|
+
expect(records.three).to eq(3)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Backframe::Service do
|
4
|
+
|
5
|
+
it 'succeeds' do
|
6
|
+
result = Backframe::Fixtures::CreateContactService.perform({ first_name: 'Joe', last_name: 'Doe', email: 'john.doe@gmail.com' })
|
7
|
+
expect(result.success?).to be(true)
|
8
|
+
expect(result.contact.first_name).to eq('Joe')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'fails' do
|
12
|
+
result = Backframe::Fixtures::CreateContactService.perform({})
|
13
|
+
expect(result.success?).to be(false)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,61 +1,24 @@
|
|
1
|
-
|
1
|
+
require "codeclimate-test-reporter"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'rails'
|
6
|
-
require 'action_controller/railtie'
|
7
|
-
require 'active_model_serializers'
|
8
|
-
require 'active_model_serializers/railtie'
|
9
|
-
require 'active_record'
|
10
|
-
require 'factory_girl'
|
11
|
-
require 'kaminari'
|
12
|
-
require 'rspec/rails'
|
13
|
-
|
14
|
-
LOGGER = Logger.new('/dev/null')
|
15
|
-
|
16
|
-
Rails.logger = LOGGER
|
17
|
-
ActiveModelSerializers.logger = LOGGER
|
18
|
-
ActiveRecord::Base.logger = LOGGER
|
3
|
+
CodeClimate::TestReporter.start
|
19
4
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
module Backframe
|
29
|
-
class Application < ::Rails::Application
|
30
|
-
def self.find_root(from)
|
31
|
-
Dir.pwd
|
32
|
-
end
|
33
|
-
|
34
|
-
config.eager_load = false
|
35
|
-
config.secret_key_base = 'secret'
|
36
|
-
end
|
37
|
-
end
|
5
|
+
require 'fixtures/active_record'
|
6
|
+
require 'fixtures/models'
|
7
|
+
require 'fixtures/serializers'
|
8
|
+
require 'fixtures/queries'
|
9
|
+
require 'fixtures/services'
|
10
|
+
require 'fixtures/seeds'
|
11
|
+
require 'backframe'
|
12
|
+
require 'roo'
|
38
13
|
|
39
|
-
|
40
|
-
Backframe::Mime.register_types
|
14
|
+
RSpec.configure do |config|
|
41
15
|
|
42
|
-
|
43
|
-
|
44
|
-
@json_response ||= JSON.parse(response.body).with_indifferent_access
|
16
|
+
config.expect_with :rspec do |expectations|
|
17
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
45
18
|
end
|
46
19
|
|
47
|
-
|
48
|
-
|
49
|
-
ActiveModel::SerializableResource.new(value, opts).as_json
|
20
|
+
config.mock_with :rspec do |mocks|
|
21
|
+
mocks.verify_partial_doubles = true
|
50
22
|
end
|
51
|
-
end
|
52
23
|
|
53
|
-
RSpec.configure do |config|
|
54
|
-
config.include Helpers
|
55
|
-
config.include Rails.application.routes.url_helpers
|
56
|
-
config.include FactoryGirl::Syntax::Methods
|
57
|
-
|
58
|
-
config.use_transactional_fixtures = true
|
59
24
|
end
|
60
|
-
|
61
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
metadata
CHANGED
@@ -1,46 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backframe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Kops
|
8
|
-
- Scott Nelson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2016-
|
11
|
+
date: 2016-10-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 0.83.0
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 0.83.0
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: phony
|
14
|
+
name: rake
|
30
15
|
requirement: !ruby/object:Gem::Requirement
|
31
16
|
requirements:
|
32
|
-
- - "
|
17
|
+
- - ">="
|
33
18
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
35
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
36
21
|
prerelease: false
|
37
22
|
version_requirements: !ruby/object:Gem::Requirement
|
38
23
|
requirements:
|
39
|
-
- - "
|
24
|
+
- - ">="
|
40
25
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
26
|
+
version: '0'
|
42
27
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
28
|
+
name: activesupport
|
44
29
|
requirement: !ruby/object:Gem::Requirement
|
45
30
|
requirements:
|
46
31
|
- - "~>"
|
@@ -54,102 +39,102 @@ dependencies:
|
|
54
39
|
- !ruby/object:Gem::Version
|
55
40
|
version: '4.0'
|
56
41
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
42
|
+
name: activerecord
|
58
43
|
requirement: !ruby/object:Gem::Requirement
|
59
44
|
requirements:
|
60
45
|
- - "~>"
|
61
46
|
- !ruby/object:Gem::Version
|
62
|
-
version: '4.
|
47
|
+
version: '4.2'
|
63
48
|
type: :runtime
|
64
49
|
prerelease: false
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
66
51
|
requirements:
|
67
52
|
- - "~>"
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version: '4.
|
54
|
+
version: '4.2'
|
70
55
|
- !ruby/object:Gem::Dependency
|
71
56
|
name: active_model_serializers
|
72
57
|
requirement: !ruby/object:Gem::Requirement
|
73
58
|
requirements:
|
74
|
-
- - "
|
59
|
+
- - "~>"
|
75
60
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.10.0
|
61
|
+
version: 0.10.0
|
77
62
|
type: :runtime
|
78
63
|
prerelease: false
|
79
64
|
version_requirements: !ruby/object:Gem::Requirement
|
80
65
|
requirements:
|
81
|
-
- - "
|
66
|
+
- - "~>"
|
82
67
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.10.0
|
68
|
+
version: 0.10.0
|
84
69
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
70
|
+
name: write_xlsx
|
86
71
|
requirement: !ruby/object:Gem::Requirement
|
87
72
|
requirements:
|
88
73
|
- - "~>"
|
89
74
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
75
|
+
version: 0.83.0
|
91
76
|
type: :runtime
|
92
77
|
prerelease: false
|
93
78
|
version_requirements: !ruby/object:Gem::Requirement
|
94
79
|
requirements:
|
95
80
|
- - "~>"
|
96
81
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
98
|
-
description:
|
99
|
-
email:
|
82
|
+
version: 0.83.0
|
83
|
+
description: A collection of core objects for writing testable APIs
|
84
|
+
email: greg@thinktopography.com
|
100
85
|
executables: []
|
101
86
|
extensions: []
|
102
87
|
extra_rdoc_files: []
|
103
88
|
files:
|
89
|
+
- ".codeclimate.yml"
|
104
90
|
- ".gitignore"
|
105
|
-
- ".
|
91
|
+
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
106
93
|
- Gemfile
|
107
94
|
- README.md
|
108
95
|
- Rakefile
|
109
96
|
- backframe.gemspec
|
110
97
|
- circle.yml
|
111
98
|
- lib/backframe.rb
|
112
|
-
- lib/backframe/actioncontroller/acts_as_activation.rb
|
113
|
-
- lib/backframe/actioncontroller/acts_as_api.rb
|
114
|
-
- lib/backframe/actioncontroller/acts_as_api/adapter.rb
|
115
|
-
- lib/backframe/actioncontroller/acts_as_api/errors.rb
|
116
|
-
- lib/backframe/actioncontroller/acts_as_api/headers.rb
|
117
|
-
- lib/backframe/actioncontroller/acts_as_api/page.rb
|
118
|
-
- lib/backframe/actioncontroller/acts_as_reset.rb
|
119
|
-
- lib/backframe/actioncontroller/acts_as_resource.rb
|
120
|
-
- lib/backframe/actioncontroller/acts_as_resource/actions.rb
|
121
|
-
- lib/backframe/actioncontroller/acts_as_session.rb
|
122
|
-
- lib/backframe/activerecord/acts_as_activable.rb
|
123
|
-
- lib/backframe/activerecord/acts_as_distinct.rb
|
124
|
-
- lib/backframe/activerecord/acts_as_enum.rb
|
125
|
-
- lib/backframe/activerecord/acts_as_orderable.rb
|
126
|
-
- lib/backframe/activerecord/acts_as_percent.rb
|
127
|
-
- lib/backframe/activerecord/acts_as_phone.rb
|
128
|
-
- lib/backframe/activerecord/acts_as_user.rb
|
129
|
-
- lib/backframe/activerecord/default_values.rb
|
130
|
-
- lib/backframe/activerecord/filter_sort.rb
|
131
|
-
- lib/backframe/activerecord/migration.rb
|
132
|
-
- lib/backframe/image_cache/image_cache.rb
|
133
|
-
- lib/backframe/image_cache/lib/asset.rb
|
134
|
-
- lib/backframe/image_cache/lib/cache.rb
|
135
|
-
- lib/backframe/image_cache/lib/conversions.rb
|
136
99
|
- lib/backframe/mime.rb
|
137
|
-
- lib/backframe/
|
138
|
-
- lib/backframe/
|
139
|
-
- lib/backframe/models/reset.rb
|
140
|
-
- lib/backframe/models/story.rb
|
100
|
+
- lib/backframe/query.rb
|
101
|
+
- lib/backframe/query/sort.rb
|
141
102
|
- lib/backframe/railtie.rb
|
142
|
-
- lib/backframe/
|
103
|
+
- lib/backframe/response.rb
|
104
|
+
- lib/backframe/response/adapter/csv.rb
|
105
|
+
- lib/backframe/response/adapter/json.rb
|
106
|
+
- lib/backframe/response/adapter/xlsx.rb
|
107
|
+
- lib/backframe/response/adapter/xml.rb
|
108
|
+
- lib/backframe/response/collection.rb
|
109
|
+
- lib/backframe/response/fields.rb
|
110
|
+
- lib/backframe/response/record.rb
|
111
|
+
- lib/backframe/service.rb
|
112
|
+
- lib/backframe/service/result/base.rb
|
113
|
+
- lib/backframe/service/result/failure.rb
|
114
|
+
- lib/backframe/service/result/success.rb
|
143
115
|
- lib/backframe/version.rb
|
144
|
-
- spec/
|
145
|
-
- spec/
|
116
|
+
- spec/fixtures/active_record.rb
|
117
|
+
- spec/fixtures/models.rb
|
118
|
+
- spec/fixtures/queries.rb
|
119
|
+
- spec/fixtures/seeds.rb
|
120
|
+
- spec/fixtures/serializers.rb
|
121
|
+
- spec/fixtures/services.rb
|
122
|
+
- spec/query/sort_spec.rb
|
123
|
+
- spec/query_spec.rb
|
124
|
+
- spec/response/adapter/csv_spec.rb
|
125
|
+
- spec/response/adapter/json_spec.rb
|
126
|
+
- spec/response/adapter/xlsx_spec.rb
|
127
|
+
- spec/response/adapter/xml_spec.rb
|
128
|
+
- spec/response/fields_spec.rb
|
129
|
+
- spec/response/record_spec.rb
|
130
|
+
- spec/response_spec.rb
|
131
|
+
- spec/service/result/failure_spec.rb
|
132
|
+
- spec/service/result/sucess_spec.rb
|
133
|
+
- spec/service_spec.rb
|
146
134
|
- spec/spec_helper.rb
|
147
|
-
|
148
|
-
|
149
|
-
-
|
150
|
-
- spec/support/schema.rb
|
151
|
-
homepage:
|
152
|
-
licenses: []
|
135
|
+
homepage: https://github.com/thinktopography/backframe
|
136
|
+
licenses:
|
137
|
+
- MIT
|
153
138
|
metadata: {}
|
154
139
|
post_install_message:
|
155
140
|
rdoc_options: []
|
@@ -170,12 +155,24 @@ rubyforge_project:
|
|
170
155
|
rubygems_version: 2.4.8
|
171
156
|
signing_key:
|
172
157
|
specification_version: 4
|
173
|
-
summary:
|
158
|
+
summary: backframe
|
174
159
|
test_files:
|
175
|
-
- spec/
|
176
|
-
- spec/
|
160
|
+
- spec/fixtures/active_record.rb
|
161
|
+
- spec/fixtures/models.rb
|
162
|
+
- spec/fixtures/queries.rb
|
163
|
+
- spec/fixtures/seeds.rb
|
164
|
+
- spec/fixtures/serializers.rb
|
165
|
+
- spec/fixtures/services.rb
|
166
|
+
- spec/query/sort_spec.rb
|
167
|
+
- spec/query_spec.rb
|
168
|
+
- spec/response/adapter/csv_spec.rb
|
169
|
+
- spec/response/adapter/json_spec.rb
|
170
|
+
- spec/response/adapter/xlsx_spec.rb
|
171
|
+
- spec/response/adapter/xml_spec.rb
|
172
|
+
- spec/response/fields_spec.rb
|
173
|
+
- spec/response/record_spec.rb
|
174
|
+
- spec/response_spec.rb
|
175
|
+
- spec/service/result/failure_spec.rb
|
176
|
+
- spec/service/result/sucess_spec.rb
|
177
|
+
- spec/service_spec.rb
|
177
178
|
- spec/spec_helper.rb
|
178
|
-
- spec/support/example.rb
|
179
|
-
- spec/support/example_factory.rb
|
180
|
-
- spec/support/example_serializer.rb
|
181
|
-
- spec/support/schema.rb
|