dynamoid 0.1.1 → 0.1.2

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.
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "Dynamoid::Indexes" do
4
4
 
5
- before do
5
+ before(:all) do
6
6
  User.create_indexes
7
7
  end
8
8
 
@@ -22,40 +22,32 @@ describe "Dynamoid::Indexes" do
22
22
  User.index_table_name([:email, :name]).should == 'dynamoid_tests_index_user_emails_and_names'
23
23
  end
24
24
 
25
- it 'creates a key name for a table index' do
26
- User.index_key_name([:email, :name]).should == 'user_emails_and_names'
27
- end
28
-
29
- it 'creates a table after an index is created' do
30
- User.send(:index, :password)
31
-
32
- User.table_exists?(User.index_table_name([:password])).should be_true
33
- end
34
-
35
25
  it 'assembles a hashed value for the key of an index' do
36
26
  @user = User.create(:name => 'Josh', :email => 'josh@joshsymonds.com')
37
27
 
38
- @user.key_for_index([:email, :name]).should == (Digest::SHA2.new << 'Josh' << 'josh@joshsymonds.com').to_s
28
+ @user.key_for_index([:email, :name]).should == "Josh.josh@joshsymonds.com"
39
29
  end
40
30
 
41
31
  it 'saves indexes to their tables' do
42
32
  @user = User.create(:name => 'Josh')
43
33
 
44
- Dynamoid::Adapter.get_item("dynamoid_tests_index_user_names", @user.key_for_index([:name])).should == {@user.class.index_key_name([:name]).to_sym => @user.key_for_index([:name]), :ids => Set[@user.id]}
34
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", @user.key_for_index([:name]))[:id].should == @user.key_for_index([:name])
35
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", @user.key_for_index([:name]))[:ids].should == Set[@user.id]
45
36
  end
46
37
 
47
38
  it 'saves multiple indexes with the same value as an array' do
48
39
  @user1 = User.create(:name => 'Josh')
49
40
  @user2 = User.create(:name => 'Josh')
50
41
 
51
- Dynamoid::Adapter.get_item("dynamoid_tests_index_user_names", @user1.key_for_index([:name])).should == {@user1.class.index_key_name([:name]).to_sym => @user1.key_for_index([:name]), :ids => Set[@user2.id, @user1.id]}
42
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", @user1.key_for_index([:name]))[:id].should == @user1.key_for_index([:name])
43
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", @user1.key_for_index([:name]))[:ids].should == Set[@user2.id, @user1.id]
52
44
  end
53
45
 
54
46
  it 'deletes indexes when the object is destroyed' do
55
47
  @user = User.create(:name => 'Josh')
56
48
  @user.destroy
57
49
 
58
- Dynamoid::Adapter.get_item("dynamoid_tests_index_user_names", @user.key_for_index([:name])).should == {@user.class.index_key_name([:name]).to_sym => @user.key_for_index([:name]), :ids => Set.new}
50
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", @user.key_for_index([:name]))[:id].should == @user.key_for_index([:name])
59
51
  end
60
52
 
61
53
  end
@@ -3,6 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
3
  describe "Dynamoid::Persistence" do
4
4
 
5
5
  before do
6
+ Random.stubs(:rand).with(Dynamoid::Config.partition_size).returns(0)
6
7
  @address = Address.new
7
8
  end
8
9
 
@@ -27,18 +28,17 @@ describe "Dynamoid::Persistence" do
27
28
  end
28
29
  end
29
30
 
30
-
31
31
  it 'assigns itself an id on save' do
32
32
  @address.save
33
33
 
34
- Dynamoid::Adapter.get_item("dynamoid_tests_addresses", @address.id)[:id].should == @address.id
34
+ Dynamoid::Adapter.read("dynamoid_tests_addresses", @address.id)[:id].should == @address.id
35
35
  end
36
36
 
37
37
  it 'assigns itself an id on save only if it does not have one' do
38
38
  @address.id = 'test123'
39
39
  @address.save
40
40
 
41
- Dynamoid::Adapter.get_item("dynamoid_tests_addresses", 'test123').should_not be_empty
41
+ Dynamoid::Adapter.read("dynamoid_tests_addresses", 'test123').should_not be_empty
42
42
  end
43
43
 
44
44
  it 'has a table name' do
@@ -56,7 +56,37 @@ describe "Dynamoid::Persistence" do
56
56
  @user = User.create(:name => 'Josh')
57
57
  @user.destroy
58
58
 
59
- Dynamoid::Adapter.get_item("dynamoid_tests_users", @user.id).should be_nil
59
+ Dynamoid::Adapter.read("dynamoid_tests_users", @user.id).should be_nil
60
+ end
61
+
62
+ it 'keeps string attributes as strings' do
63
+ @user = User.new(:name => 'Josh')
64
+ @user.send(:dump)[:name].should == 'Josh'
65
+ end
66
+
67
+ it 'dumps datetime attributes' do
68
+ @user = User.create(:name => 'Josh')
69
+ @user.send(:dump)[:name].should == 'Josh'
70
+ end
71
+
72
+ it 'dumps integer attributes' do
73
+ @subscription = Subscription.create(:length => 10)
74
+ @subscription.send(:dump)[:length].should == 10
75
+ end
76
+
77
+ it 'dumps set attributes' do
78
+ @subscription = Subscription.create(:length => 10)
79
+ @magazine = @subscription.magazine.create
80
+
81
+ @subscription.send(:dump)[:magazine_ids].should == Set[@magazine.id]
82
+ end
83
+
84
+ it 'loads attributes from a hash' do
85
+ @time = DateTime.now
86
+ @hash = {:name => 'Josh', :created_at => @time.to_f}
87
+
88
+ User.undump(@hash)[:name].should == 'Josh'
89
+ User.undump(@hash)[:created_at].to_f == @time.to_f
60
90
  end
61
91
 
62
92
  end
@@ -41,11 +41,11 @@ RSpec.configure do |config|
41
41
  end
42
42
  end
43
43
 
44
- #config.after(:suite) do
45
- # Dynamoid::Adapter.list_tables.each do |table|
46
- # Dynamoid::Adapter.delete_table(table) if table =~ /^#{Dynamoid::Config.namespace}/
47
- # end
48
- #end
44
+ config.after(:suite) do
45
+ Dynamoid::Adapter.list_tables.each do |table|
46
+ Dynamoid::Adapter.delete_table(table) if table =~ /^#{Dynamoid::Config.namespace}/
47
+ end
48
+ end
49
49
  else
50
50
  config.before(:each) do
51
51
  Dynamoid::Adapter.reset_data
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-27 00:00:00.000000000 Z
12
+ date: 2012-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
16
- requirement: &70174244757120 !ruby/object:Gem::Requirement
16
+ requirement: &70138865789600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70174244757120
24
+ version_requirements: *70138865789600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: tzinfo
27
- requirement: &70174244756560 !ruby/object:Gem::Requirement
27
+ requirement: &70138865788440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70174244756560
35
+ version_requirements: *70138865788440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: aws-sdk
38
- requirement: &70174244755620 !ruby/object:Gem::Requirement
38
+ requirement: &70138865787560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70174244755620
46
+ version_requirements: *70138865787560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &70174244754780 !ruby/object:Gem::Requirement
49
+ requirement: &70138865787060 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70174244754780
57
+ version_requirements: *70138865787060
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &70174244770280 !ruby/object:Gem::Requirement
60
+ requirement: &70138865786540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70174244770280
68
+ version_requirements: *70138865786540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70174244769680 !ruby/object:Gem::Requirement
71
+ requirement: &70138865785960 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70174244769680
79
+ version_requirements: *70138865785960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: bundler
82
- requirement: &70174244769120 !ruby/object:Gem::Requirement
82
+ requirement: &70138865785300 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70174244769120
90
+ version_requirements: *70138865785300
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: jeweler
93
- requirement: &70174244768580 !ruby/object:Gem::Requirement
93
+ requirement: &70138865807640 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70174244768580
101
+ version_requirements: *70138865807640
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rcov
104
- requirement: &70174244768080 !ruby/object:Gem::Requirement
104
+ requirement: &70138865806900 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70174244768080
112
+ version_requirements: *70138865806900
113
113
  description: Dynamoid is an ORM for Amazon's DynamoDB that supports offline development,
114
114
  associations, querying, and everything else you'd expect from an ActiveRecord-style
115
115
  replacement.
@@ -139,7 +139,6 @@ files:
139
139
  - lib/dynamoid/associations/has_and_belongs_to_many.rb
140
140
  - lib/dynamoid/associations/has_many.rb
141
141
  - lib/dynamoid/associations/has_one.rb
142
- - lib/dynamoid/attributes.rb
143
142
  - lib/dynamoid/components.rb
144
143
  - lib/dynamoid/config.rb
145
144
  - lib/dynamoid/config/options.rb
@@ -151,7 +150,6 @@ files:
151
150
  - lib/dynamoid/finders.rb
152
151
  - lib/dynamoid/indexes.rb
153
152
  - lib/dynamoid/persistence.rb
154
- - lib/dynamoid/relations.rb
155
153
  - spec/app/models/address.rb
156
154
  - spec/app/models/magazine.rb
157
155
  - spec/app/models/sponsor.rb
@@ -166,7 +164,6 @@ files:
166
164
  - spec/dynamoid/associations/has_many_spec.rb
167
165
  - spec/dynamoid/associations/has_one_spec.rb
168
166
  - spec/dynamoid/associations_spec.rb
169
- - spec/dynamoid/attributes_spec.rb
170
167
  - spec/dynamoid/config_spec.rb
171
168
  - spec/dynamoid/criteria/chain_spec.rb
172
169
  - spec/dynamoid/criteria_spec.rb
@@ -175,7 +172,6 @@ files:
175
172
  - spec/dynamoid/finders_spec.rb
176
173
  - spec/dynamoid/indexes_spec.rb
177
174
  - spec/dynamoid/persistence_spec.rb
178
- - spec/dynamoid/relations_spec.rb
179
175
  - spec/dynamoid_spec.rb
180
176
  - spec/spec_helper.rb
181
177
  homepage: http://github.com/Veraticus/Dynamoid
@@ -193,7 +189,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
189
  version: '0'
194
190
  segments:
195
191
  - 0
196
- hash: -456596935797833583
192
+ hash: 2498222871702438577
197
193
  required_rubygems_version: !ruby/object:Gem::Requirement
198
194
  none: false
199
195
  requirements:
@@ -1,37 +0,0 @@
1
- # encoding: utf-8
2
- module Dynamoid #:nodoc:
3
-
4
- module Attributes
5
- extend ActiveSupport::Concern
6
-
7
- attr_accessor :attributes
8
- alias :raw_attributes :attributes
9
-
10
- def write_attribute(name, value)
11
- attributes[name.to_sym] = value
12
- end
13
- alias :[]= :write_attribute
14
-
15
- def read_attribute(name)
16
- attributes[name.to_sym]
17
- end
18
- alias :[] :read_attribute
19
-
20
- def update_attributes(attributes)
21
- self.attributes = self.attributes.merge(attributes)
22
- save
23
- end
24
-
25
- def update_attribute(attribute, value)
26
- self.attributes[attribute] = value
27
- save
28
- end
29
-
30
- module ClassMethods
31
- def attributes
32
- [self.fields + [:id]].flatten.uniq
33
- end
34
- end
35
- end
36
-
37
- end
@@ -1,21 +0,0 @@
1
- require 'digest/sha2'
2
-
3
- # encoding: utf-8
4
- module Dynamoid #:nodoc:
5
-
6
- # Associate a document with another object: belongs_to, has_many, and has_and_belongs_to_many
7
- module Relations
8
- extend ActiveSupport::Concern
9
-
10
- included do
11
- class_attribute :indexes
12
-
13
- self.indexes = []
14
- end
15
-
16
- module ClassMethods
17
-
18
- end
19
- end
20
-
21
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Dynamoid::Attributes" do
4
-
5
- before do
6
- @address = Address.create
7
- @original_id = @address.id
8
- end
9
-
10
- it 'should write an attribute correctly' do
11
- @address.write_attribute(:city, 'Chicago')
12
- end
13
-
14
- it 'should write an attribute with the alias' do
15
- @address[:city] = 'Chicago'
16
- end
17
-
18
- it 'should read a written attribute' do
19
- @address.write_attribute(:city, 'Chicago')
20
- @address.read_attribute(:city).should == 'Chicago'
21
- end
22
-
23
- it 'should read a written attribute with the alias' do
24
- @address.write_attribute(:city, 'Chicago')
25
- @address[:city].should == 'Chicago'
26
- end
27
-
28
- it 'should update all attributes' do
29
- @address.expects(:save).once.returns(true)
30
- @address.update_attributes(:city => 'Chicago')
31
- @address[:city].should == 'Chicago'
32
- @address.id.should == @original_id
33
- end
34
-
35
- it 'should update one attribute' do
36
- @address.expects(:save).once.returns(true)
37
- @address.update_attribute(:city, 'Chicago')
38
- @address[:city].should == 'Chicago'
39
- @address.id.should == @original_id
40
- end
41
-
42
- it 'returns all attributes' do
43
- Address.attributes.should == [:id, :city]
44
- end
45
-
46
- end
@@ -1,6 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Dynamoid::Relations" do
4
-
5
-
6
- end