activerecord-simpledb-adapter 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ group :development do
4
4
  gem "awesome_print"
5
5
  gem "rspec", "~> 2.3.0"
6
6
  gem "bundler", "~> 1.0.0"
7
- gem "jeweler", "~> 1.5.2"
7
+ gem "jeweler"
8
8
  gem "rcov", ">= 0"
9
9
  gem "aws"
10
10
  gem "activerecord"
data/Gemfile.lock CHANGED
@@ -28,10 +28,9 @@ GEM
28
28
  activemodel (= 3.0.7)
29
29
  activesupport (= 3.0.7)
30
30
  activesupport (3.0.7)
31
- arel (2.0.9)
32
- awesome_print (0.3.2)
33
- aws (2.4.5)
34
- activesupport
31
+ arel (2.0.10)
32
+ awesome_print (0.4.0)
33
+ aws (2.5.3)
35
34
  http_connection
36
35
  uuidtools
37
36
  xml-simple
@@ -45,18 +44,18 @@ GEM
45
44
  git (1.2.5)
46
45
  http_connection (1.4.1)
47
46
  i18n (0.5.0)
48
- jeweler (1.5.2)
47
+ jeweler (1.6.0)
49
48
  bundler (~> 1.0.0)
50
49
  git (>= 1.2.5)
51
50
  rake
52
- mail (2.2.17)
51
+ mail (2.2.19)
53
52
  activesupport (>= 2.3.6)
54
53
  i18n (>= 0.4.0)
55
54
  mime-types (~> 1.16)
56
55
  treetop (~> 1.4.8)
57
56
  mime-types (1.16)
58
57
  polyglot (0.3.1)
59
- rack (1.2.2)
58
+ rack (1.2.3)
60
59
  rack-mount (0.6.14)
61
60
  rack (>= 1.0.0)
62
61
  rack-test (0.5.7)
@@ -74,7 +73,7 @@ GEM
74
73
  activesupport (= 3.0.7)
75
74
  rake (>= 0.8.7)
76
75
  thor (~> 0.14.4)
77
- rake (0.8.7)
76
+ rake (0.9.0)
78
77
  rcov (0.9.9)
79
78
  rspec (2.3.0)
80
79
  rspec-core (~> 2.3.0)
@@ -89,7 +88,7 @@ GEM
89
88
  thor (0.14.6)
90
89
  treetop (1.4.9)
91
90
  polyglot (>= 0.3.1)
92
- tzinfo (0.3.26)
91
+ tzinfo (0.3.27)
93
92
  uuidtools (2.1.2)
94
93
  xml-simple (1.0.15)
95
94
 
@@ -103,7 +102,7 @@ DEPENDENCIES
103
102
  aws
104
103
  bundler (~> 1.0.0)
105
104
  genspec (= 0.2.0.prerails3.2)
106
- jeweler (~> 1.5.2)
105
+ jeweler
107
106
  rails
108
107
  rcov
109
108
  rspec (~> 2.3.0)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{activerecord-simpledb-adapter}
8
- s.version = "0.4.5"
8
+ s.version = "0.4.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ilia Ablamonov", "Alex Gorkunov", "Cloud Castle Inc."]
12
- s.date = %q{2011-04-27}
12
+ s.date = %q{2011-05-24}
13
13
  s.email = %q{ilia@flamefork.ru}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  "lib/active_record/connection_adapters/simpledb_adapter/adapter.rb",
26
26
  "lib/active_record/connection_adapters/simpledb_adapter/base.rb",
27
27
  "lib/active_record/connection_adapters/simpledb_adapter/column.rb",
28
+ "lib/active_record/connection_adapters/simpledb_adapter/defaults.rb",
28
29
  "lib/active_record/connection_adapters/simpledb_adapter/finder_methods.rb",
29
30
  "lib/active_record/connection_adapters/simpledb_adapter/misc/aws_overrides.rb",
30
31
  "lib/active_record/connection_adapters/simpledb_adapter/misc/simpledb_logger.rb",
@@ -41,21 +42,6 @@ Gem::Specification.new do |s|
41
42
  s.require_paths = ["lib"]
42
43
  s.rubygems_version = %q{1.3.7}
43
44
  s.summary = %q{ActiveRecord SimpleDB adapter}
44
- s.test_files = [
45
- "spec/active_record/batch_spec.rb",
46
- "spec/active_record/connection_adapters/simpledb_adapter_spec.rb",
47
- "spec/active_record/core_actions_spec.rb",
48
- "spec/active_record/defaults_spec.rb",
49
- "spec/active_record/locking_spec.rb",
50
- "spec/active_record/offset_spec.rb",
51
- "spec/active_record/record_attributes_spec.rb",
52
- "spec/active_record/validates_spec.rb",
53
- "spec/active_record/where_spec.rb",
54
- "spec/assets/db/seeds.rb",
55
- "spec/generators/model_spec.rb",
56
- "spec/spec_helper.rb",
57
- "spec/tasks/rake_spec.rb"
58
- ]
59
45
 
60
46
  if s.respond_to? :specification_version then
61
47
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -65,7 +51,7 @@ Gem::Specification.new do |s|
65
51
  s.add_development_dependency(%q<awesome_print>, [">= 0"])
66
52
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
67
53
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
68
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
54
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
69
55
  s.add_development_dependency(%q<rcov>, [">= 0"])
70
56
  s.add_development_dependency(%q<aws>, [">= 0"])
71
57
  s.add_development_dependency(%q<activerecord>, [">= 0"])
@@ -82,7 +68,7 @@ Gem::Specification.new do |s|
82
68
  s.add_dependency(%q<awesome_print>, [">= 0"])
83
69
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
84
70
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
85
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
71
+ s.add_dependency(%q<jeweler>, [">= 0"])
86
72
  s.add_dependency(%q<rcov>, [">= 0"])
87
73
  s.add_dependency(%q<aws>, [">= 0"])
88
74
  s.add_dependency(%q<activerecord>, [">= 0"])
@@ -100,7 +86,7 @@ Gem::Specification.new do |s|
100
86
  s.add_dependency(%q<awesome_print>, [">= 0"])
101
87
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
102
88
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
103
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
89
+ s.add_dependency(%q<jeweler>, [">= 0"])
104
90
  s.add_dependency(%q<rcov>, [">= 0"])
105
91
  s.add_dependency(%q<aws>, [">= 0"])
106
92
  s.add_dependency(%q<activerecord>, [">= 0"])
@@ -11,3 +11,6 @@ require 'active_record/connection_adapters/simpledb_adapter/validations'
11
11
  require 'active_record/connection_adapters/simpledb_adapter/table_definition'
12
12
  require 'active_record/connection_adapters/simpledb_adapter/column'
13
13
  require 'active_record/connection_adapters/simpledb_adapter/adapter'
14
+ require 'active_record/connection_adapters/simpledb_adapter/defaults'
15
+
16
+ ActiveRecord::Base.send :include, ActiveRecordSimpledbAdapter::Defaults
@@ -25,37 +25,11 @@ module ActiveRecord
25
25
  table_definition = ConnectionAdapters::SimpleDbTableDifinition.new(options[:collection_column_name] || DEFAULT_COLLECTION_COLUMN_NAME)
26
26
  table_definition.primary_key(Base.get_primary_key(table_name.to_s.singularize))
27
27
 
28
- alias_method_chain :initialize, :defaults
29
-
30
28
  yield table_definition if block_given?
31
29
 
32
30
  ConnectionAdapters::SimpleDBAdapter.set_collection_columns table_name, table_definition
33
31
  end
34
32
 
35
- def initialize_with_defaults(attrs = nil)
36
- initialize_without_defaults(attrs) do
37
- safe_attribute_names = []
38
- if attrs
39
- stringified_attrs = attrs.stringify_keys
40
- safe_attrs = sanitize_for_mass_assignment(stringified_attrs)
41
- safe_attribute_names = safe_attrs.keys.map { |x| x.to_s }
42
- end
43
-
44
- ActiveRecord::Base.connection.columns_definition(self.class.table_name).columns_with_defaults.each do |column|
45
- if !safe_attribute_names.any? { |attr_name| attr_name =~ /^#{column.name}($|\()/ }
46
- value = if column.default.is_a? Proc
47
- column.default.call(self)
48
- else
49
- column.default
50
- end
51
- __send__("#{column.name}=", value)
52
- changed_attributes.delete(column.name)
53
- end
54
- end
55
- yield(self) if block_given?
56
- end
57
- end
58
-
59
33
  def self.batch &block
60
34
  connection.begin_batch
61
35
  block.call
@@ -0,0 +1,35 @@
1
+ module ActiveRecordSimpledbAdapter
2
+ module Defaults
3
+ def self.included(base)
4
+ base.send :alias_method_chain, :initialize, :defaults
5
+ end
6
+
7
+ def initialize_with_defaults(attrs = nil)
8
+ initialize_without_defaults(attrs) do
9
+ safe_attribute_names = []
10
+ if attrs
11
+ stringified_attrs = attrs.stringify_keys
12
+ safe_attrs = sanitize_for_mass_assignment(stringified_attrs)
13
+ safe_attribute_names = safe_attrs.keys.map { |x| x.to_s }
14
+ end
15
+
16
+ ActiveRecord::Base.connection.columns_definition(self.class.table_name).columns_with_defaults.each do |column|
17
+ has_default = !safe_attribute_names.any? { |attr_name|
18
+ attr_name =~ /^#{column.name}($|\()/
19
+ }
20
+
21
+ if has_default
22
+ value = if column.default.is_a? Proc
23
+ column.default.call(self)
24
+ else
25
+ column.default
26
+ end
27
+ __send__("#{column.name}=", value)
28
+ changed_attributes.delete(column.name)
29
+ end
30
+ end
31
+ yield(self) if block_given?
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-simpledb-adapter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 5
10
- version: 0.4.5
9
+ - 6
10
+ version: 0.4.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ilia Ablamonov
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-04-27 00:00:00 +04:00
20
+ date: 2011-05-24 00:00:00 +04:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -70,14 +70,12 @@ dependencies:
70
70
  version_requirements: &id004 !ruby/object:Gem::Requirement
71
71
  none: false
72
72
  requirements:
73
- - - ~>
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- hash: 7
75
+ hash: 3
76
76
  segments:
77
- - 1
78
- - 5
79
- - 2
80
- version: 1.5.2
77
+ - 0
78
+ version: "0"
81
79
  requirement: *id004
82
80
  prerelease: false
83
81
  type: :development
@@ -283,6 +281,7 @@ files:
283
281
  - lib/active_record/connection_adapters/simpledb_adapter/adapter.rb
284
282
  - lib/active_record/connection_adapters/simpledb_adapter/base.rb
285
283
  - lib/active_record/connection_adapters/simpledb_adapter/column.rb
284
+ - lib/active_record/connection_adapters/simpledb_adapter/defaults.rb
286
285
  - lib/active_record/connection_adapters/simpledb_adapter/finder_methods.rb
287
286
  - lib/active_record/connection_adapters/simpledb_adapter/misc/aws_overrides.rb
288
287
  - lib/active_record/connection_adapters/simpledb_adapter/misc/simpledb_logger.rb
@@ -293,19 +292,6 @@ files:
293
292
  - lib/generators/active_record/model/model_generator.rb
294
293
  - lib/generators/active_record/model/templates/model.rb
295
294
  - lib/tasks/simpledb.rake
296
- - spec/active_record/batch_spec.rb
297
- - spec/active_record/connection_adapters/simpledb_adapter_spec.rb
298
- - spec/active_record/core_actions_spec.rb
299
- - spec/active_record/defaults_spec.rb
300
- - spec/active_record/locking_spec.rb
301
- - spec/active_record/offset_spec.rb
302
- - spec/active_record/record_attributes_spec.rb
303
- - spec/active_record/validates_spec.rb
304
- - spec/active_record/where_spec.rb
305
- - spec/assets/db/seeds.rb
306
- - spec/generators/model_spec.rb
307
- - spec/spec_helper.rb
308
- - spec/tasks/rake_spec.rb
309
295
  has_rdoc: true
310
296
  homepage: http://github.com/cloudcastle/activerecord-simpledb-adapter
311
297
  licenses:
@@ -340,17 +326,5 @@ rubygems_version: 1.3.7
340
326
  signing_key:
341
327
  specification_version: 3
342
328
  summary: ActiveRecord SimpleDB adapter
343
- test_files:
344
- - spec/active_record/batch_spec.rb
345
- - spec/active_record/connection_adapters/simpledb_adapter_spec.rb
346
- - spec/active_record/core_actions_spec.rb
347
- - spec/active_record/defaults_spec.rb
348
- - spec/active_record/locking_spec.rb
349
- - spec/active_record/offset_spec.rb
350
- - spec/active_record/record_attributes_spec.rb
351
- - spec/active_record/validates_spec.rb
352
- - spec/active_record/where_spec.rb
353
- - spec/assets/db/seeds.rb
354
- - spec/generators/model_spec.rb
355
- - spec/spec_helper.rb
356
- - spec/tasks/rake_spec.rb
329
+ test_files: []
330
+
@@ -1,91 +0,0 @@
1
- require 'spec_helper'
2
- #spec helpers difition
3
- class F < ActiveRecord::Base
4
- columns_definition do |t|
5
- t.string :body
6
- end
7
-
8
- has_many :bs
9
- after_save lambda { self.bs.create!({:body => "test"}) }
10
- end
11
- class B < ActiveRecord::Base
12
- columns_definition do |t|
13
- t.string :body
14
- t.string :f_id
15
- end
16
- end
17
- #testes
18
- describe "SimpleDBAdapter ActiveRecord batches operation" do
19
-
20
- before :each do
21
- ActiveRecord::Base.logger = Logger.new(STDOUT)
22
- ActiveRecord::Base.establish_connection($config)
23
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
24
- end
25
-
26
- after :each do
27
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
28
- end
29
-
30
- it "should work with usual create statments" do
31
- count = 5
32
- Person.batch do
33
- count.times { |i| Person.create_valid }
34
- Person.count.should == 0
35
- end
36
- items = Person.all
37
- items.count.should == count
38
- items.each { |item| item.is_valid? }
39
- end
40
-
41
- it "should work with usual update statments" do
42
- count = 5
43
- items = []
44
- count.times { items << Person.create_valid }
45
- Person.batch do
46
- items.each {|item| item.update_attributes({:login => 'test'}); item.save! }
47
- end
48
- items = Person.all
49
- items.count.should == count
50
- items.each { |item| item.login.should == 'test' }
51
- end
52
-
53
- it "should work with usual destroy statments" do
54
- count = 5
55
- items = []
56
- count.times { items << Person.create_valid }
57
- Person.batch do
58
- items.each {|item| item.destroy }
59
- end
60
- Person.count.should == 0
61
- end
62
-
63
- it "should work with diferrent statments in one batch session" do
64
- count = 5
65
- items = []
66
- count.times { items << Person.create_valid }
67
- Person.batch do
68
- items.each do |item|
69
- item.destroy
70
- Person.create_valid
71
- end
72
- end
73
- Person.count.should == count
74
- end
75
-
76
- it "should auto split to several batches when count of items more than BATCH_MAX_ITEM_COUNT" do
77
- count = 50
78
- Person.batch do
79
- count.times { |i| Person.create_valid }
80
- end
81
- Person.count.should == count
82
- end
83
-
84
- it "should batch internal operations too (sub-updates)" do
85
- count = 5
86
- F.batch do
87
- count.times { F.create!({:body => "body"}) }
88
- end
89
- [F, B].each {|r| r.count.should == count }
90
- end
91
- end
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter establish connection" do
4
-
5
- it "should connect to database" do
6
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
7
- ActiveRecord::Base.connection.should_not be_nil
8
- ActiveRecord::Base.connection.class.should == ActiveRecord::ConnectionAdapters::SimpleDBAdapter
9
- end
10
-
11
- it "should be active after connection to database" do
12
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
13
- ActiveRecord::Base.connection.should be_active
14
- end
15
-
16
- it "should not be active after disconnection to database" do
17
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
18
- ActiveRecord::Base.connection.disconnect!
19
- ActiveRecord::Base.connection.should_not be_active
20
- end
21
-
22
- it "should be active after reconnection to database" do
23
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
24
- ActiveRecord::Base.connection.reconnect!
25
- ActiveRecord::Base.connection.should be_active
26
- end
27
-
28
- end
@@ -1,47 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord core actions" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- Person.create!(Person.valid_params)
10
- end
11
-
12
- after :each do
13
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
14
- end
15
-
16
- it "should be correct work with .all statement" do
17
- Person.all.should_not be_empty
18
- Person.all.first.is_a?(Person).should be_true
19
- end
20
-
21
- it "should be correct work with .first statement" do
22
- Person.first.is_a?(Person).should be_true
23
- end
24
-
25
- it "should be correct work with .last statement" do
26
- Person.last.is_a?(Person).should be_true
27
- end
28
-
29
- it "should be correct work with .count statement" do
30
- Person.count.should > 0
31
- end
32
-
33
- it "should be correct work with .find statement" do
34
- p1 = Person.create!
35
- p2 = Person.find p1.id
36
- p1.should == p2
37
- end
38
-
39
- it "should be correct work with .destroy statement" do
40
- p1 = Person.new
41
- p1.save
42
- id = p1.id
43
- p1.destroy
44
- p2 = Person.find_by_id id
45
- p2.should be_nil
46
- end
47
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord default values for attributes" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- end
10
-
11
- after :each do
12
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
13
- end
14
-
15
- class ModelWithDefaults < ActiveRecord::Base
16
- columns_definition do |c|
17
- c.string :p1, :default => 'payload_string1'
18
- c.string :p2, :default => lambda { "payload_string2" }
19
- c.integer :p3, :default => 10
20
- c.float :p4, :default => 10.05
21
- c.boolean :p5, :default => true
22
- c.string :p6
23
- end
24
- end
25
-
26
- it "should correct sets after create new instance of model" do
27
- m = ModelWithDefaults.new
28
- m.p1.should == "payload_string1"
29
- m.p2.should == "payload_string2"
30
- m.p3.should == 10
31
- m.p4.should == 10.05
32
- m.p5.should be_true
33
- m.p6.should be_nil
34
- end
35
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord with optimistic locking" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- end
10
-
11
- after :each do
12
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
13
- end
14
-
15
- it "should be have not nil lock version value after save" do
16
- p = Person.new
17
- p.save
18
- p.reload
19
- p.lock_version.should_not be_nil
20
- end
21
-
22
- it "should change lock version value after sevarals saves" do
23
- p = Person.new
24
- p.save
25
- old_lock_version = p.lock_version
26
- p.login = "blabla"
27
- p.save
28
- p.reload
29
- p.lock_version.should_not == old_lock_version
30
- end
31
-
32
- it "should raise error when tried save model with non-actual values (changed another place and time)" do
33
- p = Person.new
34
- p.save
35
- p1 = Person.find p.id
36
- p1.login = "blabla"
37
- p.login = "bla"
38
- p1.save
39
- lambda {p.save!}.should raise_error(ActiveRecord::StaleObjectError)
40
- end
41
-
42
- it "should raise error when tried destroy item with changed state" do
43
- p = Person.new
44
- p.save
45
- p1 = Person.find p.id
46
- p1.login = "blabla"
47
- p1.save
48
- lambda {p.destroy}.should raise_error(ActiveRecord::StaleObjectError)
49
- end
50
- end
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
- #testes
3
- describe "SimpleDBAdapter ActiveRecord offset operation" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- 50.times { |i| Person.create!({:login => "login#{i}"}) }
10
- end
11
-
12
- after :each do
13
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
14
- end
15
-
16
- it "should work" do
17
- count, offset = 10, 20
18
- persons = Person.limit(count).offset(offset).all
19
- persons.count.should == count
20
- persons.each_with_index do |person, i|
21
- person.login.should == "login#{i + offset}"
22
- end
23
- end
24
- end
@@ -1,111 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord attributes" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- end
10
-
11
- after :each do
12
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
13
- end
14
-
15
- it "should correct auto-generated properites (id, created_at, updated_at)" do
16
- p = Person.new
17
- p.id.should be_nil
18
- p.created_at.should be_nil
19
- p.updated_at.should be_nil
20
- p.save!
21
- p.id.should_not be_nil
22
- p.created_at.should_not be_nil
23
- p.updated_at.should_not be_nil
24
- end
25
-
26
- it "should be different ids for different model instances after create" do
27
- p1 = Person.create!
28
- p2 = Person.create!
29
- p1.id.should_not == p2.id
30
- end
31
-
32
- it "should correct saved and loaded" do
33
- p = Person.create!(Person.valid_params)
34
-
35
- r = Person.find p.id
36
- Person.valid_params.each do |key, value|
37
- r.try(key).should == value
38
- end
39
- end
40
-
41
- it "should correct save and load integer values" do
42
- p = Person.new
43
- p.year = 2010
44
- p.save
45
- p.year = p.year + 1
46
- p.save
47
- p.reload
48
- p.year.is_a?(Fixnum).should be_true
49
- p.year.should == 2011
50
- end
51
-
52
- it "should correct save and load float values" do
53
- p = Person.new
54
- p.price = 10.04
55
- p.save
56
- p.price = p.price + 1.2
57
- p.save
58
- p.reload
59
- p.price.is_a?(Float).should be_true
60
- p.price.should == 11.24
61
- end
62
-
63
- it "should corrert save and load negative values" do
64
- p = Person.new
65
- p.price = -10.04
66
- p.year = -200
67
- p.save
68
- p.price = p.price - 1.02
69
- p.year = p.year - 2
70
- p.save
71
- p.reload
72
- p.price.should == -11.06
73
- p.year.should == -202
74
- end
75
-
76
- it "should correct save and load boolean values" do
77
- p = Person.new
78
- p.active = true
79
- p.save
80
- p.reload
81
- p.active.should be_true
82
- p.active = false
83
- p.save
84
- p.reload
85
- p.active.should be_false
86
- end
87
-
88
- it "should correct save and load string values" do
89
- p = Person.new
90
- p.login = "superman"
91
- p.save
92
- p.login = p.login + "123"
93
- p.save
94
- p.reload
95
- p.login.should == "superman123"
96
- end
97
-
98
- it "should update updated_at property when invoke .touch" do
99
- p1 = Person.new
100
- p1.save
101
- p2 = Person.find p1.id
102
- p1.touch
103
- p1.updated_at.class.should == Time
104
- p1.updated_at.should > p2.updated_at
105
- end
106
- it "should update attributes with update_attributes" do
107
- p1 = Person.create_valid
108
- p1.update_attributes!({:login =>"123"})
109
- p1.login.should == "123"
110
- end
111
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord validates" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- end
10
-
11
- after :each do
12
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
13
- end
14
-
15
- it "should be correct work with validates presense of" do
16
- class PersonWithValidates < Person
17
- validates_presence_of :login
18
- end
19
-
20
- lambda {
21
- PersonWithValidates.create!
22
- }.should raise_error(ActiveRecord::RecordInvalid, "Validation failed: Login can't be blank")
23
- end
24
-
25
- it "should be correct work with validates uniqueness of" do
26
- class PersonWithValidates < Person
27
- validates_uniqueness_of :login
28
- end
29
-
30
- PersonWithValidates.create!(Person.valid_params)
31
-
32
- lambda {
33
- PersonWithValidates.create!(Person.valid_params)
34
- }.should raise_error(ActiveRecord::RecordInvalid, "Validation failed: Login has already been taken")
35
- end
36
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "SimpleDBAdapter ActiveRecord where statement" do
4
-
5
- before :each do
6
- ActiveRecord::Base.logger = Logger.new(STDOUT)
7
- ActiveRecord::Base.establish_connection($config)
8
- ActiveRecord::Base.connection.create_domain($config[:domain_name])
9
- Person.create!(Person.valid_params)
10
- end
11
-
12
- after :each do
13
- ActiveRecord::Base.connection.delete_domain($config[:domain_name])
14
- end
15
-
16
- it "should be return items by conditions with different type values" do
17
- Person.valid_params.each do |name, value|
18
- result = Person.where(name => value).first
19
- result.try(name).should == value
20
- end
21
- end
22
-
23
- it "should be return items by condition with table name prefix" do
24
- result = Person.where("people.state" => 'paid').first
25
- result.state.should == 'paid'
26
- end
27
- end
@@ -1 +0,0 @@
1
- Person.create!(:login => "admin")
@@ -1,17 +0,0 @@
1
- require 'spec_helper'
2
- require 'rails'
3
- require 'rails/generators'
4
- require 'generators/active_record/model/model_generator'
5
- require 'genspec'
6
- describe :model do
7
- context "with a name argument" do
8
- with_args "foo", "name:string", "year:integer", "--orm=active_record"
9
-
10
- it "should generate a model called 'foo' with two columns" do
11
- subject.should generate("app/models/foo.rb") { |content|
12
- content.should =~ /class Foo < ActiveRecord\:\:Base/
13
- content.should =~ /columns_definition do \|c\|\n c.string :name\n c.integer :year\n end/
14
- }
15
- end
16
- end
17
- end
data/spec/spec_helper.rb DELETED
@@ -1,66 +0,0 @@
1
- require 'rubygems'
2
- # Set up gems listed in the Gemfile.
3
- gemfile = File.expand_path('../../Gemfile', __FILE__)
4
- begin
5
- ENV['BUNDLE_GEMFILE'] = gemfile
6
- require 'bundler'
7
- Bundler.setup
8
- rescue Bundler::GemNotFound => e
9
- STDERR.puts e.message
10
- STDERR.puts "Try running `bundle install`."
11
- exit!
12
- end if File.exist?(gemfile)
13
-
14
- $:.unshift(File.dirname(__FILE__) + '/../lib')
15
- require 'ap'
16
- require 'rspec'
17
- require 'aws'
18
- require 'active_record'
19
- require 'active_record/connection_adapters/simpledb_adapter'
20
- require 'arel/visitors/simpledb'
21
-
22
- CONNECTION_PARAMS = {
23
- :adapter => 'simpledb',
24
- :access_key_id => "some_key",
25
- :secret_access_key => "some_secret",
26
- :domain_name => "test_domain",
27
- :host => 'localhost',
28
- :port => '8080',
29
- :protocol => 'http'
30
- }
31
-
32
- $config = CONNECTION_PARAMS
33
-
34
- #define stub model
35
- class Person < ActiveRecord::Base
36
- establish_connection $config
37
-
38
- columns_definition do |t|
39
- t.string :login
40
- t.integer :year, :limit => 4
41
- t.boolean :active
42
- t.string :state
43
- t.float :price
44
- t.integer :lock_version
45
-
46
- t.timestamps
47
- end
48
-
49
- def self.valid_params
50
- {
51
- :login => "john",
52
- :year => 2010,
53
- :active => true,
54
- :price => 10.04,
55
- :state => 'paid'
56
- }
57
- end
58
-
59
- def self.create_valid
60
- create! valid_params
61
- end
62
-
63
- def is_valid?
64
- Person.valid_params.all? {|key, value| self.try(key) == value}
65
- end
66
- end
@@ -1,79 +0,0 @@
1
- require 'spec_helper'
2
- require 'rake'
3
- require 'rails'
4
-
5
- DOMAIN = CONNECTION_PARAMS[:domain_name]
6
-
7
- def delete_domain_if_exist
8
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
9
- con = ActiveRecord::Base.connection
10
- con.delete_domain(DOMAIN) if con.list_domains.include? DOMAIN
11
- end
12
-
13
- def recreate_domain
14
- delete_domain_if_exist
15
- ActiveRecord::Base.connection.create_domain DOMAIN
16
- end
17
-
18
- describe "gem rake tasks" do
19
- before do
20
- @rake = Rake::Application.new
21
- Rake.application = @rake
22
- Rake.application.rake_require "tasks/simpledb"
23
- Rake::Task.define_task(:environment)
24
- ActiveRecord::Base.stub!(:configurations).and_return({"development" => CONNECTION_PARAMS})
25
- Rails.stub!(:env).and_return("development")
26
- Rails.stub!(:logger).and_return(Logger.new(STDOUT))
27
- Rails.stub!(:root).and_return(File.dirname(__FILE__) + "/../assets")
28
- end
29
-
30
- describe "db:create" do
31
- before do
32
- @task_name = "db:create"
33
- delete_domain_if_exist
34
- end
35
- it "should create sdb domain" do
36
- @rake[@task_name].invoke
37
- ActiveRecord::Base.connection.list_domains.should include(DOMAIN)
38
- end
39
- end
40
-
41
- describe "db:drop" do
42
- before do
43
- @task_name = "db:drop"
44
- recreate_domain
45
- end
46
- it "should drop sdb domain" do
47
- @rake[@task_name].invoke
48
- ActiveRecord::Base.connection.list_domains.should_not include(DOMAIN)
49
- end
50
- end
51
-
52
- describe "db:seed" do
53
- before do
54
- @task_name = "db:seed"
55
- recreate_domain
56
- end
57
- it "should pushing data to sdb domain" do
58
- @rake[@task_name].invoke
59
- Person.count.should == 1
60
- end
61
- end
62
-
63
- describe "db:collection:clear" do
64
- before do
65
- @task_name = "db:collection:clear"
66
- recreate_domain
67
- Person.create!(Person.valid_params)
68
- end
69
-
70
- it "should receive param with name \"name\"" do
71
- @rake[@task_name].arg_names.should include(:name)
72
- end
73
-
74
- it "should clear collection by name" do
75
- @rake[@task_name].invoke("person")
76
- Person.count.should == 0
77
- end
78
- end
79
- end