active_model_version_serializers 0.0.4 → 0.0.5

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.
@@ -63,9 +63,9 @@ module ActiveModel
63
63
  #
64
64
  # @param [Symbol] version
65
65
  # @param [Proc] block
66
- def self.version(version, &block)
66
+ def self.version(version, superclass = ActiveModel::Serializer, &block)
67
67
  base_class = self
68
- vklass = Class.new(ActiveModel::Serializer) do
68
+ vklass = Class.new(superclass) do
69
69
  self.root(base_class._root)
70
70
  alias_method base_class._name.to_sym, :object
71
71
 
@@ -1,5 +1,5 @@
1
1
  module ActiveModel
2
2
  class VersionSerializer
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../../spec_helper", __FILE__)
3
+
4
+ describe "InheritedSerialization" do
5
+ context "v1" do
6
+ context "serialization of a car object" do
7
+ let(:car_attributes) do
8
+ FactoryGirl.attributes_for(:v1_car)
9
+ end
10
+
11
+ let(:car) do
12
+ FactoryGirl.build(:v1_car, car_attributes)
13
+ end
14
+
15
+ let(:car_serializer) do
16
+ CarSerializer.new(car)
17
+ end
18
+
19
+ subject {car_serializer.as_json}
20
+ it {should eq({car: car_attributes})}
21
+ end
22
+ end
23
+
24
+ context "v2" do
25
+ let(:car_attributes) do
26
+ FactoryGirl.attributes_for(:v2_car)
27
+ end
28
+
29
+ let(:car) do
30
+ FactoryGirl.build(:v2_car, car_attributes)
31
+ end
32
+
33
+ let(:car_serializer) do
34
+ CarSerializer.new(car, version: :v2)
35
+ end
36
+
37
+ subject {car_serializer.as_json}
38
+ it {should eq({car: car_attributes})}
39
+ end
40
+ end
@@ -43,4 +43,17 @@ FactoryGirl.define do
43
43
  factory :v3_turn, traits: [:turn_version_1, :turn_version_2]
44
44
  factory :v4_turn, traits: [:turn_version_1, :turn_version_2]
45
45
  end
46
+
47
+ factory :car do
48
+ trait :car_ish do
49
+ audio_system { [:none, :radio, :cd_player, :turntables].sample }
50
+ wheels { [3, 4, 6, 8].sample }
51
+ end
52
+
53
+ factory :v1_car, traits: [:car_ish] do
54
+ colour { [:red, :green, :blue, :black, :white].sample }
55
+ end
56
+
57
+ factory :v2_car, traits: [:car_ish]
58
+ end
46
59
  end
@@ -0,0 +1,4 @@
1
+ class Car
2
+ include ActiveModel::SerializerSupport
3
+ attr_accessor :audio_system, :colour, :wheels
4
+ end
@@ -0,0 +1,14 @@
1
+ class VehicleSerializer < ActiveModel::Serializer
2
+ attributes :colour, :wheels
3
+ end
4
+
5
+ class CarSerializer < ActiveModel::VersionSerializer
6
+ version :v1, VehicleSerializer do
7
+ attributes :audio_system
8
+ end
9
+
10
+ version :v2 do
11
+ version_attributes :v1, without: [:colour]
12
+ end
13
+ end
14
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_version_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-28 00:00:00.000000000 Z
12
+ date: 2012-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_model_serializers
@@ -141,11 +141,14 @@ files:
141
141
  - lib/active_model/version_serializer.rb
142
142
  - lib/active_model/version_serializers/version.rb
143
143
  - lib/active_model_version_serializers.rb
144
+ - spec/scenerio/inheritance_spec.rb
144
145
  - spec/scenerio/user_serialization_spec.rb
145
146
  - spec/spec_helper.rb
146
147
  - spec/support/factories.rb
148
+ - spec/support/models/car.rb
147
149
  - spec/support/models/turn.rb
148
150
  - spec/support/models/user.rb
151
+ - spec/support/serializers/inherited_serializer.rb
149
152
  - spec/support/serializers/turn_serializer.rb
150
153
  - spec/support/serializers/user_serializer.rb
151
154
  - spec/version_spec.rb
@@ -174,11 +177,14 @@ signing_key:
174
177
  specification_version: 3
175
178
  summary: Active Model Serializer with versioning
176
179
  test_files:
180
+ - spec/scenerio/inheritance_spec.rb
177
181
  - spec/scenerio/user_serialization_spec.rb
178
182
  - spec/spec_helper.rb
179
183
  - spec/support/factories.rb
184
+ - spec/support/models/car.rb
180
185
  - spec/support/models/turn.rb
181
186
  - spec/support/models/user.rb
187
+ - spec/support/serializers/inherited_serializer.rb
182
188
  - spec/support/serializers/turn_serializer.rb
183
189
  - spec/support/serializers/user_serializer.rb
184
190
  - spec/version_spec.rb