orm_adapter 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -29,6 +29,9 @@ GEM
29
29
  dm-types (= 1.0.2)
30
30
  dm-validations (= 1.0.2)
31
31
  diff-lcs (1.1.2)
32
+ dm-active_model (1.0.2)
33
+ activemodel (~> 3.0.0)
34
+ dm-core (~> 1.0.2)
32
35
  dm-aggregates (1.0.2)
33
36
  dm-core (~> 1.0.2)
34
37
  dm-constraints (1.0.2)
@@ -106,10 +109,11 @@ PLATFORMS
106
109
  DEPENDENCIES
107
110
  activerecord (~> 3.0.0)
108
111
  datamapper
112
+ dm-active_model
109
113
  dm-sqlite-adapter
110
114
  jeweler
111
115
  mongoid (~> 2.0.0.beta.17)
112
116
  rake
113
- rspec (~> 2.0.0.beta.22)
117
+ rspec (~> 2.0.0.rc)
114
118
  sqlite3-ruby
115
119
  yard
data/History.txt CHANGED
@@ -1,4 +1,12 @@
1
- == master
1
+ == 0.0.3
2
+
3
+ * ActiveRecord's OrmAdapter handles non standard foreign key names [Ian White]
4
+ * fix ruby 1.9.2 problems. [Ian White]
5
+ - removes "can't add a new key into hash during iteration" problem with ActiveRecord OrmAdapter
6
+ - removes problem with rspec 2 mocks interacting with ruby 1.9.2 #to_ary
7
+
8
+
9
+ == 0.0.2
2
10
 
3
11
  * Add #get to the API. Ensure both #get and #get! complies with to_key requirements. [José Valim]
4
12
  * Extract tests into shared example. Give instructions on how to write a new adapter. [Ian White]
@@ -64,14 +64,16 @@ class ActiveRecord::Base
64
64
 
65
65
  # Introspects the klass to convert and objects in conditions into foreign key and type fields
66
66
  def conditions_to_fields(conditions)
67
- conditions = conditions.dup
67
+ fields = {}
68
68
  conditions.each do |key, value|
69
- if value.is_a?(ActiveRecord::Base) && klass.column_names.include?("#{key}_id")
70
- conditions.delete(key)
71
- conditions["#{key}_id"] = value.id
72
- conditions["#{key}_type"] = value.class.base_class.name if klass.column_names.include?("#{key}_type")
69
+ if value.is_a?(ActiveRecord::Base) && (assoc = klass.reflect_on_association(key.to_sym)) && assoc.belongs_to?
70
+ fields[assoc.primary_key_name] = value.send(value.class.primary_key)
71
+ fields[assoc.options[:foreign_type]] = value.class.base_class.name.to_s if assoc.options[:polymorphic]
72
+ else
73
+ fields[key] = value
73
74
  end
74
75
  end
76
+ fields
75
77
  end
76
78
  end
77
79
  end
@@ -1,3 +1,3 @@
1
1
  module OrmAdapter
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/orm_adapter.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{orm_adapter}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ian White", "Jose Valim"]
12
- s.date = %q{2010-10-10}
12
+ s.date = %q{2010-10-12}
13
13
  s.description = %q{Provides a single point of entry for using basic features of ruby ORMs}
14
14
  s.email = %q{ian.w.white@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -42,7 +42,7 @@ else
42
42
  end
43
43
 
44
44
  specify "#model_classes should return all of the non abstract model classes (that are not in except_classes)" do
45
- subject.model_classes.should == [User, Note]
45
+ subject.model_classes.should include(User, Note)
46
46
  end
47
47
  end
48
48
 
@@ -50,6 +50,26 @@ else
50
50
  let(:user_class) { User }
51
51
  let(:note_class) { Note }
52
52
  end
53
+
54
+ describe "#conditions_to_fields" do
55
+ describe "with non-standard association keys" do
56
+ class PerverseNote < Note
57
+ belongs_to :user, :foreign_key => 'owner_id'
58
+ belongs_to :pwner, :polymorphic => true, :foreign_key => 'owner_id', :foreign_type => 'owner_type'
59
+ end
60
+
61
+ let(:user) { User.create! }
62
+ let(:adapter) { PerverseNote.to_adapter }
63
+
64
+ it "should convert polymorphic object in conditions to the appropriate fields" do
65
+ adapter.send(:conditions_to_fields, :pwner => user).should == {'owner_id' => user.id, 'owner_type' => user.class.name}
66
+ end
67
+
68
+ it "should convert belongs_to object in conditions to the appropriate fields" do
69
+ adapter.send(:conditions_to_fields, :user => user).should == {'owner_id' => user.id}
70
+ end
71
+ end
72
+ end
53
73
  end
54
74
  end
55
75
  end
@@ -9,7 +9,7 @@ describe OrmAdapter do
9
9
  its(:adapters) { should include(adapter) }
10
10
 
11
11
  describe "and the adapter has a model class" do
12
- let(:model) { mock('model class') }
12
+ let(:model) { Class.new }
13
13
 
14
14
  before { adapter.stub!(:model_classes).and_return([model]) }
15
15
 
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orm_adapter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 2
10
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
11
10
  platform: ruby
12
11
  authors:
13
12
  - Ian White
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-10-10 00:00:00 +02:00
18
+ date: 2010-10-12 00:00:00 +01:00
20
19
  default_executable:
21
20
  dependencies: []
22
21
 
@@ -65,7 +64,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - ">="
67
66
  - !ruby/object:Gem::Version
68
- hash: 3
69
67
  segments:
70
68
  - 0
71
69
  version: "0"
@@ -74,7 +72,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
72
  requirements:
75
73
  - - ">="
76
74
  - !ruby/object:Gem::Version
77
- hash: 3
78
75
  segments:
79
76
  - 0
80
77
  version: "0"