fars 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile.lock +1 -1
- data/README.md +259 -3
- data/fars.gemspec +3 -4
- data/lib/fars.rb +22 -3
- data/lib/fars/base_collection_serializer.rb +95 -41
- data/lib/fars/base_model_serializer.rb +32 -188
- data/lib/fars/base_object_serializer.rb +147 -0
- data/lib/fars/model_serializable.rb +7 -0
- data/lib/fars/relation_serializable.rb +5 -0
- data/lib/fars/version.rb +1 -1
- data/spec/active_record/base_spec.rb +15 -0
- data/spec/active_record/relation_spec.rb +16 -0
- data/spec/array_spec.rb +19 -0
- data/spec/fars/base_collection_serializer_spec.rb +45 -0
- data/spec/fars/base_model_serializer_spec.rb +110 -0
- data/spec/fars/base_object_serializer_spec.rb +35 -0
- data/spec/hash_spec.rb +36 -0
- data/spec/spec_helper.rb +6 -0
- data/spec/support/models/master.rb +3 -0
- data/spec/support/models/slave.rb +3 -0
- data/spec/support/serializers/another_master_serialiser.rb +11 -0
- data/spec/support/serializers/book_serializer.rb +12 -0
- data/spec/support/serializers/color_serializer.rb +5 -0
- data/spec/support/serializers/master_serializer.rb +8 -0
- data/spec/support/serializers/slave_serializer.rb +3 -0
- data/spec/support/serializers/stat_serializer.rb +5 -0
- data/spec/support/serializers/v1/master_serializer.rb +15 -0
- data/spec/support/serializers/v1/slave_serializer.rb +10 -0
- data/spec/tasks/db_setup.rake +1 -1
- metadata +42 -23
- data/spec/fars/api_version_spec.rb +0 -77
- data/spec/fars/fars_spec.rb +0 -75
@@ -1,77 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Fars::BaseModelSerializer do
|
4
|
-
before :all do
|
5
|
-
ActiveSupport::Inflector.inflections do |inflect|
|
6
|
-
inflect.irregular 'slave', 'slaves'
|
7
|
-
end
|
8
|
-
|
9
|
-
class Master < ActiveRecord::Base
|
10
|
-
has_many :slaves
|
11
|
-
end
|
12
|
-
class Slave < ActiveRecord::Base
|
13
|
-
belongs_to :master
|
14
|
-
end
|
15
|
-
|
16
|
-
module V1
|
17
|
-
class MasterSerializer < Fars::BaseModelSerializer
|
18
|
-
attributes :id, :name, :data, # attrs
|
19
|
-
:slaves
|
20
|
-
|
21
|
-
def meta
|
22
|
-
{'metadata' => :present}
|
23
|
-
end
|
24
|
-
end
|
25
|
-
class SlaveSerializer < Fars::BaseModelSerializer
|
26
|
-
attributes :id, :name, :data # attrs
|
27
|
-
end
|
28
|
-
|
29
|
-
class MastersSerializer < Fars::BaseCollectionSerializer ; end
|
30
|
-
class SlavesSerializer < Fars::BaseCollectionSerializer ; end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context '#to_json' do
|
35
|
-
before :each do
|
36
|
-
@object = Master.create(id: 1, name: 'Object1', data: '123')
|
37
|
-
2.times.each {|i| Slave.create(id: i+1, master_id: @object.id, name: "Slave #{i+1}") }
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'returns all fields with metadata' do
|
41
|
-
json_data = {
|
42
|
-
master: {id: 1, name: 'Object1', data: '123'},
|
43
|
-
_metadata: {metadata: :present}
|
44
|
-
}.to_json
|
45
|
-
|
46
|
-
V1::MasterSerializer.new(
|
47
|
-
@object,
|
48
|
-
add_metadata: true,
|
49
|
-
fields: [:id, :name, :data]
|
50
|
-
).to_json.should == json_data
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'returns not all field, whithout metadata' do
|
54
|
-
json_data = {master: {id: 1, name: 'Object1'}}.to_json
|
55
|
-
|
56
|
-
V1::MasterSerializer.new(
|
57
|
-
@object,
|
58
|
-
add_metadata: false,
|
59
|
-
fields: [:id, :name]
|
60
|
-
).to_json.should == json_data
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'returns all field with slaves' do
|
64
|
-
json_data = {master: {id: 1, name: 'Object1', data: '123',
|
65
|
-
slaves: [
|
66
|
-
{slave: {id: 1, name: 'Slave 1', data: nil}},
|
67
|
-
{slave: {id: 2, name: 'Slave 2', data: nil}},
|
68
|
-
]}}.to_json
|
69
|
-
|
70
|
-
V1::MasterSerializer.new(
|
71
|
-
@object,
|
72
|
-
add_metadata: false,
|
73
|
-
fields: [:id, :name, :data, :slaves]
|
74
|
-
).to_json.should == json_data
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/spec/fars/fars_spec.rb
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Fars::BaseModelSerializer do
|
4
|
-
before :all do
|
5
|
-
ActiveSupport::Inflector.inflections do |inflect|
|
6
|
-
inflect.irregular 'slave', 'slaves'
|
7
|
-
end
|
8
|
-
|
9
|
-
class Master < ActiveRecord::Base
|
10
|
-
has_many :slaves
|
11
|
-
end
|
12
|
-
class Slave < ActiveRecord::Base
|
13
|
-
belongs_to :master
|
14
|
-
end
|
15
|
-
|
16
|
-
class MasterSerializer < Fars::BaseModelSerializer
|
17
|
-
attributes :id, :name, :data, # attrs
|
18
|
-
:slaves
|
19
|
-
|
20
|
-
def meta
|
21
|
-
{'metadata' => :present}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
class SlaveSerializer < Fars::BaseModelSerializer
|
25
|
-
attributes :id, :name, :data # attrs
|
26
|
-
end
|
27
|
-
|
28
|
-
class MastersSerializer < Fars::BaseCollectionSerializer ; end
|
29
|
-
class SlavesSerializer < Fars::BaseCollectionSerializer ; end
|
30
|
-
end
|
31
|
-
|
32
|
-
context '#to_json' do
|
33
|
-
before :each do
|
34
|
-
@object = Master.create(id: 1, name: 'Object1', data: '123')
|
35
|
-
2.times.each {|i| Slave.create(id: i+1, master_id: @object.id, name: "Slave #{i+1}") }
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'returns all fields with metadata' do
|
39
|
-
json_data = {
|
40
|
-
master: {id: 1, name: 'Object1', data: '123'},
|
41
|
-
_metadata: {metadata: :present}
|
42
|
-
}.to_json
|
43
|
-
|
44
|
-
MasterSerializer.new(
|
45
|
-
@object,
|
46
|
-
add_metadata: true,
|
47
|
-
fields: [:id, :name, :data]
|
48
|
-
).to_json.should == json_data
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'returns not all field, whithout metadata' do
|
52
|
-
json_data = {master: {id: 1, name: 'Object1'}}.to_json
|
53
|
-
|
54
|
-
MasterSerializer.new(
|
55
|
-
@object,
|
56
|
-
add_metadata: false,
|
57
|
-
fields: [:id, :name]
|
58
|
-
).to_json.should == json_data
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'returns all field with slaves' do
|
62
|
-
json_data = {master: {id: 1, name: 'Object1', data: '123',
|
63
|
-
slaves: [
|
64
|
-
{slave: {id: 1, name: 'Slave 1', data: nil}},
|
65
|
-
{slave: {id: 2, name: 'Slave 2', data: nil}},
|
66
|
-
]}}.to_json
|
67
|
-
|
68
|
-
MasterSerializer.new(
|
69
|
-
@object,
|
70
|
-
add_metadata: false,
|
71
|
-
fields: [:id, :name, :data, :slaves]
|
72
|
-
).to_json.should == json_data
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|