datastax_rails 2.0.12 → 2.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -5
  3. data/lib/blankslate.rb +8 -11
  4. data/lib/cql-rb_extensions.rb +5 -3
  5. data/lib/datastax_rails/associations/association.rb +93 -101
  6. data/lib/datastax_rails/associations/association_scope.rb +7 -7
  7. data/lib/datastax_rails/associations/belongs_to_association.rb +46 -48
  8. data/lib/datastax_rails/associations/builder/association.rb +32 -31
  9. data/lib/datastax_rails/associations/builder/belongs_to.rb +19 -20
  10. data/lib/datastax_rails/associations/builder/collection_association.rb +32 -32
  11. data/lib/datastax_rails/associations/builder/has_and_belongs_to_many.rb +21 -21
  12. data/lib/datastax_rails/associations/builder/has_many.rb +39 -40
  13. data/lib/datastax_rails/associations/builder/has_one.rb +30 -31
  14. data/lib/datastax_rails/associations/builder/singular_association.rb +31 -33
  15. data/lib/datastax_rails/associations/collection_association.rb +129 -135
  16. data/lib/datastax_rails/associations/collection_proxy.rb +21 -21
  17. data/lib/datastax_rails/associations/has_and_belongs_to_many_association.rb +26 -26
  18. data/lib/datastax_rails/associations/has_many_association.rb +38 -38
  19. data/lib/datastax_rails/associations/has_one_association.rb +31 -32
  20. data/lib/datastax_rails/associations/singular_association.rb +31 -30
  21. data/lib/datastax_rails/associations.rb +27 -24
  22. data/lib/datastax_rails/attribute_assignment.rb +17 -17
  23. data/lib/datastax_rails/attribute_methods/definition.rb +4 -4
  24. data/lib/datastax_rails/attribute_methods/dirty.rb +34 -33
  25. data/lib/datastax_rails/attribute_methods/primary_key.rb +3 -8
  26. data/lib/datastax_rails/attribute_methods/read.rb +10 -12
  27. data/lib/datastax_rails/attribute_methods/typecasting.rb +36 -35
  28. data/lib/datastax_rails/attribute_methods/write.rb +5 -6
  29. data/lib/datastax_rails/attribute_methods.rb +52 -56
  30. data/lib/datastax_rails/base.rb +122 -125
  31. data/lib/datastax_rails/callbacks.rb +15 -9
  32. data/lib/datastax_rails/cassandra_only_model.rb +6 -6
  33. data/lib/datastax_rails/collection.rb +5 -7
  34. data/lib/datastax_rails/column.rb +130 -118
  35. data/lib/datastax_rails/connection/statement_cache.rb +3 -3
  36. data/lib/datastax_rails/connection.rb +42 -33
  37. data/lib/datastax_rails/cql/alter_column_family.rb +19 -21
  38. data/lib/datastax_rails/cql/base.rb +8 -11
  39. data/lib/datastax_rails/cql/column_family.rb +11 -10
  40. data/lib/datastax_rails/cql/consistency.rb +2 -2
  41. data/lib/datastax_rails/cql/create_column_family.rb +15 -15
  42. data/lib/datastax_rails/cql/create_index.rb +5 -5
  43. data/lib/datastax_rails/cql/create_keyspace.rb +7 -7
  44. data/lib/datastax_rails/cql/delete.rb +16 -29
  45. data/lib/datastax_rails/cql/drop_column_family.rb +2 -2
  46. data/lib/datastax_rails/cql/drop_index.rb +2 -2
  47. data/lib/datastax_rails/cql/drop_keyspace.rb +2 -2
  48. data/lib/datastax_rails/cql/insert.rb +10 -16
  49. data/lib/datastax_rails/cql/select.rb +21 -33
  50. data/lib/datastax_rails/cql/truncate.rb +2 -2
  51. data/lib/datastax_rails/cql/update.rb +16 -24
  52. data/lib/datastax_rails/cql/use_keyspace.rb +2 -2
  53. data/lib/datastax_rails/cql.rb +2 -2
  54. data/lib/datastax_rails/dynamic_model.rb +32 -29
  55. data/lib/datastax_rails/errors.rb +6 -6
  56. data/lib/datastax_rails/grouped_collection.rb +3 -3
  57. data/lib/datastax_rails/inheritance.rb +9 -9
  58. data/lib/datastax_rails/payload_model.rb +24 -20
  59. data/lib/datastax_rails/persistence.rb +116 -110
  60. data/lib/datastax_rails/railtie.rb +7 -7
  61. data/lib/datastax_rails/reflection.rb +61 -59
  62. data/lib/datastax_rails/relation/batches.rb +12 -13
  63. data/lib/datastax_rails/relation/facet_methods.rb +44 -33
  64. data/lib/datastax_rails/relation/finder_methods.rb +95 -91
  65. data/lib/datastax_rails/relation/modification_methods.rb +5 -5
  66. data/lib/datastax_rails/relation/search_methods.rb +102 -102
  67. data/lib/datastax_rails/relation/spawn_methods.rb +25 -24
  68. data/lib/datastax_rails/relation/stats_methods.rb +9 -8
  69. data/lib/datastax_rails/relation.rb +165 -170
  70. data/lib/datastax_rails/rsolr_client_wrapper.rb +3 -3
  71. data/lib/datastax_rails/schema/cassandra.rb +44 -43
  72. data/lib/datastax_rails/schema/migrator.rb +52 -52
  73. data/lib/datastax_rails/schema/solr.rb +55 -47
  74. data/lib/datastax_rails/schema_cache.rb +1 -3
  75. data/lib/datastax_rails/scoping/default.rb +2 -3
  76. data/lib/datastax_rails/scoping/named.rb +3 -5
  77. data/lib/datastax_rails/scoping.rb +11 -12
  78. data/lib/datastax_rails/serialization.rb +34 -31
  79. data/lib/datastax_rails/serializers/xml_serializer.rb +178 -175
  80. data/lib/datastax_rails/timestamps.rb +4 -4
  81. data/lib/datastax_rails/types/dirty_collection.rb +57 -57
  82. data/lib/datastax_rails/types/dynamic_list.rb +1 -1
  83. data/lib/datastax_rails/types/dynamic_map.rb +5 -7
  84. data/lib/datastax_rails/types/dynamic_set.rb +2 -2
  85. data/lib/datastax_rails/util/solr_repair.rb +3 -3
  86. data/lib/datastax_rails/validations/associated.rb +8 -6
  87. data/lib/datastax_rails/validations/uniqueness.rb +8 -8
  88. data/lib/datastax_rails/validations.rb +9 -10
  89. data/lib/datastax_rails/version.rb +2 -1
  90. data/lib/datastax_rails/wide_storage_model.rb +6 -6
  91. data/lib/datastax_rails.rb +13 -9
  92. data/lib/schema_migration.rb +3 -3
  93. data/spec/datastax_rails/associations/belongs_to_association_spec.rb +2 -2
  94. data/spec/datastax_rails/associations/collection_association_spec.rb +14 -14
  95. data/spec/datastax_rails/associations/has_many_association_spec.rb +20 -20
  96. data/spec/datastax_rails/associations_spec.rb +11 -11
  97. data/spec/datastax_rails/attribute_methods_spec.rb +25 -25
  98. data/spec/datastax_rails/base_spec.rb +24 -24
  99. data/spec/datastax_rails/callbacks_spec.rb +21 -21
  100. data/spec/datastax_rails/column_spec.rb +133 -132
  101. data/spec/datastax_rails/connection/statement_cache_spec.rb +2 -2
  102. data/spec/datastax_rails/cql/base_spec.rb +4 -4
  103. data/spec/datastax_rails/cql/delete_spec.rb +19 -0
  104. data/spec/datastax_rails/cql/select_spec.rb +8 -8
  105. data/spec/datastax_rails/cql/update_spec.rb +8 -10
  106. data/spec/datastax_rails/dynamic_model_spec.rb +36 -22
  107. data/spec/datastax_rails/inheritance_spec.rb +11 -14
  108. data/spec/datastax_rails/persistence_spec.rb +73 -74
  109. data/spec/datastax_rails/relation/batches_spec.rb +13 -13
  110. data/spec/datastax_rails/relation/facet_methods_spec.rb +43 -35
  111. data/spec/datastax_rails/relation/finder_methods_spec.rb +77 -78
  112. data/spec/datastax_rails/relation/modification_methods_spec.rb +19 -19
  113. data/spec/datastax_rails/relation/search_methods_spec.rb +160 -160
  114. data/spec/datastax_rails/relation/spawn_methods_spec.rb +18 -18
  115. data/spec/datastax_rails/relation_spec.rb +119 -116
  116. data/spec/datastax_rails/schema/migrator_spec.rb +30 -30
  117. data/spec/datastax_rails/schema/solr_spec.rb +15 -15
  118. data/spec/datastax_rails/scoping/default_spec.rb +9 -9
  119. data/spec/datastax_rails/types/dynamic_list_spec.rb +12 -12
  120. data/spec/datastax_rails/types/dynamic_map_spec.rb +10 -10
  121. data/spec/datastax_rails/types/dynamic_set_spec.rb +22 -10
  122. data/spec/datastax_rails/validations/uniqueness_spec.rb +25 -25
  123. data/spec/datastax_rails/wide_storage_model_spec.rb +11 -0
  124. data/spec/datastax_rails_spec.rb +2 -2
  125. data/spec/dummy/config/application.rb +2 -3
  126. data/spec/dummy/config/boot.rb +1 -1
  127. data/spec/dummy/config/environments/development.rb +3 -3
  128. data/spec/dummy/config/environments/test.rb +1 -1
  129. data/spec/dummy/config/initializers/session_store.rb +1 -1
  130. data/spec/dummy/config/initializers/wrap_parameters.rb +1 -1
  131. data/spec/factories/audit_logs.rb +6 -0
  132. data/spec/factories/hobbies.rb +6 -0
  133. data/spec/factories/people.rb +5 -0
  134. data/spec/feature/dynamic_fields_spec.rb +4 -4
  135. data/spec/feature/overloaded_tables_spec.rb +11 -12
  136. data/spec/spec_helper.rb +17 -14
  137. data/spec/support/datastax_test_hook.rb +2 -2
  138. data/spec/support/default_consistency_shared_examples.rb +11 -11
  139. data/spec/support/models.rb +31 -32
  140. metadata +40 -6
  141. data/lib/datastax_rails/attribute_methods/before_type_cast.rb +0 -71
  142. data/lib/datastax_rails/log_subscriber.rb +0 -0
  143. data/spec/dummy/ks/migrate/20111117224534_models.rb +0 -20
@@ -4,13 +4,13 @@ class SchemaMigration
4
4
  def self.default_consistency
5
5
  DatastaxRails::Base.default_consistency
6
6
  end
7
-
7
+
8
8
  # Returns the name of the column family
9
9
  def self.column_family
10
10
  'schema_migrations'
11
11
  end
12
-
12
+
13
13
  def self.primary_key
14
14
  'cf'
15
15
  end
16
- end
16
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DatastaxRails::Base do
4
- describe "BelongsTo Association" do
5
-
4
+ describe 'BelongsTo Association' do
5
+
6
6
  end
7
7
  end
@@ -3,35 +3,35 @@ require 'spec_helper'
3
3
  describe DatastaxRails::Base do
4
4
  context 'associations' do
5
5
  context 'collection' do
6
- subject {Person.new(name: 'Matthew')}
7
-
8
- describe "#size" do
9
- it "reports the total of persisted and non-persisted" do
6
+ subject { Person.new(name: 'Matthew') }
7
+
8
+ describe '#size' do
9
+ it 'reports the total of persisted and non-persisted' do
10
10
  subject.save
11
- car1 = Car.create(:person_id => subject.id)
11
+ Car.create(person_id: subject.id)
12
12
  car2 = Car.new
13
13
  subject.cars << car2
14
14
  Car.commit_solr
15
15
  expect(subject.cars.size).to be(2)
16
16
  end
17
17
  end
18
-
19
- describe "#empty?" do
20
- it "returns false if a new record exists" do
18
+
19
+ describe '#empty?' do
20
+ it 'returns false if a new record exists' do
21
21
  subject.cars << Car.new
22
22
  expect(subject.cars).not_to be_empty
23
23
  end
24
24
  end
25
-
26
- describe "#any?" do
27
- it "returns true if a new record exists" do
25
+
26
+ describe '#any?' do
27
+ it 'returns true if a new record exists' do
28
28
  subject.cars << Car.new
29
29
  expect(subject.cars).to be_any
30
30
  end
31
31
  end
32
-
33
- describe "#many?" do
34
- it "returns false if more than one new record exists" do
32
+
33
+ describe '#many?' do
34
+ it 'returns false if more than one new record exists' do
35
35
  subject.cars << Car.new
36
36
  subject.cars << Car.new
37
37
  expect(subject.cars).to be_many
@@ -1,38 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DatastaxRails::Base do
4
- describe "HasMany Associations" do
5
- it "should destroy all objects with :dependent => :destroy" do
6
- p = Person.create(:name => "jason")
7
- Car.create(:name => "Jeep", :person_id => p.id)
4
+ describe 'HasMany Associations' do
5
+ it 'should destroy all objects with :dependent => :destroy' do
6
+ p = Person.create(name: 'jason')
7
+ Car.create(name: 'Jeep', person_id: p.id)
8
8
  Car.commit_solr
9
9
  p.destroy
10
10
  Car.commit_solr
11
11
  Person.commit_solr
12
- Car.count.should == 0
12
+ expect(Car.count).to eq(0)
13
13
  end
14
-
15
- it "should retrieve child records" do
16
- p = Person.create(:name => 'jason')
17
- c = Car.create(:name => 'Jeep', :person_id => p.id)
14
+
15
+ it 'should retrieve child records' do
16
+ p = Person.create(name: 'jason')
17
+ c = Car.create(name: 'Jeep', person_id: p.id)
18
18
  Car.commit_solr
19
- p.cars.should include(c)
19
+ expect(p.cars).to include(c)
20
20
  end
21
-
22
- it "should retrieve only child records" do
23
- p = Person.create(:name => 'jason')
24
- c = Car.create(:name => 'Jeep', :person_id => '12345')
21
+
22
+ it 'should retrieve only child records' do
23
+ p = Person.create(name: 'jason')
24
+ c = Car.create(name: 'Jeep', person_id: '12345')
25
25
  Car.commit_solr
26
- p.cars.should_not include(c)
26
+ expect(p.cars).not_to include(c)
27
27
  end
28
-
29
- it "should create records with the proper foreign key" do
28
+
29
+ it 'should create records with the proper foreign key' do
30
30
  Person.commit_solr
31
- p = Person.create(:name => 'jason')
32
- p.cars.create(:name => 'Jeep')
31
+ p = Person.create(name: 'jason')
32
+ p.cars.create(name: 'Jeep')
33
33
  Car.commit_solr
34
34
  Person.commit_solr
35
- Car.first.person.should == p
35
+ expect(Car.first.person).to eq(p)
36
36
  end
37
37
  end
38
38
  end
@@ -1,24 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DatastaxRails::Base do
4
- describe "Associations" do
5
- describe "belongs_to" do
6
- it "should set the id when setting the object" do
7
- person = Person.create(:name => "Jason")
8
- job = Job.create(:title => "Developer")
4
+ describe 'Associations' do
5
+ describe 'belongs_to' do
6
+ it 'should set the id when setting the object' do
7
+ person = Person.create(name: 'Jason')
8
+ job = Job.create(title: 'Developer')
9
9
  Person.commit_solr
10
10
  job.person = person
11
- job.person_id.should == person.id
11
+ expect(job.person_id).to eq(person.id)
12
12
  end
13
-
14
- it "should look up the owning model by id" do
13
+
14
+ it 'should look up the owning model by id' do
15
15
  Job.truncate
16
16
  Job.commit_solr
17
- person = Person.create!(:name => "John")
18
- job = Job.create!(:title => "Developer", :person_id => person.id)
17
+ person = Person.create!(name: 'John')
18
+ Job.create!(title: 'Developer', person_id: person.id)
19
19
  Person.commit_solr
20
20
  Job.commit_solr
21
- Job.first.person.should == person
21
+ expect(Job.first.person).to eq(person)
22
22
  end
23
23
  end
24
24
  end
@@ -2,48 +2,48 @@ require 'spec_helper'
2
2
 
3
3
  class AttributeMethodsTester < DatastaxRails::Base
4
4
  string :test_string
5
- string :non_search_string, :solr_index => false
6
- end
5
+ string :non_search_string, solr_index: false
6
+ end
7
7
 
8
8
  class CassandraOnlyTester < DatastaxRails::Base
9
9
  include DatastaxRails::CassandraOnlyModel
10
10
  string :test_string
11
- string :test_string2, :cql_index => true
11
+ string :test_string2, cql_index: true
12
12
  end
13
13
 
14
14
  describe DatastaxRails::Base do
15
15
  def tester
16
16
  @tester ||= AttributeMethodsTester.new
17
17
  end
18
-
19
- describe "attribute methods" do
20
- it "should create attribute setter methods" do
21
- tester.should respond_to(:test_string=)
18
+
19
+ describe 'attribute methods' do
20
+ it 'should create attribute setter methods' do
21
+ expect(tester).to respond_to(:test_string=)
22
22
  end
23
-
24
- it "Should create attribute getter methods" do
25
- tester.should respond_to(:test_string)
23
+
24
+ it 'Should create attribute getter methods' do
25
+ expect(tester).to respond_to(:test_string)
26
26
  end
27
27
  end
28
-
29
- describe "#attribute" do
30
- context "Cassandra-only models" do
31
- it "does not index columns by default" do
32
- expect(CassandraOnlyTester.attribute_definitions[:test_string].options[:solr_index]).to be_false
33
- expect(CassandraOnlyTester.attribute_definitions[:test_string].options[:cql_index]).to be_false
28
+
29
+ describe '#attribute' do
30
+ context 'Cassandra-only models' do
31
+ it 'does not index columns by default' do
32
+ expect(CassandraOnlyTester.attribute_definitions[:test_string].options[:solr_index]).to be_falsey
33
+ expect(CassandraOnlyTester.attribute_definitions[:test_string].options[:cql_index]).to be_falsey
34
34
  end
35
-
36
- it "does not index into solr" do
37
- expect(CassandraOnlyTester.attribute_definitions[:test_string2].options[:solr_index]).to be_false
38
- expect(CassandraOnlyTester.attribute_definitions[:test_string2].options[:cql_index]).to be_true
35
+
36
+ it 'does not index into solr' do
37
+ expect(CassandraOnlyTester.attribute_definitions[:test_string2].options[:solr_index]).to be_falsey
38
+ expect(CassandraOnlyTester.attribute_definitions[:test_string2].options[:cql_index]).to be_truthy
39
39
  end
40
40
  end
41
-
42
- context "Normal models" do
43
- it "indexes data into solr by default" do
44
- expect(AttributeMethodsTester.attribute_definitions[:test_string].options[:solr_index]).to be_true
41
+
42
+ context 'Normal models' do
43
+ it 'indexes data into solr by default' do
44
+ expect(AttributeMethodsTester.attribute_definitions[:test_string].options[:solr_index]).to be_truthy
45
45
  end
46
46
  end
47
47
  end
48
-
48
+
49
49
  end
@@ -1,43 +1,43 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DatastaxRails::Base do
4
- it "should raise RecordNotFound when finding a bogus ID" do
5
- lambda { Person.find("xyzzy") }.should raise_exception(DatastaxRails::RecordNotFound)
4
+ it 'should raise RecordNotFound when finding a bogus ID' do
5
+ expect { Person.find('xyzzy') }.to raise_exception(DatastaxRails::RecordNotFound)
6
6
  end
7
-
8
- describe "equality" do
9
- it "considers new objects to be unequal" do
10
- p1=Person.new(:name => 'John')
11
- p2=Person.new(:name => 'John')
7
+
8
+ describe 'equality' do
9
+ it 'considers new objects to be unequal' do
10
+ p1 = Person.new(name: 'John')
11
+ p2 = Person.new(name: 'John')
12
12
  expect(p1).not_to eq(p2)
13
13
  end
14
-
15
- it "considers a new object to be unequal to a saved object" do
16
- p1=Person.create!(:name => 'Mike')
17
- p2=Person.new(:name => 'Mike')
14
+
15
+ it 'considers a new object to be unequal to a saved object' do
16
+ p1 = Person.create!(name: 'Mike')
17
+ p2 = Person.new(name: 'Mike')
18
18
  expect(p1).not_to eq(p2)
19
19
  end
20
-
21
- it "considers two new objects to be unequal" do
20
+
21
+ it 'considers two new objects to be unequal' do
22
22
  expect(Person.new).not_to eq(Person.new)
23
23
  end
24
-
25
- it "considers the same object equal to itself" do
26
- p=Person.new
24
+
25
+ it 'considers the same object equal to itself' do
26
+ p = Person.new
27
27
  expect(p).to eq(p)
28
28
  end
29
-
30
- it "considers two persisted objects to be equal if their primary keys are equal" do
29
+
30
+ it 'considers two persisted objects to be equal if their primary keys are equal' do
31
31
  Person.commit_solr
32
- p1=Person.create!(:name => 'Jim')
33
- p2=Person.find(p1.id)
32
+ p1 = Person.create!(name: 'Jim')
33
+ p2 = Person.find(p1.id)
34
34
  expect(p1).to eq(p2)
35
35
  end
36
-
37
- it "considers two persisted objects to be unequal if they have different primary keys" do
36
+
37
+ it 'considers two persisted objects to be unequal if they have different primary keys' do
38
38
  Person.commit_solr
39
- p1=Person.create!(:name => 'Kirk')
40
- p2=Person.create!(:name => 'Tiberious')
39
+ p1 = Person.create!(name: 'Kirk')
40
+ p2 = Person.create!(name: 'Tiberious')
41
41
  expect(p1).not_to eq(p2)
42
42
  end
43
43
  end
@@ -1,48 +1,48 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  class CallbackTester < Hobby
4
- self.column_family = "hobbies"
4
+ self.column_family = 'hobbies'
5
5
  attr_accessor :after_find_called, :after_initialize_called
6
-
6
+
7
7
  after_find { self.after_find_called = true }
8
8
  after_initialize { self.after_initialize_called = true }
9
-
10
- %w[before_save before_create after_save after_create before_validation after_validation
11
- after_touch before_destroy after_destroy].each do |callback|
12
- self.send(callback, callback + "_callback") # after_save 'after_save_callback'
13
- define_method(callback+"_callback") do
9
+
10
+ %w(before_save before_create after_save after_create before_validation after_validation
11
+ after_touch before_destroy after_destroy).each do |callback|
12
+ send(callback, callback + '_callback') # after_save 'after_save_callback'
13
+ define_method(callback + '_callback') do
14
14
  true
15
15
  end
16
16
  end
17
17
  end
18
18
 
19
19
  describe DatastaxRails::Base do
20
- describe "callbacks" do
20
+ describe 'callbacks' do
21
21
  subject { CallbackTester.new }
22
-
23
- %w[before_save before_create after_save after_create before_validation after_validation].each do |callback|
22
+
23
+ %w(before_save before_create after_save after_create before_validation after_validation).each do |callback|
24
24
  it "runs #{callback}" do
25
- expect(subject).to receive(callback+"_callback")
25
+ expect(subject).to receive(callback + '_callback')
26
26
  subject.save
27
27
  end
28
28
  end
29
-
30
- %w[after_destroy before_destroy].each do |callback|
29
+
30
+ %w(after_destroy before_destroy).each do |callback|
31
31
  it "runs #{callback}" do
32
32
  subject.save
33
- expect(subject).to receive(callback+"_callback")
33
+ expect(subject).to receive(callback + '_callback')
34
34
  subject.destroy
35
35
  end
36
36
  end
37
-
38
- it "runs after_find" do
37
+
38
+ it 'runs after_find' do
39
39
  subject.save
40
- ct=CallbackTester.find(subject.id)
41
- expect(ct.after_find_called).to be_true
40
+ ct = CallbackTester.find(subject.id)
41
+ expect(ct.after_find_called).to be_truthy
42
42
  end
43
-
44
- it "runs after_initialize" do
45
- expect(subject.after_initialize_called).to be_true
43
+
44
+ it 'runs after_initialize' do
45
+ expect(subject.after_initialize_called).to be_truthy
46
46
  end
47
47
  end
48
48
  end
@@ -1,246 +1,247 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DatastaxRails::Column do
4
- describe "type casting" do
5
- let(:record) {double(Person, :changed_attributes => {}, :attributes => {})}
6
-
7
- describe "boolean" do
8
- let(:c) {DatastaxRails::Column.new("field", nil, "boolean")}
9
-
10
- describe "to ruby" do
11
- it "casts '' to nil" do
4
+ describe 'type casting' do
5
+ let(:record) { double(Person, changed_attributes: {}, attributes: {}) }
6
+
7
+ describe 'boolean' do
8
+ let(:c) { DatastaxRails::Column.new('field', nil, 'boolean') }
9
+
10
+ describe 'to ruby' do
11
+ it "casts '' to nil" do
12
12
  expect(c.type_cast('')).to be_nil
13
13
  end
14
-
15
- it "casts nil to nil" do
14
+
15
+ it 'casts nil to nil' do
16
16
  expect(c.type_cast(nil)).to be_nil
17
17
  end
18
-
18
+
19
19
  [true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON'].each do |val|
20
20
  it "casts #{val.inspect} to true" do
21
21
  expect(c.type_cast(val)).to eq(true)
22
22
  end
23
23
  end
24
-
24
+
25
25
  [false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF', ' ', "\u3000\r\n", "\u0000", 'SOMETHING RANDOM'].each do |val|
26
26
  it "casts #{val.inspect} to false" do
27
27
  expect(c.type_cast(val)).to eq(false)
28
28
  end
29
29
  end
30
30
  end
31
-
32
- describe "to cql3" do
33
- it "casts false to false" do
34
- expect(c.type_cast_for_cql3(false)).to be_false
31
+
32
+ describe 'to cql3' do
33
+ it 'casts false to false' do
34
+ expect(c.type_cast_for_cql3(false)).to be_falsey
35
35
  end
36
-
37
- it "casts true to true" do
38
- expect(c.type_cast_for_cql3(true)).to be_true
36
+
37
+ it 'casts true to true' do
38
+ expect(c.type_cast_for_cql3(true)).to be_truthy
39
39
  end
40
40
  end
41
-
42
- describe "to solr" do
41
+
42
+ describe 'to solr' do
43
43
  it "casts false to 'false'" do
44
44
  expect(c.type_cast_for_solr(false)).to eq('false')
45
45
  end
46
-
46
+
47
47
  it "casts true to 'true'" do
48
48
  expect(c.type_cast_for_solr(true)).to eq('true')
49
49
  end
50
50
  end
51
51
  end
52
-
53
- describe "integer" do
54
- let(:c) {DatastaxRails::Column.new("field", nil, "integer")}
55
-
56
- describe "to ruby" do
57
- [1,'1','1ignore','1.7',true].each do |val|
52
+
53
+ describe 'integer' do
54
+ let(:c) { DatastaxRails::Column.new('field', nil, 'integer') }
55
+
56
+ describe 'to ruby' do
57
+ [1, '1', '1ignore', '1.7', true].each do |val|
58
58
  it "casts #{val.inspect} to true" do
59
59
  expect(c.type_cast(val)).to eq(1)
60
60
  end
61
61
  end
62
-
63
- ['bad1','bad',false].each do |val|
62
+
63
+ ['bad1', 'bad', false].each do |val|
64
64
  it "casts #{val.inspect} to 0" do
65
65
  expect(c.type_cast(val)).to eq(0)
66
66
  end
67
67
  end
68
-
69
- [nil,[1,2],{1 => 2},(1..2),Object.new,Float::NAN,(1.0/0.0)].each do |val|
68
+
69
+ [nil, [1, 2], { 1 => 2 }, (1..2), Object.new, Float::NAN, (1.0 / 0.0)].each do |val|
70
70
  it "casts #{val.inspect} to nil" do
71
71
  expect(c.type_cast(val)).to be_nil
72
72
  end
73
73
  end
74
-
75
- it "casts a duration to an integer" do
74
+
75
+ it 'casts a duration to an integer' do
76
76
  expect(c.type_cast(30.minutes)).to be(1800)
77
77
  end
78
78
  end
79
-
80
- describe "to cql3" do
81
- it "casts 1 to 1" do
79
+
80
+ describe 'to cql3' do
81
+ it 'casts 1 to 1' do
82
82
  expect(c.type_cast_for_cql3(1)).to be(1)
83
83
  end
84
84
  end
85
-
86
- describe "to solr" do
87
- it "casts 1 to 1" do
85
+
86
+ describe 'to solr' do
87
+ it 'casts 1 to 1' do
88
88
  expect(c.type_cast_for_solr(1)).to be(1)
89
89
  end
90
90
  end
91
91
  end
92
-
93
- describe "time" do
94
- let(:c) {DatastaxRails::Column.new("field", nil, "time")}
95
-
96
- describe "to ruby" do
97
- [nil,'ABC',''].each do |val|
92
+
93
+ describe 'time' do
94
+ let(:c) { DatastaxRails::Column.new('field', nil, 'time') }
95
+
96
+ describe 'to ruby' do
97
+ [nil, 'ABC', ''].each do |val|
98
98
  it "casts #{val.inspect} to nil" do
99
99
  expect(c.type_cast(val)).to be_nil
100
100
  end
101
101
  end
102
-
103
- it "casts a time string to Time" do
104
- time_string = Time.now.utc.strftime("%T")
105
- expect(c.type_cast(time_string).strftime("%T")).to eq(time_string)
102
+
103
+ it 'casts a time string to Time' do
104
+ time_string = Time.now.utc.strftime('%T')
105
+ expect(c.type_cast(time_string).strftime('%T')).to eq(time_string)
106
106
  end
107
107
  end
108
-
109
- describe "to cql3" do
110
- it "casts a Time object to a Time object" do
108
+
109
+ describe 'to cql3' do
110
+ it 'casts a Time object to a Time object' do
111
111
  time = Time.parse('1980-10-19 17:55:00')
112
112
  expect(c.type_cast_for_cql3(time)).to eq(time)
113
113
  end
114
114
  end
115
-
116
- describe "to solr" do
117
- it "casts a Time object to a solr formatted time string" do
115
+
116
+ describe 'to solr' do
117
+ it 'casts a Time object to a solr formatted time string' do
118
118
  time = Time.parse('1980-10-19 17:55:00')
119
119
  expect(c.type_cast_for_solr(time)).to eq('1980-10-19T17:55:00Z')
120
120
  end
121
121
  end
122
122
  end
123
-
124
- describe "timestamp" do
125
- let(:c) {DatastaxRails::Column.new("field", nil, "timestamp")}
126
-
127
- describe "to ruby" do
128
- [nil,'',' ', 'ABC'].each do |val|
123
+
124
+ describe 'timestamp' do
125
+ let(:c) { DatastaxRails::Column.new('field', nil, 'timestamp') }
126
+
127
+ describe 'to ruby' do
128
+ [nil, '', ' ', 'ABC'].each do |val|
129
129
  it "casts #{val.inspect} to nil" do
130
130
  expect(c.type_cast(val)).to be_nil
131
131
  end
132
132
  end
133
-
134
- it "casts a datetime string to Time" do
135
- datetime_string = Time.now.utc.strftime("%FT%T")
136
- expect(c.type_cast(datetime_string).strftime("%FT%T")).to eq(datetime_string)
133
+
134
+ it 'casts a datetime string to Time' do
135
+ datetime_string = Time.now.utc.strftime('%FT%T')
136
+ expect(c.type_cast(datetime_string).strftime('%FT%T')).to eq(datetime_string)
137
137
  end
138
-
139
- it "casts a datetime string with timezone to Time" do
138
+
139
+ it 'casts a datetime string with timezone to Time' do
140
+ pending 'How do we handle other time zones?'
140
141
  begin
141
142
  old = DatastaxRails::Base.default_timezone
142
143
  [:utc, :local].each do |zone|
143
144
  DatastaxRails::Base.default_timezone = zone
144
- datetime_string = "Wed, 04 Sep 2013 03:00:00 EAT"
145
- expect(c.type_cast(val)).to eq(Time.utc(2013, 9, 4, 0, 0, 0))
145
+ datetime_string = 'Wed, 04 Sep 2013 03:00:00 EDT'
146
+ expect(c.type_cast(datetime_string)).to eq(Time.utc(2013, 9, 4, 0, 0, 0))
146
147
  end
147
148
  rescue
148
149
  DatastaxRails::Base.default_timezone = old
149
150
  end
150
151
  end
151
152
  end
152
-
153
- describe "to cql3" do
154
- it "casts a Time object to a Time object" do
153
+
154
+ describe 'to cql3' do
155
+ it 'casts a Time object to a Time object' do
155
156
  time = Time.parse('1980-10-19 17:55:00')
156
157
  expect(c.type_cast_for_cql3(time)).to eq(time)
157
158
  end
158
159
  end
159
-
160
- describe "to solr" do
161
- it "casts a Time object to a solr formatted time string" do
160
+
161
+ describe 'to solr' do
162
+ it 'casts a Time object to a solr formatted time string' do
162
163
  time = Time.parse('1980-10-19 17:55:00')
163
164
  expect(c.type_cast_for_solr(time)).to eq('1980-10-19T17:55:00Z')
164
165
  end
165
166
  end
166
167
  end
167
-
168
- describe "date" do
169
- let(:c) {DatastaxRails::Column.new("field", nil, "date")}
170
-
171
- [nil,'',' ', 'ABC'].each do |val|
168
+
169
+ describe 'date' do
170
+ let(:c) { DatastaxRails::Column.new('field', nil, 'date') }
171
+
172
+ [nil, '', ' ', 'ABC'].each do |val|
172
173
  it "casts #{val.inspect} to nil" do
173
174
  expect(c.type_cast(val)).to be_nil
174
175
  end
175
176
  end
176
-
177
- it "casts a date string to Date" do
178
- date_string = Time.now.utc.strftime("%F")
179
- expect(c.type_cast(date_string).strftime("%F")).to eq(date_string)
177
+
178
+ it 'casts a date string to Date' do
179
+ date_string = Time.now.utc.strftime('%F')
180
+ expect(c.type_cast(date_string).strftime('%F')).to eq(date_string)
180
181
  end
181
-
182
- describe "to cql3" do
183
- it "casts a Date object to a Time object" do
182
+
183
+ describe 'to cql3' do
184
+ it 'casts a Date object to a Time object' do
184
185
  time = Time.parse('1980-10-19 00:00:00')
185
186
  date = Date.parse('1980-10-19')
186
187
  expect(c.type_cast_for_cql3(date)).to eq(time)
187
188
  end
188
189
  end
189
-
190
- describe "to solr" do
191
- it "casts a Date object to a solr formatted time string" do
190
+
191
+ describe 'to solr' do
192
+ it 'casts a Date object to a solr formatted time string' do
192
193
  date = Date.parse('1980-10-19')
193
194
  expect(c.type_cast_for_solr(date)).to eq('1980-10-19T00:00:00Z')
194
195
  end
195
196
  end
196
197
  end
197
-
198
- describe "map" do
199
- let(:c) {DatastaxRails::Column.new("field_", nil, "map", :holds => :integer)}
200
- let(:dc) {DatastaxRails::Column.new("field_", nil, "map", :holds => :date)}
201
-
202
- it "casts map keys to strings" do
203
- expect(c.type_cast({:field_key => 7}, record)).to eq({"field_key" => 7})
204
- end
205
-
206
- it "casts map values to the type specified in the options" do
207
- expect(c.type_cast({'field_key' => '7'}, record)).to eq({"field_key" => 7})
208
- end
209
-
210
- it "wraps map values in a DynamicMap" do
211
- expect(c.type_cast({'field_key' => '7'}, record)).to be_a(DatastaxRails::Types::DynamicMap)
212
- end
213
-
214
- describe "to cql" do
215
- it "casts map values to the appropriate type" do
216
- date = Date.parse("1980-10-19")
217
- time = Time.parse("1980-10-19 00:00:00 +0000")
218
- expect(dc.type_cast_for_cql3({:field_key => date})).to eq(:field_key => time)
198
+
199
+ describe 'map' do
200
+ let(:c) { DatastaxRails::Column.new('field_', nil, 'map', holds: :integer) }
201
+ let(:dc) { DatastaxRails::Column.new('field_', nil, 'map', holds: :date) }
202
+
203
+ it 'casts map keys to strings' do
204
+ expect(c.type_cast({ field_key: 7 }, record)).to eq('field_key' => 7)
205
+ end
206
+
207
+ it 'casts map values to the type specified in the options' do
208
+ expect(c.type_cast({ 'field_key' => '7' }, record)).to eq('field_key' => 7)
209
+ end
210
+
211
+ it 'wraps map values in a DynamicMap' do
212
+ expect(c.type_cast({ 'field_key' => '7' }, record)).to be_a(DatastaxRails::Types::DynamicMap)
213
+ end
214
+
215
+ describe 'to cql' do
216
+ it 'casts map values to the appropriate type' do
217
+ date = Date.parse('1980-10-19')
218
+ time = Time.parse('1980-10-19 00:00:00 +0000')
219
+ expect(dc.type_cast_for_cql3(field_key: date)).to eq(field_key: time)
219
220
  end
220
221
  end
221
222
  end
222
-
223
- describe "list" do
224
- let(:c) {DatastaxRails::Column.new("field", nil, "list", :holds => :integer)}
225
-
226
- it "casts list values to the type specified in the options" do
227
- expect(c.type_cast([1,"2",6.minutes], record)).to eq([1,2,360])
223
+
224
+ describe 'list' do
225
+ let(:c) { DatastaxRails::Column.new('field', nil, 'list', holds: :integer) }
226
+
227
+ it 'casts list values to the type specified in the options' do
228
+ expect(c.type_cast([1, '2', 6.minutes], record)).to eq([1, 2, 360])
228
229
  end
229
-
230
- it "wraps list values in a DynamicList" do
231
- expect(c.type_cast([1,"2",6.minutes], record)).to be_a(DatastaxRails::Types::DynamicList)
230
+
231
+ it 'wraps list values in a DynamicList' do
232
+ expect(c.type_cast([1, '2', 6.minutes], record)).to be_a(DatastaxRails::Types::DynamicList)
232
233
  end
233
234
  end
234
-
235
- describe "set" do
236
- let(:c) {DatastaxRails::Column.new("field", nil, "set", :holds => :integer)}
237
-
238
- it "casts list values to the type specified in the options" do
239
- expect(c.type_cast([1,"2",6.minutes, 2], record)).to eq(Set.new([1,2,360]))
240
- end
241
-
242
- it "wraps list values in a DynamicSet" do
243
- expect(c.type_cast([1,"2",6.minutes, 2], record)).to be_a(DatastaxRails::Types::DynamicSet)
235
+
236
+ describe 'set' do
237
+ let(:c) { DatastaxRails::Column.new('field', nil, 'set', holds: :integer) }
238
+
239
+ it 'casts list values to the type specified in the options' do
240
+ expect(c.type_cast([1, '2', 6.minutes, 2], record)).to eq(Set.new([1, 2, 360]))
241
+ end
242
+
243
+ it 'wraps list values in a DynamicSet' do
244
+ expect(c.type_cast([1, '2', 6.minutes, 2], record)).to be_a(DatastaxRails::Types::DynamicSet)
244
245
  end
245
246
  end
246
247
  end