property_sets 2.3.0 → 2.4.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e4e1f51f9567dd18fa291875731e3a41c9772461
4
+ data.tar.gz: e97629c249e9dd6632892f377b55d551587e1dbb
5
+ SHA512:
6
+ metadata.gz: 754e8fe910199e3e80a80bfd138c69b2c1dcc81b744095fd1f091442df5ee186bda98c3c57f8de8a485172e2bc2d8a338509af34662e775f8d4fe8cd6710b5bc
7
+ data.tar.gz: eb122494452754f9f09b1826fbf653c7eafa730232cda1db6a3462db828d0a0830277396ad38d61e50e5233c37b05f18b6aa5e272f011b38c2b5f0d7bf1b3eee
@@ -2,17 +2,17 @@ rvm:
2
2
  - ree
3
3
  - 1.9.3
4
4
  - 2.0.0
5
+ - 2.1.0
5
6
  - jruby
6
7
  script: "bundle exec rake test"
7
8
  gemfile:
8
9
  - gemfiles/rails2.3.gemfile
9
- - gemfiles/rails3.0.gemfile
10
10
  - gemfiles/rails3.2.gemfile
11
11
  matrix:
12
12
  exclude:
13
13
  - rvm: 2.0.0
14
14
  gemfile: gemfiles/rails2.3.gemfile
15
- - rvm: 2.0.0
16
- gemfile: gemfiles/rails3.0.gemfile
15
+ - rvm: 2.1.0
16
+ gemfile: gemfiles/rails2.3.gemfile
17
17
  - rvm: ree
18
18
  gemfile: gemfiles/rails3.2.gemfile
data/Appraisals CHANGED
@@ -8,14 +8,6 @@ appraise "rails2.3" do
8
8
  gem "test-unit", "< 2.5.5"
9
9
  end
10
10
 
11
- appraise "rails3.0" do
12
- gem "activerecord", "~> 3.0.15"
13
- gem "activesupport", "~> 3.0.15"
14
- gem "shoulda", "~> 2.11"
15
- gem "mysql2", "~> 0.2.0", :platforms => :ruby
16
- gem "activerecord-mysql2-adapter", :platforms => :ruby
17
- end
18
-
19
11
  appraise "rails3.2" do
20
12
  gem "activerecord", "~> 3.2.6"
21
13
  gem "activesupport", "~> 3.2.6"
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'activerecord-jdbcmysql-adapter', '1.2.2', :platforms => :jruby
4
4
  gem 'mysql2', :platforms => :ruby
5
5
 
6
+ gem 'bump'
6
7
  gem 'rake'
7
8
  gem 'bundler'
8
9
  gem 'shoulda'
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
+ require 'bundler/setup'
1
2
  require 'bundler/gem_tasks'
2
3
  require 'appraisal'
4
+ require 'bump/tasks'
3
5
 
4
6
  require 'rake/testtask'
5
7
  Rake::TestTask.new do |test|
@@ -0,0 +1,45 @@
1
+ module PropertySets
2
+ module Delegator
3
+ # methods for moving what was once a literal column on
4
+ # to a property_set table.
5
+ #
6
+ # delegates read, write and query methods to the property record or the property default
7
+ #
8
+ # Examples
9
+ #
10
+ # # Migrate :is_open to the :settings property set, and rename it :open,
11
+ # # and migrate :same to property set :same
12
+ # include PropertySets::Delegator
13
+ # delegate_to_property_set :settings, :is_open => :open, :same => :same
14
+ #
15
+ def self.included(base)
16
+ base.extend(ClassMethods)
17
+ end
18
+
19
+ module ClassMethods
20
+ def delegate_to_property_set(setname, mappings)
21
+ raise "Second argument must be a Hash" unless mappings.is_a?(Hash)
22
+
23
+ mappings.each do |old_attr, new_attr|
24
+ define_method(old_attr) { send(setname).send(new_attr) }
25
+ alias_method "#{old_attr}_before_type_cast", old_attr
26
+ define_method("#{old_attr}?") { send(setname).send("#{new_attr}?") }
27
+ define_method("#{old_attr}=") { |value| send(setname).send("#{new_attr}=", value) }
28
+
29
+ define_method("#{old_attr}_changed?") do
30
+ assoc = send(setname)
31
+ setting = assoc.lookup_without_default(new_attr)
32
+
33
+ if !setting
34
+ false # Nothing has been set which means that the attribute hasn't changed
35
+ elsif setting.new_record?
36
+ assoc.default(new_attr) != setting.value
37
+ else
38
+ setting.value_changed?
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,3 +1,3 @@
1
1
  module PropertySets
2
- VERSION = "2.3.0"
2
+ VERSION = "2.4.0"
3
3
  end
@@ -5,7 +5,7 @@ Bundler.setup
5
5
  require 'test/unit'
6
6
 
7
7
  begin
8
- require 'mocha/setup'
8
+ require 'mocha/setup' # Rails 2
9
9
  rescue LoadError
10
10
  require 'mocha'
11
11
  end
@@ -24,10 +24,13 @@ if ActiveRecord::VERSION::MAJOR > 2 && ActiveRecord::VERSION::MAJOR < 4
24
24
  ActiveRecord::Base.attr_accessible
25
25
  end
26
26
 
27
+ I18n.enforce_available_locales = false if ActiveRecord::VERSION::MAJOR > 2
28
+
27
29
  require File.expand_path "../database", __FILE__
28
30
 
29
31
  $LOAD_PATH.unshift(File.dirname(__FILE__))
30
32
  require 'property_sets'
33
+ require 'property_sets/delegator'
31
34
 
32
35
  class ActiveSupport::TestCase
33
36
  include ActiveRecord::TestFixtures
@@ -54,6 +57,9 @@ class ActsLikeAnInteger
54
57
  end
55
58
 
56
59
  class Account < ActiveRecord::Base
60
+ include PropertySets::Delegator
61
+ delegate_to_property_set :settings, :old => :hep
62
+
57
63
  if ActiveRecord::VERSION::MAJOR < 4
58
64
  attr_accessible :name
59
65
  attr_accessible :texts_attributes
@@ -0,0 +1,78 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ class TestDelegator < ActiveSupport::TestCase
4
+ context PropertySets::Delegator do
5
+ fixtures :accounts, :account_settings, :account_texts
6
+
7
+ setup do
8
+ @account = Account.create(:name => "Name")
9
+ @default = 'skep'
10
+ end
11
+
12
+ context "read" do
13
+ should "not add a property" do
14
+ @account.old
15
+ assert_equal 0, @account.settings.size
16
+ end
17
+
18
+ should "delegate read to default" do
19
+ assert_equal @default, @account.old
20
+ end
21
+
22
+ should "delegate read to property value" do
23
+ @account.settings.hep = 'new'
24
+ assert_equal 'new', @account.old
25
+ end
26
+ end
27
+
28
+ context "write" do
29
+ should "add a property" do
30
+ @account.old = 'new'
31
+ assert_equal 1, @account.settings.size
32
+ end
33
+
34
+ should "delegate write" do
35
+ @account.old = 'new'
36
+ assert_equal 'new', @account.settings.hep
37
+ assert_equal 'new', @account.old
38
+ end
39
+ end
40
+
41
+ context "changed?" do
42
+ should "not add a property" do
43
+ @account.old_changed?
44
+ assert_equal 0, @account.settings.size
45
+ end
46
+
47
+ should "not be changed" do
48
+ assert_equal false, @account.old_changed?
49
+ end
50
+
51
+ should "be changed with new value" do
52
+ @account.old = "new"
53
+ assert_equal true, @account.old_changed?
54
+ end
55
+
56
+ should "not be changed with default value" do
57
+ @account.old = @default
58
+ assert_equal false, @account.old_changed?
59
+ end
60
+ end
61
+
62
+ context "before_type_case" do
63
+ should "not add a property" do
64
+ @account.old_before_type_cast
65
+ assert_equal 0, @account.settings.size
66
+ end
67
+
68
+ should "return default" do
69
+ assert_equal @default, @account.old_before_type_cast
70
+ end
71
+
72
+ should "return setting" do
73
+ @account.old = "new"
74
+ assert_equal "new", @account.old_before_type_cast
75
+ end
76
+ end
77
+ end
78
+ end
metadata CHANGED
@@ -1,22 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: property_sets
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
5
- prerelease:
4
+ version: 2.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Morten Primdahl
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-02 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 2.3.14
22
20
  - - <
@@ -25,9 +23,8 @@ dependencies:
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - '>='
31
28
  - !ruby/object:Gem::Version
32
29
  version: 2.3.14
33
30
  - - <
@@ -36,9 +33,8 @@ dependencies:
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: activerecord
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ! '>='
37
+ - - '>='
42
38
  - !ruby/object:Gem::Version
43
39
  version: 2.3.14
44
40
  - - <
@@ -47,9 +43,8 @@ dependencies:
47
43
  type: :runtime
48
44
  prerelease: false
49
45
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
- - - ! '>='
47
+ - - '>='
53
48
  - !ruby/object:Gem::Version
54
49
  version: 2.3.14
55
50
  - - <
@@ -58,17 +53,15 @@ dependencies:
58
53
  - !ruby/object:Gem::Dependency
59
54
  name: json
60
55
  requirement: !ruby/object:Gem::Requirement
61
- none: false
62
56
  requirements:
63
- - - ! '>='
57
+ - - '>='
64
58
  - !ruby/object:Gem::Version
65
59
  version: '0'
66
60
  type: :runtime
67
61
  prerelease: false
68
62
  version_requirements: !ruby/object:Gem::Requirement
69
- none: false
70
63
  requirements:
71
- - - ! '>='
64
+ - - '>='
72
65
  - !ruby/object:Gem::Version
73
66
  version: '0'
74
67
  description: This gem is an ActiveRecord extension which provides a convenient interface
@@ -88,12 +81,12 @@ files:
88
81
  - Rakefile
89
82
  - benchmark/read.rb
90
83
  - gemfiles/rails2.3.gemfile
91
- - gemfiles/rails3.0.gemfile
92
84
  - gemfiles/rails3.2.gemfile
93
85
  - lib/property_sets.rb
94
86
  - lib/property_sets/action_view_extension.rb
95
87
  - lib/property_sets/active_record_extension.rb
96
88
  - lib/property_sets/casting.rb
89
+ - lib/property_sets/delegator.rb
97
90
  - lib/property_sets/property_set_model.rb
98
91
  - lib/property_sets/version.rb
99
92
  - property_sets.gemspec
@@ -103,32 +96,31 @@ files:
103
96
  - test/fixtures/accounts.yml
104
97
  - test/helper.rb
105
98
  - test/test_casting.rb
99
+ - test/test_delegator.rb
106
100
  - test/test_property_sets.rb
107
101
  - test/test_view_extensions.rb
108
102
  homepage: http://github.com/zendesk/property_sets
109
103
  licenses:
110
104
  - MIT
105
+ metadata: {}
111
106
  post_install_message:
112
107
  rdoc_options: []
113
108
  require_paths:
114
109
  - lib
115
110
  required_ruby_version: !ruby/object:Gem::Requirement
116
- none: false
117
111
  requirements:
118
- - - ! '>='
112
+ - - '>='
119
113
  - !ruby/object:Gem::Version
120
114
  version: '0'
121
115
  required_rubygems_version: !ruby/object:Gem::Requirement
122
- none: false
123
116
  requirements:
124
- - - ! '>='
117
+ - - '>='
125
118
  - !ruby/object:Gem::Version
126
119
  version: '0'
127
120
  requirements: []
128
121
  rubyforge_project:
129
- rubygems_version: 1.8.23
122
+ rubygems_version: 2.0.14
130
123
  signing_key:
131
- specification_version: 3
124
+ specification_version: 4
132
125
  summary: Property sets for ActiveRecord.
133
126
  test_files: []
134
- has_rdoc:
@@ -1,19 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord-jdbcmysql-adapter", "1.2.2", :platforms=>:jruby
6
- gem "rake"
7
- gem "bundler"
8
- gem "mocha"
9
- gem "appraisal"
10
- gem "test-unit", ">= 2.5.2"
11
- gem "actionpack", ">= 2.3.14", "< 3.3"
12
- gem "iconv", :platforms=>:ruby_20
13
- gem "activerecord", "~> 3.0.15"
14
- gem "activesupport", "~> 3.0.15"
15
- gem "shoulda", "~> 2.11"
16
- gem "mysql2", "~> 0.2.0", :platforms=>:ruby
17
- gem "activerecord-mysql2-adapter", :platforms=>:ruby
18
-
19
- gemspec :path=>"../"