birkirb-acts_as_serializable 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -60,7 +60,7 @@ begin
60
60
 
61
61
  task :test do
62
62
  Rake::Task[:spec].invoke
63
- Rake::Task[:features].invoke
63
+ # Rake::Task[:features].invoke
64
64
  end
65
65
 
66
66
  desc "Run tests with RCov"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.4
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{acts_as_serializable}
5
- s.version = "0.1.2"
5
+ s.version = "0.1.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Birkir A. Barkarson"]
@@ -20,12 +20,16 @@ Gem::Specification.new do |s|
20
20
  "acts_as_serializable.gemspec",
21
21
  "init.rb",
22
22
  "lib/acts_as_serializable.rb",
23
+ "lib/builder/hash_structure.rb",
24
+ "lib/builder/json_format.rb",
25
+ "lib/builder/xml_markup.rb",
23
26
  "lib/version.rb",
24
27
  "lib/versions.rb",
25
28
  "spec/acts_as_serializable_spec.rb",
26
29
  "spec/app/serializations/test_rails_model/test_rails_model/version_1_0_0.rb",
27
30
  "spec/app/serializations/test_rails_model/test_rails_model/version_1_5.rb",
28
31
  "spec/app/serializations/test_rails_model/test_rails_model/version_2_1.rb",
32
+ "spec/builder_patch_spec.rb",
29
33
  "spec/serializations/test_model/version_1_0_0.rb",
30
34
  "spec/serializations/test_model/version_1_5.rb",
31
35
  "spec/serializations/test_model/version_2_1.rb",
@@ -44,6 +48,7 @@ Gem::Specification.new do |s|
44
48
  "spec/spec_helper.rb",
45
49
  "spec/acts_as_serializable_spec.rb",
46
50
  "spec/versions_spec.rb",
51
+ "spec/builder_patch_spec.rb",
47
52
  "spec/version_spec.rb",
48
53
  "spec/serializations/test_model/version_1_0_0.rb",
49
54
  "spec/serializations/test_model/version_2_1.rb",
@@ -1,7 +1,9 @@
1
- require 'builder/xmlmarkup'
2
1
  require 'jsonbuilder'
3
2
  require 'active_support'
4
3
  require 'find'
4
+ require File.join(File.dirname(__FILE__), 'builder/xml_markup')
5
+ require File.join(File.dirname(__FILE__), 'builder/json_format')
6
+ require File.join(File.dirname(__FILE__), 'builder/hash_structure')
5
7
 
6
8
  module Serializable
7
9
  SERIALIZE_TO_VERSION_REGEXP = /^serialize_to_version_((:?\d+_?)+)$/
@@ -92,11 +94,11 @@ module Serializable
92
94
  # This module contains instance methods
93
95
  module InstanceMethods
94
96
  def to_hash(options = {})
95
- serialize(Builder::Hash.new, options)
97
+ serialize(Builder::HashStructure.new, options)
96
98
  end
97
99
 
98
100
  def to_json(options = {})
99
- serialize(Builder::Json.new, options)
101
+ serialize(Builder::JsonFormat.new, options)
100
102
  end
101
103
 
102
104
  def to_xml(options = {})
@@ -118,6 +120,10 @@ module Serializable
118
120
  end
119
121
  end
120
122
  end
123
+
124
+ def serialize_for(builder, options = {})
125
+ self.send(builder.serialization_method!, options)
126
+ end
121
127
  end
122
128
 
123
129
  end
@@ -0,0 +1,7 @@
1
+ module Builder
2
+ class HashStructure
3
+ def serialization_method!
4
+ :to_hash
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Builder
2
+ class JsonFormat
3
+ def serialization_method!
4
+ :to_json
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Builder
2
+ class XmlMarkup
3
+ def serialization_method!
4
+ :to_xml
5
+ end
6
+ end
7
+ end
@@ -107,6 +107,14 @@ describe Serializable, 'when included in a class that has multiple versioned ser
107
107
 
108
108
  lambda { klass.to_hash(:version => '0.1.0') }.should raise_error(RuntimeError, "Version 0.1.0 given but no serialization method found")
109
109
  end
110
+
111
+ it '#serialize_for should call a to_format methods for a given builder' do
112
+ klass = SerializableObject.new
113
+
114
+ klass.serialize_for(Builder::XmlMarkup.new).should == "This is version 2.1"
115
+ klass.serialize_for(Builder::JsonFormat.new).should == "This is version 2.1"
116
+ klass.serialize_for(Builder::HashStructure.new).should == "This is version 2.1"
117
+ end
110
118
  end
111
119
 
112
120
  context 'and a to_format method is called with no version option' do
@@ -0,0 +1,19 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe Builder::XmlMarkup, 'having been patched' do
4
+ it 'should support #serialization_method' do
5
+ Builder::XmlMarkup.new.serialization_method!.should == :to_xml
6
+ end
7
+ end
8
+
9
+ describe Builder::HashStructure, 'having been patched' do
10
+ it 'should support #serialization_method' do
11
+ Builder::HashStructure.new.serialization_method!.should == :to_hash
12
+ end
13
+ end
14
+
15
+ describe Builder::JsonFormat, 'having been patched' do
16
+ it 'should support #serialization_method' do
17
+ Builder::JsonFormat.new.serialization_method!.should == :to_json
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: birkirb-acts_as_serializable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Birkir A. Barkarson
@@ -48,12 +48,16 @@ files:
48
48
  - acts_as_serializable.gemspec
49
49
  - init.rb
50
50
  - lib/acts_as_serializable.rb
51
+ - lib/builder/hash_structure.rb
52
+ - lib/builder/json_format.rb
53
+ - lib/builder/xml_markup.rb
51
54
  - lib/version.rb
52
55
  - lib/versions.rb
53
56
  - spec/acts_as_serializable_spec.rb
54
57
  - spec/app/serializations/test_rails_model/test_rails_model/version_1_0_0.rb
55
58
  - spec/app/serializations/test_rails_model/test_rails_model/version_1_5.rb
56
59
  - spec/app/serializations/test_rails_model/test_rails_model/version_2_1.rb
60
+ - spec/builder_patch_spec.rb
57
61
  - spec/serializations/test_model/version_1_0_0.rb
58
62
  - spec/serializations/test_model/version_1_5.rb
59
63
  - spec/serializations/test_model/version_2_1.rb
@@ -90,6 +94,7 @@ test_files:
90
94
  - spec/spec_helper.rb
91
95
  - spec/acts_as_serializable_spec.rb
92
96
  - spec/versions_spec.rb
97
+ - spec/builder_patch_spec.rb
93
98
  - spec/version_spec.rb
94
99
  - spec/serializations/test_model/version_1_0_0.rb
95
100
  - spec/serializations/test_model/version_2_1.rb