hstore-document 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6b822aa3298952dc3444dc2c5198d92c7901aae
4
- data.tar.gz: 2e08a5d7627f638ffd4c68d9618075172832f312
3
+ metadata.gz: 89ad567e63bc104409c20552510d962c1613a408
4
+ data.tar.gz: b8508c43a63da84b333424149e7c583e644efecf
5
5
  SHA512:
6
- metadata.gz: eba7709d09faff0caf967936a1be26ed47c6e5a2e937d1d500b79144555f7f58926cb3f4711dbc33e476cbe399ea273e813c756c9c7aa1990f23554d8ed35290
7
- data.tar.gz: 3206bd0eaaa2fbc5d957191247fef144e4e5f8d5078e1c73d3256214ec21beb97130a28964b93eaedb4e10418c23927e2fa5168748aa695d8282a61290f2a712
6
+ metadata.gz: 16f62b9048333f3a2ee7ab44637f2cc288193ed39cb47237155cc81bc4f623200b01383cf928424f82e460a456efa66519e8eae7f3755f37824dffc744213620
7
+ data.tar.gz: a9f276b5469cb1dd00bdba0a4fec7b8945fadcf9a8bdb7c29f3579bb1f00abb0d9735907503418e6c2eff55c2f7b91610b6c1128ad8d73a1a47d4a0505566ddc
data/Gemfile CHANGED
@@ -6,16 +6,15 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", "~> 2.14"
10
- gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.0"
12
- gem "jeweler", "~> 1.8.7"
13
- gem "pry"
14
- gem "pry-debugger"
9
+ gem "rspec"
10
+ gem "rdoc"
11
+ gem "bundler"
12
+ gem "jeweler"
13
+ gem "pry-byebug"
15
14
  gem "guard"
16
15
  gem "guard-rspec"
17
16
  end
18
17
 
19
18
  gem 'pg'
20
19
  gem 'pg-hstore'
21
- gem 'activerecord', '>=3.2', '<4.1'
20
+ gem 'activerecord', '>=3.2', '<5'
@@ -1,137 +1,137 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.0.4)
5
- activesupport (= 4.0.4)
6
- builder (~> 3.1.0)
7
- activerecord (4.0.4)
8
- activemodel (= 4.0.4)
9
- activerecord-deprecated_finders (~> 1.0.2)
10
- activesupport (= 4.0.4)
11
- arel (~> 4.0.0)
12
- activerecord-deprecated_finders (1.0.3)
13
- activesupport (4.0.4)
4
+ activemodel (4.1.6)
5
+ activesupport (= 4.1.6)
6
+ builder (~> 3.1)
7
+ activerecord (4.1.6)
8
+ activemodel (= 4.1.6)
9
+ activesupport (= 4.1.6)
10
+ arel (~> 5.0.0)
11
+ activesupport (4.1.6)
14
12
  i18n (~> 0.6, >= 0.6.9)
15
- minitest (~> 4.2)
16
- multi_json (~> 1.3)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
17
15
  thread_safe (~> 0.1)
18
- tzinfo (~> 0.3.37)
16
+ tzinfo (~> 1.1)
19
17
  addressable (2.3.6)
20
- arel (4.0.2)
21
- atomic (1.1.16)
22
- builder (3.1.4)
23
- celluloid (0.15.2)
24
- timers (~> 1.1.0)
25
- celluloid-io (0.15.0)
26
- celluloid (>= 0.15.0)
27
- nio4r (>= 0.5.0)
18
+ arel (5.0.1.20140414130214)
19
+ builder (3.2.2)
20
+ byebug (3.4.1)
21
+ columnize (~> 0.8)
22
+ debugger-linecache (~> 1.2)
23
+ slop (~> 3.6)
24
+ celluloid (0.16.0)
25
+ timers (~> 4.0.0)
28
26
  coderay (1.1.0)
29
- columnize (0.3.6)
30
- debugger (1.6.6)
31
- columnize (>= 0.3.1)
32
- debugger-linecache (~> 1.2.0)
33
- debugger-ruby_core_source (~> 1.3.2)
27
+ columnize (0.8.9)
34
28
  debugger-linecache (1.2.0)
35
- debugger-ruby_core_source (1.3.2)
29
+ descendants_tracker (0.0.4)
30
+ thread_safe (~> 0.3, >= 0.3.1)
36
31
  diff-lcs (1.2.5)
37
- faraday (0.8.9)
38
- multipart-post (~> 1.2.0)
39
- ffi (1.9.3)
40
- formatador (0.2.4)
41
- git (1.2.6)
42
- github_api (0.10.1)
43
- addressable
44
- faraday (~> 0.8.1)
45
- hashie (>= 1.2)
46
- multi_json (~> 1.4)
47
- nokogiri (~> 1.5.2)
32
+ faraday (0.9.0)
33
+ multipart-post (>= 1.2, < 3)
34
+ ffi (1.9.5)
35
+ formatador (0.2.5)
36
+ git (1.2.8)
37
+ github_api (0.12.1)
38
+ addressable (~> 2.3)
39
+ descendants_tracker (~> 0.0.4)
40
+ faraday (~> 0.8, < 0.10)
41
+ hashie (>= 3.2)
42
+ multi_json (>= 1.7.5, < 2.0)
43
+ nokogiri (~> 1.6.3)
48
44
  oauth2
49
- guard (2.6.0)
45
+ guard (2.6.1)
50
46
  formatador (>= 0.2.4)
51
47
  listen (~> 2.7)
52
48
  lumberjack (~> 1.0)
53
49
  pry (>= 0.9.12)
54
50
  thor (>= 0.18.1)
55
- guard-rspec (4.2.8)
51
+ guard-rspec (4.3.1)
56
52
  guard (~> 2.1)
57
53
  rspec (>= 2.14, < 4.0)
58
- hashie (2.0.5)
54
+ hashie (3.3.1)
59
55
  highline (1.6.21)
60
- i18n (0.6.9)
61
- jeweler (1.8.8)
56
+ hitimes (1.2.2)
57
+ i18n (0.6.11)
58
+ jeweler (2.0.1)
62
59
  builder
63
- bundler (~> 1.0)
60
+ bundler (>= 1.0)
64
61
  git (>= 1.2.5)
65
- github_api (= 0.10.1)
62
+ github_api
66
63
  highline (>= 1.6.15)
67
- nokogiri (= 1.5.10)
64
+ nokogiri (>= 1.5.10)
68
65
  rake
69
66
  rdoc
70
67
  json (1.8.1)
71
- jwt (0.1.11)
72
- multi_json (>= 1.5)
73
- listen (2.7.1)
68
+ jwt (1.0.0)
69
+ listen (2.7.9)
74
70
  celluloid (>= 0.15.2)
75
- celluloid-io (>= 0.15.0)
76
71
  rb-fsevent (>= 0.9.3)
77
72
  rb-inotify (>= 0.9)
78
- lumberjack (1.0.5)
73
+ lumberjack (1.0.9)
79
74
  method_source (0.8.2)
80
- minitest (4.7.5)
81
- multi_json (1.9.2)
75
+ mini_portile (0.6.0)
76
+ minitest (5.4.1)
77
+ multi_json (1.10.1)
82
78
  multi_xml (0.5.5)
83
- multipart-post (1.2.0)
84
- nio4r (1.0.0)
85
- nokogiri (1.5.10)
86
- oauth2 (0.9.3)
79
+ multipart-post (2.0.0)
80
+ nokogiri (1.6.3.1)
81
+ mini_portile (= 0.6.0)
82
+ oauth2 (1.0.0)
87
83
  faraday (>= 0.8, < 0.10)
88
- jwt (~> 0.1.8)
84
+ jwt (~> 1.0)
89
85
  multi_json (~> 1.3)
90
86
  multi_xml (~> 0.5)
91
87
  rack (~> 1.2)
92
88
  pg (0.17.1)
93
89
  pg-hstore (1.2.0)
94
- pry (0.9.12.6)
95
- coderay (~> 1.0)
96
- method_source (~> 0.8)
90
+ pry (0.10.1)
91
+ coderay (~> 1.1.0)
92
+ method_source (~> 0.8.1)
97
93
  slop (~> 3.4)
98
- pry-debugger (0.2.2)
99
- debugger (~> 1.3)
100
- pry (~> 0.9.10)
94
+ pry-byebug (2.0.0)
95
+ byebug (~> 3.4)
96
+ pry (~> 0.10)
101
97
  rack (1.5.2)
102
- rake (10.2.2)
98
+ rake (10.3.2)
103
99
  rb-fsevent (0.9.4)
104
- rb-inotify (0.9.3)
100
+ rb-inotify (0.9.5)
105
101
  ffi (>= 0.5.0)
106
- rdoc (3.12.2)
102
+ rdoc (4.1.2)
107
103
  json (~> 1.4)
108
- rspec (2.14.1)
109
- rspec-core (~> 2.14.0)
110
- rspec-expectations (~> 2.14.0)
111
- rspec-mocks (~> 2.14.0)
112
- rspec-core (2.14.8)
113
- rspec-expectations (2.14.5)
114
- diff-lcs (>= 1.1.3, < 2.0)
115
- rspec-mocks (2.14.6)
116
- slop (3.5.0)
104
+ rspec (3.1.0)
105
+ rspec-core (~> 3.1.0)
106
+ rspec-expectations (~> 3.1.0)
107
+ rspec-mocks (~> 3.1.0)
108
+ rspec-core (3.1.4)
109
+ rspec-support (~> 3.1.0)
110
+ rspec-expectations (3.1.1)
111
+ diff-lcs (>= 1.2.0, < 2.0)
112
+ rspec-support (~> 3.1.0)
113
+ rspec-mocks (3.1.1)
114
+ rspec-support (~> 3.1.0)
115
+ rspec-support (3.1.0)
116
+ slop (3.6.0)
117
117
  thor (0.19.1)
118
- thread_safe (0.3.1)
119
- atomic (>= 1.1.7, < 2)
120
- timers (1.1.0)
121
- tzinfo (0.3.39)
118
+ thread_safe (0.3.4)
119
+ timers (4.0.1)
120
+ hitimes
121
+ tzinfo (1.2.2)
122
+ thread_safe (~> 0.1)
122
123
 
123
124
  PLATFORMS
124
125
  ruby
125
126
 
126
127
  DEPENDENCIES
127
- activerecord (>= 3.2, < 4.1)
128
- bundler (~> 1.0)
128
+ activerecord (>= 3.2, < 5)
129
+ bundler
129
130
  guard
130
131
  guard-rspec
131
- jeweler (~> 1.8.7)
132
+ jeweler
132
133
  pg
133
134
  pg-hstore
134
- pry
135
- pry-debugger
136
- rdoc (~> 3.12)
137
- rspec (~> 2.14)
135
+ pry-byebug
136
+ rdoc
137
+ rspec
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard :rspec do
4
+ guard :rspec, cmd: 'rspec' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
data/README.md CHANGED
@@ -45,7 +45,7 @@ An example is worth a thousand words:
45
45
 
46
46
  ## TODO
47
47
 
48
- * Rails 4.1 support
48
+ * ActiveRecord 5.0 support
49
49
  * Query support, e.g. Person.where('address.street' => 'Elm')
50
50
 
51
51
  ## Contributing to hstore-document
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: hstore-document 0.1.0 ruby lib
5
+ # stub: hstore-document 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "hstore-document"
9
- s.version = "0.1.0"
9
+ s.version = "0.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Roman Shterenzon"]
14
- s.date = "2014-04-22"
14
+ s.date = "2014-09-26"
15
15
  s.description = "Allows embedding documents in ActiveRecord models using PostgreSQL HStore"
16
16
  s.email = "roman.shterenzon@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -52,38 +52,35 @@ Gem::Specification.new do |s|
52
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_runtime_dependency(%q<pg>, [">= 0"])
54
54
  s.add_runtime_dependency(%q<pg-hstore>, [">= 0"])
55
- s.add_runtime_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
56
- s.add_development_dependency(%q<rspec>, ["~> 2.14"])
57
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
58
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
59
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
60
- s.add_development_dependency(%q<pry>, [">= 0"])
61
- s.add_development_dependency(%q<pry-debugger>, [">= 0"])
55
+ s.add_runtime_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
56
+ s.add_development_dependency(%q<rspec>, [">= 0"])
57
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
58
+ s.add_development_dependency(%q<bundler>, [">= 0"])
59
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_development_dependency(%q<pry-byebug>, [">= 0"])
62
61
  s.add_development_dependency(%q<guard>, [">= 0"])
63
62
  s.add_development_dependency(%q<guard-rspec>, [">= 0"])
64
63
  else
65
64
  s.add_dependency(%q<pg>, [">= 0"])
66
65
  s.add_dependency(%q<pg-hstore>, [">= 0"])
67
- s.add_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
68
- s.add_dependency(%q<rspec>, ["~> 2.14"])
69
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
70
- s.add_dependency(%q<bundler>, ["~> 1.0"])
71
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
72
- s.add_dependency(%q<pry>, [">= 0"])
73
- s.add_dependency(%q<pry-debugger>, [">= 0"])
66
+ s.add_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
67
+ s.add_dependency(%q<rspec>, [">= 0"])
68
+ s.add_dependency(%q<rdoc>, [">= 0"])
69
+ s.add_dependency(%q<bundler>, [">= 0"])
70
+ s.add_dependency(%q<jeweler>, [">= 0"])
71
+ s.add_dependency(%q<pry-byebug>, [">= 0"])
74
72
  s.add_dependency(%q<guard>, [">= 0"])
75
73
  s.add_dependency(%q<guard-rspec>, [">= 0"])
76
74
  end
77
75
  else
78
76
  s.add_dependency(%q<pg>, [">= 0"])
79
77
  s.add_dependency(%q<pg-hstore>, [">= 0"])
80
- s.add_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
81
- s.add_dependency(%q<rspec>, ["~> 2.14"])
82
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
83
- s.add_dependency(%q<bundler>, ["~> 1.0"])
84
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
85
- s.add_dependency(%q<pry>, [">= 0"])
86
- s.add_dependency(%q<pry-debugger>, [">= 0"])
78
+ s.add_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
79
+ s.add_dependency(%q<rspec>, [">= 0"])
80
+ s.add_dependency(%q<rdoc>, [">= 0"])
81
+ s.add_dependency(%q<bundler>, [">= 0"])
82
+ s.add_dependency(%q<jeweler>, [">= 0"])
83
+ s.add_dependency(%q<pry-byebug>, [">= 0"])
87
84
  s.add_dependency(%q<guard>, [">= 0"])
88
85
  s.add_dependency(%q<guard-rspec>, [">= 0"])
89
86
  end
@@ -12,6 +12,10 @@ module ActiveRecord
12
12
  def macro
13
13
  :embeds_one
14
14
  end
15
+
16
+ def valid_options
17
+ super + [:class_name]
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -2,17 +2,32 @@ require 'active_record/associations/association'
2
2
 
3
3
  module ActiveRecord
4
4
  module Associations
5
- module ClassMethods
6
- # @param [Symbol, String] name of association
7
- # @param [Hash] options
8
- # @option options [Boolean] :validate Validate associaited object (default: true)
9
- # @option options [String] :class_name Name of the associated class
10
- def embeds(name, options = {})
11
- validates_associated(name) unless options.delete(:validate) == false
12
- if ActiveRecord::VERSION::MAJOR < 4
13
- Builder::EmbedsOne.build(self, name, options)
14
- else
15
- Builder::EmbedsOne.build(self, name, options, nil)
5
+ if ActiveRecord::VERSION::STRING >= '4.1'
6
+ module ClassMethods
7
+ # @param [Symbol, String] name of association
8
+ # @param scope
9
+ # @param [Hash] options
10
+ # @option options [Boolean] :validate Validate associaited object (default: true)
11
+ # @option options [String] :class_name Name of the associated class
12
+ def embeds(name, scope = nil, options = {}, &extension)
13
+ validates_associated(name) unless options.delete(:validate) == false
14
+ reflection = Builder::EmbedsOne.build(self, name, options, nil)
15
+ Reflection.add_reflection self, name, reflection
16
+ end
17
+ end
18
+ else
19
+ module ClassMethods
20
+ # @param [Symbol, String] name of association
21
+ # @param [Hash] options
22
+ # @option options [Boolean] :validate Validate associaited object (default: true)
23
+ # @option options [String] :class_name Name of the associated class
24
+ def embeds(name, options = {})
25
+ validates_associated(name) unless options.delete(:validate) == false
26
+ if ActiveRecord::VERSION::MAJOR < 4
27
+ Builder::EmbedsOne.build(self, name, options)
28
+ else
29
+ Builder::EmbedsOne.build(self, name, options, nil)
30
+ end
16
31
  end
17
32
  end
18
33
  end
@@ -3,38 +3,71 @@ require 'active_record/reflection'
3
3
 
4
4
  module ActiveRecord
5
5
  module Reflection
6
- class AssociationReflection # :nodoc:
7
- def association_class_with_embeds_one
8
- if macro == :embeds_one
9
- Associations::EmbedsOneAssociation
10
- else
11
- association_class_without_embeds_one
6
+ if ActiveRecord::VERSION::STRING >= '4.1'
7
+ class EmbedsOneReflection < AssociationReflection # :nodoc:
8
+ def initialize(name, scope, options, active_record)
9
+ super(macro, name, scope, options, active_record)
10
+ end
11
+
12
+ def macro; :embeds_one; end
13
+
14
+ def embeds_one?; true; end
15
+
16
+ def association_class_with_embeds_one
17
+ if macro == :embeds_one
18
+ Associations::EmbedsOneAssociation
19
+ else
20
+ association_class_without_embeds_one
21
+ end
12
22
  end
23
+
24
+ alias_method_chain :association_class, :embeds_one
13
25
  end
14
- alias_method_chain :association_class, :embeds_one
15
- end
16
26
 
17
- module ClassMethods # :nodoc:
18
- if ActiveRecord::VERSION::MAJOR < 4
19
- def create_reflection_with_embeds(macro, name, options, active_record)
27
+ class << self
28
+ def create_with_embeds(macro, name, scope, options, active_record)
20
29
  unless macro == :embeds_one
21
- return create_reflection_without_embeds(macro, name, options, active_record)
30
+ return create_without_embeds(macro, name, scope, options, active_record)
22
31
  end
23
- AssociationReflection.new(macro, name, options, active_record).tap do |reflection|
24
- reflections.merge!(name => reflection)
32
+ EmbedsOneReflection.new(name, scope, options, active_record)
33
+ end
34
+
35
+ alias_method_chain :create, :embeds
36
+ end
37
+ else
38
+ class AssociationReflection # :nodoc:
39
+ def association_class_with_embeds_one
40
+ if macro == :embeds_one
41
+ Associations::EmbedsOneAssociation
42
+ else
43
+ association_class_without_embeds_one
25
44
  end
26
45
  end
27
- else
28
- def create_reflection_with_embeds(macro, name, scope, options, active_record)
29
- unless macro == :embeds_one
30
- return create_reflection_without_embeds(macro, name, scope, options, active_record)
46
+ alias_method_chain :association_class, :embeds_one
47
+ end
48
+
49
+ module ClassMethods # :nodoc:
50
+ if ActiveRecord::VERSION::MAJOR < 4
51
+ def create_reflection_with_embeds(macro, name, options, active_record)
52
+ unless macro == :embeds_one
53
+ return create_reflection_without_embeds(macro, name, options, active_record)
54
+ end
55
+ AssociationReflection.new(macro, name, options, active_record).tap do |reflection|
56
+ reflections.merge!(name => reflection)
57
+ end
31
58
  end
32
- AssociationReflection.new(macro, name, scope, options, active_record).tap do |reflection|
33
- reflections.merge!(name => reflection)
59
+ else
60
+ def create_reflection_with_embeds(macro, name, scope, options, active_record)
61
+ unless macro == :embeds_one
62
+ return create_reflection_without_embeds(macro, name, scope, options, active_record)
63
+ end
64
+ AssociationReflection.new(macro, name, scope, options, active_record).tap do |reflection|
65
+ reflections.merge!(name => reflection)
66
+ end
34
67
  end
35
68
  end
69
+ alias_method_chain :create_reflection, :embeds
36
70
  end
37
- alias_method_chain :create_reflection, :embeds
38
71
  end
39
72
  end
40
73
  end
@@ -51,7 +51,7 @@ module Hstore
51
51
  end
52
52
  assign_attributes(attributes.except(self.class.serialized_attributes.keys))
53
53
  else
54
- assign_attributes(attributes)
54
+ assign_attributes(attributes) if attributes
55
55
  end
56
56
  changed_attributes.clear
57
57
  end
@@ -6,15 +6,15 @@ describe Hstore::Document do
6
6
 
7
7
  describe "Instantiation" do
8
8
  it "builds" do
9
- subject.street.should eq('Elm')
10
- subject.number.should eq(13)
9
+ expect(subject.street).to eq('Elm')
10
+ expect(subject.number).to eq(13)
11
11
  end
12
12
 
13
13
  it "has defaults" do
14
14
  address = Address.new
15
- address.street.should eq('unknown')
15
+ expect(address.street).to eq('unknown')
16
16
  address.street = nil
17
- address.street.should be_nil
17
+ expect(address.street).to be_nil
18
18
  end
19
19
  end
20
20
 
@@ -23,13 +23,13 @@ describe Hstore::Document do
23
23
 
24
24
  it "validates" do
25
25
  subject.street = nil
26
- subject.should_not be_valid
27
- subject.errors[:street].should_not be_empty
28
- subject.errors[:number].should_not be_empty
26
+ expect(subject).not_to be_valid
27
+ expect(subject.errors[:street]).not_to be_empty
28
+ expect(subject.errors[:number]).not_to be_empty
29
29
 
30
30
  subject.street = 'Oak'
31
31
  subject.number = 7
32
- subject.should be_valid
32
+ expect(subject).to be_valid
33
33
  end
34
34
  end
35
35
 
@@ -38,7 +38,7 @@ describe Hstore::Document do
38
38
  let(:data) { %{"street"=>"Elm","number"=>"13","business"=>"t"} }
39
39
 
40
40
  it "serializes to json" do
41
- subject.as_json.should eq({
41
+ expect(subject.as_json).to eq({
42
42
  'street' => 'Elm',
43
43
  'number' => 13,
44
44
  'business' => true
@@ -46,9 +46,9 @@ describe Hstore::Document do
46
46
  end
47
47
 
48
48
  it "serializes to hstore" do
49
- subject.to_hstore.should eq(data)
49
+ expect(subject.to_hstore).to eq(data)
50
50
  subject.business = false
51
- subject.to_hstore.should eq(%{"street"=>"Elm","number"=>"13","business"=>"f"})
51
+ expect(subject.to_hstore).to eq(%{"street"=>"Elm","number"=>"13","business"=>"f"})
52
52
  end
53
53
 
54
54
  it "unserializes from hstore" do
@@ -58,10 +58,10 @@ describe Hstore::Document do
58
58
  {"street"=>"Elm","number"=>"13","business"=>"t"}
59
59
  end
60
60
  obj = Address.from_hstore(serialized)
61
- obj.should be_a_kind_of(Address)
62
- obj.street.should eq('Elm')
63
- obj.business.should eq(true)
64
- obj.number.should eq(13)
61
+ expect(obj).to be_a_kind_of(Address)
62
+ expect(obj.street).to eq('Elm')
63
+ expect(obj.business).to eq(true)
64
+ expect(obj.number).to eq(13)
65
65
  end
66
66
 
67
67
  end
@@ -69,11 +69,11 @@ describe Hstore::Document do
69
69
  describe "State change tracking" do
70
70
  subject { Address.new }
71
71
 
72
- it { should_not be_changed }
72
+ it { is_expected.not_to be_changed }
73
73
 
74
74
  it "is changed when attribute is changed" do
75
75
  subject.street = 'Elm'
76
- subject.should be_changed
76
+ expect(subject).to be_changed
77
77
  end
78
78
 
79
79
  it "destroys" do
@@ -12,7 +12,7 @@ describe "Embedded" do
12
12
  describe "Assignment" do
13
13
  it "assigns" do
14
14
  subject.address = address
15
- subject.address.should eq(address)
15
+ expect(subject.address).to eq(address)
16
16
  end
17
17
  end
18
18
 
@@ -20,7 +20,7 @@ describe "Embedded" do
20
20
  subject { Person.create!(address: address) }
21
21
 
22
22
  it "saves" do
23
- subject.reload.address.should eq(address)
23
+ expect(subject.reload.address).to eq(address)
24
24
  end
25
25
  end
26
26
 
@@ -28,24 +28,24 @@ describe "Embedded" do
28
28
  subject { Person.create!(address: address) }
29
29
 
30
30
  it "tracks persisted state" do
31
- subject.reload.address.should be_persisted
31
+ expect(subject.reload.address).to be_persisted
32
32
  end
33
33
 
34
34
  it "tracks destroyed state" do
35
35
  subject.destroy
36
- subject.address.should be_destroyed
36
+ expect(subject.address).to be_destroyed
37
37
  end
38
38
 
39
39
  it "destroys" do
40
40
  subject.address.destroy
41
- subject.should_not be_destroyed
42
- subject.reload.address.should be_nil
41
+ expect(subject).not_to be_destroyed
42
+ expect(subject.reload.address).to be_nil
43
43
  end
44
44
 
45
45
  it "updates" do
46
46
  subject.address.number = 17
47
47
  subject.address.save
48
- subject.reload.address.number.should eq(17)
48
+ expect(subject.reload.address.number).to eq(17)
49
49
  end
50
50
 
51
51
  it "creates" do
@@ -53,7 +53,7 @@ describe "Embedded" do
53
53
  address = Address.new(valid_attributes)
54
54
  person.address = address
55
55
  person.address.save
56
- person.reload.address.should eq(address)
56
+ expect(person.reload.address).to eq(address)
57
57
  end
58
58
 
59
59
  end
@@ -63,18 +63,18 @@ describe "Embedded" do
63
63
 
64
64
  it "assigns" do
65
65
  address = subject.address
66
- address.street.should eq('Birch')
67
- address.number.should eq(1)
68
- address.business.should eq(false)
66
+ expect(address.street).to eq('Birch')
67
+ expect(address.number).to eq(1)
68
+ expect(address.business).to eq(false)
69
69
  end
70
70
 
71
71
  it "saves" do
72
72
  subject.save!
73
73
  subject.reload
74
74
  address = subject.address
75
- address.street.should eq('Birch')
76
- address.number.should eq(1)
77
- address.business.should eq(false)
75
+ expect(address.street).to eq('Birch')
76
+ expect(address.number).to eq(1)
77
+ expect(address.business).to eq(false)
78
78
  end
79
79
  end
80
80
 
@@ -82,20 +82,20 @@ describe "Embedded" do
82
82
 
83
83
  it "builds" do
84
84
  address = subject.build_address(valid_attributes)
85
- address.should be_a_kind_of(Address)
86
- address.number.should eq(1)
85
+ expect(address).to be_a_kind_of(Address)
86
+ expect(address.number).to eq(1)
87
87
  end
88
88
 
89
89
  it "creates" do
90
90
  address = subject.create_address(valid_attributes)
91
- address.should be_a_kind_of(Address)
92
- address.number.should eq(1)
91
+ expect(address).to be_a_kind_of(Address)
92
+ expect(address.number).to eq(1)
93
93
  end
94
94
 
95
95
  it "creates!" do
96
96
  address = subject.create_address!(valid_attributes)
97
- address.should be_a_kind_of(Address)
98
- address.number.should eq(1)
97
+ expect(address).to be_a_kind_of(Address)
98
+ expect(address.number).to eq(1)
99
99
  end
100
100
  end
101
101
 
@@ -104,13 +104,13 @@ describe "Embedded" do
104
104
 
105
105
  context "Invalid" do
106
106
  it "validates associated" do
107
- subject.address.should_not be_valid
108
- subject.should_not be_valid
109
- subject.errors['address'].should_not be_empty
107
+ expect(subject.address).not_to be_valid
108
+ expect(subject).not_to be_valid
109
+ expect(subject.errors['address']).not_to be_empty
110
110
  end
111
111
 
112
112
  it "doesn't save parent when validation fails" do
113
- subject.save.should be_false
113
+ expect(subject.save).to be_falsey
114
114
  end
115
115
  end
116
116
  end
@@ -4,11 +4,16 @@ require 'rspec'
4
4
  require 'active_record'
5
5
  require 'hstore-document'
6
6
  require 'pry'
7
+ if ActiveRecord::VERSION::STRING > '4.1'
8
+ require 'json'
9
+ end
7
10
 
8
11
  # Requires supporting files with custom matchers and macros, etc,
9
12
  # in ./support/ and its subdirectories.
10
13
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
14
 
15
+ I18n.enforce_available_locales = true
16
+
12
17
  RSpec.configure do |config|
13
18
  config.before(:suite) do
14
19
  ActiveRecord::Base.establish_connection({
@@ -16,7 +21,8 @@ RSpec.configure do |config|
16
21
  encoding: 'unicode',
17
22
  database: 'hstore_document',
18
23
  username: 'postgres',
19
- password: 'postgres'
24
+ password: 'postgres',
25
+ host: 'localhost'
20
26
  })
21
27
  # ActiveRecord::Base.logger = Logger.new(STDERR)
22
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstore-document
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Shterenzon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-22 00:00:00.000000000 Z
11
+ date: 2014-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -44,7 +44,7 @@ dependencies:
44
44
  requirements:
45
45
  - - "<"
46
46
  - !ruby/object:Gem::Version
47
- version: '4.1'
47
+ version: '5'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '3.2'
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - "<"
56
56
  - !ruby/object:Gem::Version
57
- version: '4.1'
57
+ version: '5'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '3.2'
@@ -62,60 +62,46 @@ dependencies:
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '2.14'
67
+ version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '2.14'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rdoc
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '3.12'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '3.12'
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: bundler
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '1.0'
95
+ version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '1.0'
102
+ version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: jeweler
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 1.8.7
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 1.8.7
117
- - !ruby/object:Gem::Dependency
118
- name: pry
119
105
  requirement: !ruby/object:Gem::Requirement
120
106
  requirements:
121
107
  - - ">="
@@ -129,7 +115,7 @@ dependencies:
129
115
  - !ruby/object:Gem::Version
130
116
  version: '0'
131
117
  - !ruby/object:Gem::Dependency
132
- name: pry-debugger
118
+ name: pry-byebug
133
119
  requirement: !ruby/object:Gem::Requirement
134
120
  requirements:
135
121
  - - ">="