serialization_scopes 0.1.2 → 0.2.0

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.
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem "activerecord", '< 3.0.0'
4
- gem "rspec"
3
+ gem "activerecord", '>= 3.0.0.rc'
4
+ gem "rspec", ">= 2.0.0.beta.17"
5
5
  gem "rake"
6
6
  gem "jeweler"
data/Gemfile.lock CHANGED
@@ -1,26 +1,46 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activerecord (2.3.8)
5
- activesupport (= 2.3.8)
6
- activesupport (2.3.8)
4
+ activemodel (3.0.0.rc)
5
+ activesupport (= 3.0.0.rc)
6
+ builder (~> 2.1.2)
7
+ i18n (~> 0.4.1)
8
+ activerecord (3.0.0.rc)
9
+ activemodel (= 3.0.0.rc)
10
+ activesupport (= 3.0.0.rc)
11
+ arel (~> 0.4.0)
12
+ tzinfo (~> 0.3.22)
13
+ activesupport (3.0.0.rc)
14
+ arel (0.4.0)
15
+ activesupport (>= 3.0.0.beta)
16
+ builder (2.1.2)
17
+ diff-lcs (1.1.2)
7
18
  gemcutter (0.6.1)
8
19
  git (1.2.5)
20
+ i18n (0.4.1)
9
21
  jeweler (1.4.0)
10
22
  gemcutter (>= 0.1.0)
11
23
  git (>= 1.2.5)
12
24
  rubyforge (>= 2.0.0)
13
25
  json_pure (1.4.6)
14
26
  rake (0.8.7)
15
- rspec (1.3.0)
27
+ rspec (2.0.0.beta.19)
28
+ rspec-core (= 2.0.0.beta.19)
29
+ rspec-expectations (= 2.0.0.beta.19)
30
+ rspec-mocks (= 2.0.0.beta.19)
31
+ rspec-core (2.0.0.beta.19)
32
+ rspec-expectations (2.0.0.beta.19)
33
+ diff-lcs (>= 1.1.2)
34
+ rspec-mocks (2.0.0.beta.19)
16
35
  rubyforge (2.0.4)
17
36
  json_pure (>= 1.1.7)
37
+ tzinfo (0.3.22)
18
38
 
19
39
  PLATFORMS
20
40
  ruby
21
41
 
22
42
  DEPENDENCIES
23
- activerecord (< 3.0.0)
43
+ activerecord (>= 3.0.0.rc)
24
44
  jeweler
25
45
  rake
26
- rspec
46
+ rspec (>= 2.0.0.beta.17)
data/Rakefile CHANGED
@@ -2,13 +2,10 @@ require 'bundler'
2
2
  Bundler.setup
3
3
 
4
4
  require 'rake'
5
- require 'spec/rake/spectask'
5
+ require 'rspec/mocks/version'
6
+ require 'rspec/core/rake_task'
6
7
 
7
- desc 'Run specs.'
8
- Spec::Rake::SpecTask.new('spec') do |t|
9
- t.spec_files = FileList['spec/**/*_spec.rb']
10
- t.spec_opts = ["-c"]
11
- end
8
+ RSpec::Core::RakeTask.new(:spec)
12
9
 
13
10
  desc 'Default: run specs.'
14
11
  task :default => :spec
@@ -22,7 +19,7 @@ begin
22
19
  gemspec.email = "dimitrij@blacksquaremedia.com"
23
20
  gemspec.homepage = "http://github.com/dim/serialization_scopes"
24
21
  gemspec.authors = ["Dimitrij Denissenko"]
25
- gemspec.add_runtime_dependency "activerecord", ">= 2.3.0", '< 3.0.0'
22
+ gemspec.add_runtime_dependency "activerecord", "> 2.5.0"
26
23
  end
27
24
  Jeweler::GemcutterTasks.new
28
25
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{serialization_scopes}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dimitrij Denissenko"]
@@ -23,8 +23,6 @@ Gem::Specification.new do |s|
23
23
  "Rakefile",
24
24
  "VERSION",
25
25
  "lib/serialization_scopes.rb",
26
- "lib/serialization_scopes/matchers.rb",
27
- "lib/serialization_scopes/matchers/serialize_matcher.rb",
28
26
  "rails/init.rb",
29
27
  "serialization_scopes.gemspec",
30
28
  "spec/helper.rb",
@@ -45,12 +43,12 @@ Gem::Specification.new do |s|
45
43
  s.specification_version = 3
46
44
 
47
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
- s.add_runtime_dependency(%q<activerecord>, [">= 2.3.0", "< 3.0.0"])
46
+ s.add_runtime_dependency(%q<activerecord>, ["> 2.5.0"])
49
47
  else
50
- s.add_dependency(%q<activerecord>, [">= 2.3.0", "< 3.0.0"])
48
+ s.add_dependency(%q<activerecord>, ["> 2.5.0"])
51
49
  end
52
50
  else
53
- s.add_dependency(%q<activerecord>, [">= 2.3.0", "< 3.0.0"])
51
+ s.add_dependency(%q<activerecord>, ["> 2.5.0"])
54
52
  end
55
53
  end
56
54
 
data/spec/helper.rb CHANGED
@@ -1,12 +1,26 @@
1
1
  ENV["RAILS_ENV"] ||= 'test'
2
- $: << File.join(File.dirname(__FILE__),'..', 'lib')
2
+ $:.unshift File.dirname(__FILE__)
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
3
4
 
4
5
  require 'rubygems'
5
- require 'active_record'
6
6
 
7
- require File.join(File.dirname(__FILE__),'..', 'rails', 'init.rb')
8
- require 'spec/autorun'
9
- require 'spec/mocks'
7
+ # Set up gems listed in the Gemfile.
8
+ gemfile = File.expand_path('../../Gemfile', __FILE__)
9
+ begin
10
+ require 'bundler'
11
+ Bundler.setup
12
+ rescue Bundler::GemNotFound => e
13
+ STDERR.puts e.message
14
+ STDERR.puts "Try running `bundle install`."
15
+ exit!
16
+ end
17
+
18
+ require 'active_record'
19
+ require 'serialization_scopes'
20
+ require 'rspec'
10
21
 
11
- ActiveRecord::Base.stub(:establish_connection)
22
+ RSpec.configure do |c|
23
+ c.mock_with :rspec
24
+ end
12
25
 
26
+ ActiveRecord::Base.include_root_in_json = false
@@ -2,9 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
 
3
3
  describe SerializationScopes do
4
4
 
5
+ before do
6
+ ActiveRecord::Base.stub!(:establish_connection)
7
+ end
8
+
5
9
  class SomeModel < ActiveRecord::Base
6
10
  serialization_scope :default, :only => [:id, :name], :methods => :currency
7
11
  serialization_scope :admin, :only => [:id, :secret]
12
+ after_initialize :set_defaults
8
13
 
9
14
  def self.columns
10
15
  @columns ||= [
@@ -14,7 +19,7 @@ describe SerializationScopes do
14
19
  ]
15
20
  end
16
21
 
17
- def after_initialize
22
+ def set_defaults
18
23
  self.id = 1
19
24
  self.name = 'Any'
20
25
  self.secret = 'key'
@@ -28,8 +33,8 @@ describe SerializationScopes do
28
33
  it 'should constraint to_xml' do
29
34
  SomeModel.new.to_xml.should == %(<?xml version="1.0" encoding="UTF-8"?>
30
35
  <some-model>
31
- <id type="integer">1</id>
32
36
  <name>Any</name>
37
+ <id type="integer">1</id>
33
38
  <currency>USD</currency>
34
39
  </some-model>
35
40
  )
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serialization_scopes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dimitrij Denissenko
@@ -22,22 +22,14 @@ dependencies:
22
22
  version_requirements: &id001 !ruby/object:Gem::Requirement
23
23
  none: false
24
24
  requirements:
25
- - - ">="
25
+ - - ">"
26
26
  - !ruby/object:Gem::Version
27
- hash: 3
27
+ hash: 27
28
28
  segments:
29
29
  - 2
30
- - 3
31
- - 0
32
- version: 2.3.0
33
- - - <
34
- - !ruby/object:Gem::Version
35
- hash: 7
36
- segments:
37
- - 3
38
- - 0
30
+ - 5
39
31
  - 0
40
- version: 3.0.0
32
+ version: 2.5.0
41
33
  requirement: *id001
42
34
  prerelease: false
43
35
  type: :runtime
@@ -58,8 +50,6 @@ files:
58
50
  - Rakefile
59
51
  - VERSION
60
52
  - lib/serialization_scopes.rb
61
- - lib/serialization_scopes/matchers.rb
62
- - lib/serialization_scopes/matchers/serialize_matcher.rb
63
53
  - rails/init.rb
64
54
  - serialization_scopes.gemspec
65
55
  - spec/helper.rb
@@ -1,99 +0,0 @@
1
- module SerializationScopes # :nodoc:
2
- module Shoulda # :nodoc:
3
- module Matchers
4
-
5
- # Ensures that records are serialized correctly
6
- #
7
- # Example:
8
- # describe Article do
9
- # it { should serialize }
10
- # it { should serialize.to(:article) }
11
- # it { should serialize.to(:article).with_attributes(6) }
12
- # it { should serialize.for(:reader).to(:article).with_attributes(4) }
13
- # end
14
- def serialize
15
- SerializeMatcher.new
16
- end
17
-
18
- class SerializeMatcher
19
-
20
- def for(scope)
21
- @scope = scope
22
- self
23
- end
24
-
25
- def to(value)
26
- @to = value
27
- self
28
- end
29
-
30
- def with_attributes(count)
31
- @count = count
32
- self
33
- end
34
-
35
- def matches?(subject)
36
- @subject = subject
37
- @subject.id ||= rand(10000000)
38
- correct_root? && correct_column_count?
39
- end
40
-
41
- attr_reader :failure_message, :negative_failure_message
42
-
43
- def description
44
- result = "serialize"
45
- result << " with #{@scope.inspect} scope" unless @scope.nil?
46
- result << " to #{@to.inspect}" unless @to.nil?
47
- result << " with #{@count} attributes" unless @count.nil?
48
- result
49
- end
50
-
51
- def failure_message
52
- "Expected #{expectation}"
53
- end
54
-
55
- def negative_failure_message
56
- "Did not expect #{expectation}"
57
- end
58
-
59
- private
60
-
61
- def root_name
62
- serialized.keys.first
63
- end
64
-
65
- def attributes
66
- serialized[root_name] ? serialized[root_name].keys : []
67
- end
68
-
69
- def serialized
70
- @serialized ||= ActiveSupport::JSON.decode(@subject.to_json(:scope => @scope))
71
- end
72
-
73
- def expectation
74
- result = "to #{description}"
75
- result << ", but #{failure_description}"
76
- result
77
- end
78
-
79
- def correct_root?
80
- @to.nil? || @to == root_name
81
- end
82
-
83
- def correct_column_count?
84
- @count.nil? || @count == attributes.size
85
- end
86
-
87
- def failure_description
88
- if !correct_root?
89
- "root was #{root_name.inspect}"
90
- elsif !correct_column_count?
91
- "#{attributes.size} attributes were created (#{attributes.map(&:to_s).sort.join(', ')})"
92
- end
93
- end
94
-
95
- end
96
-
97
- end
98
- end
99
- end
@@ -1,8 +0,0 @@
1
- require 'serialization_scopes/matchers/serialize_matcher'
2
-
3
- module SerializationScopes
4
- module Shoulda
5
- module Matchers
6
- end
7
- end
8
- end