datastax_rails 2.0.12 → 2.0.15
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.
- checksums.yaml +4 -4
- data/Rakefile +5 -5
- data/lib/blankslate.rb +8 -11
- data/lib/cql-rb_extensions.rb +5 -3
- data/lib/datastax_rails/associations/association.rb +93 -101
- data/lib/datastax_rails/associations/association_scope.rb +7 -7
- data/lib/datastax_rails/associations/belongs_to_association.rb +46 -48
- data/lib/datastax_rails/associations/builder/association.rb +32 -31
- data/lib/datastax_rails/associations/builder/belongs_to.rb +19 -20
- data/lib/datastax_rails/associations/builder/collection_association.rb +32 -32
- data/lib/datastax_rails/associations/builder/has_and_belongs_to_many.rb +21 -21
- data/lib/datastax_rails/associations/builder/has_many.rb +39 -40
- data/lib/datastax_rails/associations/builder/has_one.rb +30 -31
- data/lib/datastax_rails/associations/builder/singular_association.rb +31 -33
- data/lib/datastax_rails/associations/collection_association.rb +129 -135
- data/lib/datastax_rails/associations/collection_proxy.rb +21 -21
- data/lib/datastax_rails/associations/has_and_belongs_to_many_association.rb +26 -26
- data/lib/datastax_rails/associations/has_many_association.rb +38 -38
- data/lib/datastax_rails/associations/has_one_association.rb +31 -32
- data/lib/datastax_rails/associations/singular_association.rb +31 -30
- data/lib/datastax_rails/associations.rb +27 -24
- data/lib/datastax_rails/attribute_assignment.rb +17 -17
- data/lib/datastax_rails/attribute_methods/definition.rb +4 -4
- data/lib/datastax_rails/attribute_methods/dirty.rb +34 -33
- data/lib/datastax_rails/attribute_methods/primary_key.rb +3 -8
- data/lib/datastax_rails/attribute_methods/read.rb +10 -12
- data/lib/datastax_rails/attribute_methods/typecasting.rb +36 -35
- data/lib/datastax_rails/attribute_methods/write.rb +5 -6
- data/lib/datastax_rails/attribute_methods.rb +52 -56
- data/lib/datastax_rails/base.rb +122 -125
- data/lib/datastax_rails/callbacks.rb +15 -9
- data/lib/datastax_rails/cassandra_only_model.rb +6 -6
- data/lib/datastax_rails/collection.rb +5 -7
- data/lib/datastax_rails/column.rb +130 -118
- data/lib/datastax_rails/connection/statement_cache.rb +3 -3
- data/lib/datastax_rails/connection.rb +42 -33
- data/lib/datastax_rails/cql/alter_column_family.rb +19 -21
- data/lib/datastax_rails/cql/base.rb +8 -11
- data/lib/datastax_rails/cql/column_family.rb +11 -10
- data/lib/datastax_rails/cql/consistency.rb +2 -2
- data/lib/datastax_rails/cql/create_column_family.rb +15 -15
- data/lib/datastax_rails/cql/create_index.rb +5 -5
- data/lib/datastax_rails/cql/create_keyspace.rb +7 -7
- data/lib/datastax_rails/cql/delete.rb +16 -29
- data/lib/datastax_rails/cql/drop_column_family.rb +2 -2
- data/lib/datastax_rails/cql/drop_index.rb +2 -2
- data/lib/datastax_rails/cql/drop_keyspace.rb +2 -2
- data/lib/datastax_rails/cql/insert.rb +10 -16
- data/lib/datastax_rails/cql/select.rb +21 -33
- data/lib/datastax_rails/cql/truncate.rb +2 -2
- data/lib/datastax_rails/cql/update.rb +16 -24
- data/lib/datastax_rails/cql/use_keyspace.rb +2 -2
- data/lib/datastax_rails/cql.rb +2 -2
- data/lib/datastax_rails/dynamic_model.rb +32 -29
- data/lib/datastax_rails/errors.rb +6 -6
- data/lib/datastax_rails/grouped_collection.rb +3 -3
- data/lib/datastax_rails/inheritance.rb +9 -9
- data/lib/datastax_rails/payload_model.rb +24 -20
- data/lib/datastax_rails/persistence.rb +116 -110
- data/lib/datastax_rails/railtie.rb +7 -7
- data/lib/datastax_rails/reflection.rb +61 -59
- data/lib/datastax_rails/relation/batches.rb +12 -13
- data/lib/datastax_rails/relation/facet_methods.rb +44 -33
- data/lib/datastax_rails/relation/finder_methods.rb +95 -91
- data/lib/datastax_rails/relation/modification_methods.rb +5 -5
- data/lib/datastax_rails/relation/search_methods.rb +102 -102
- data/lib/datastax_rails/relation/spawn_methods.rb +25 -24
- data/lib/datastax_rails/relation/stats_methods.rb +9 -8
- data/lib/datastax_rails/relation.rb +165 -170
- data/lib/datastax_rails/rsolr_client_wrapper.rb +3 -3
- data/lib/datastax_rails/schema/cassandra.rb +44 -43
- data/lib/datastax_rails/schema/migrator.rb +52 -52
- data/lib/datastax_rails/schema/solr.rb +55 -47
- data/lib/datastax_rails/schema_cache.rb +1 -3
- data/lib/datastax_rails/scoping/default.rb +2 -3
- data/lib/datastax_rails/scoping/named.rb +3 -5
- data/lib/datastax_rails/scoping.rb +11 -12
- data/lib/datastax_rails/serialization.rb +34 -31
- data/lib/datastax_rails/serializers/xml_serializer.rb +178 -175
- data/lib/datastax_rails/timestamps.rb +4 -4
- data/lib/datastax_rails/types/dirty_collection.rb +57 -57
- data/lib/datastax_rails/types/dynamic_list.rb +1 -1
- data/lib/datastax_rails/types/dynamic_map.rb +5 -7
- data/lib/datastax_rails/types/dynamic_set.rb +2 -2
- data/lib/datastax_rails/util/solr_repair.rb +3 -3
- data/lib/datastax_rails/validations/associated.rb +8 -6
- data/lib/datastax_rails/validations/uniqueness.rb +8 -8
- data/lib/datastax_rails/validations.rb +9 -10
- data/lib/datastax_rails/version.rb +2 -1
- data/lib/datastax_rails/wide_storage_model.rb +6 -6
- data/lib/datastax_rails.rb +13 -9
- data/lib/schema_migration.rb +3 -3
- data/spec/datastax_rails/associations/belongs_to_association_spec.rb +2 -2
- data/spec/datastax_rails/associations/collection_association_spec.rb +14 -14
- data/spec/datastax_rails/associations/has_many_association_spec.rb +20 -20
- data/spec/datastax_rails/associations_spec.rb +11 -11
- data/spec/datastax_rails/attribute_methods_spec.rb +25 -25
- data/spec/datastax_rails/base_spec.rb +24 -24
- data/spec/datastax_rails/callbacks_spec.rb +21 -21
- data/spec/datastax_rails/column_spec.rb +133 -132
- data/spec/datastax_rails/connection/statement_cache_spec.rb +2 -2
- data/spec/datastax_rails/cql/base_spec.rb +4 -4
- data/spec/datastax_rails/cql/delete_spec.rb +19 -0
- data/spec/datastax_rails/cql/select_spec.rb +8 -8
- data/spec/datastax_rails/cql/update_spec.rb +8 -10
- data/spec/datastax_rails/dynamic_model_spec.rb +36 -22
- data/spec/datastax_rails/inheritance_spec.rb +11 -14
- data/spec/datastax_rails/persistence_spec.rb +73 -74
- data/spec/datastax_rails/relation/batches_spec.rb +13 -13
- data/spec/datastax_rails/relation/facet_methods_spec.rb +43 -35
- data/spec/datastax_rails/relation/finder_methods_spec.rb +77 -78
- data/spec/datastax_rails/relation/modification_methods_spec.rb +19 -19
- data/spec/datastax_rails/relation/search_methods_spec.rb +160 -160
- data/spec/datastax_rails/relation/spawn_methods_spec.rb +18 -18
- data/spec/datastax_rails/relation_spec.rb +119 -116
- data/spec/datastax_rails/schema/migrator_spec.rb +30 -30
- data/spec/datastax_rails/schema/solr_spec.rb +15 -15
- data/spec/datastax_rails/scoping/default_spec.rb +9 -9
- data/spec/datastax_rails/types/dynamic_list_spec.rb +12 -12
- data/spec/datastax_rails/types/dynamic_map_spec.rb +10 -10
- data/spec/datastax_rails/types/dynamic_set_spec.rb +22 -10
- data/spec/datastax_rails/validations/uniqueness_spec.rb +25 -25
- data/spec/datastax_rails/wide_storage_model_spec.rb +11 -0
- data/spec/datastax_rails_spec.rb +2 -2
- data/spec/dummy/config/application.rb +2 -3
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environments/development.rb +3 -3
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -1
- data/spec/dummy/config/initializers/wrap_parameters.rb +1 -1
- data/spec/factories/audit_logs.rb +6 -0
- data/spec/factories/hobbies.rb +6 -0
- data/spec/factories/people.rb +5 -0
- data/spec/feature/dynamic_fields_spec.rb +4 -4
- data/spec/feature/overloaded_tables_spec.rb +11 -12
- data/spec/spec_helper.rb +17 -14
- data/spec/support/datastax_test_hook.rb +2 -2
- data/spec/support/default_consistency_shared_examples.rb +11 -11
- data/spec/support/models.rb +31 -32
- metadata +40 -6
- data/lib/datastax_rails/attribute_methods/before_type_cast.rb +0 -71
- data/lib/datastax_rails/log_subscriber.rb +0 -0
- data/spec/dummy/ks/migrate/20111117224534_models.rb +0 -20
@@ -2,33 +2,33 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe DatastaxRails::Schema::Solr do
|
4
4
|
subject do
|
5
|
-
DatastaxRails::Schema::Migrator.new('datastax_rails_test').tap{|m| m.verbose = false}
|
5
|
+
DatastaxRails::Schema::Migrator.new('datastax_rails_test').tap { |m| m.verbose = false }
|
6
6
|
end
|
7
|
-
|
8
|
-
describe
|
9
|
-
it
|
7
|
+
|
8
|
+
describe '#reindex_solr' do
|
9
|
+
it 'calls curl to post the reindex command' do
|
10
10
|
url = "#{DatastaxRails::Base.solr_base_url}/admin/cores?action=RELOAD&name=datastax_rails_test.people&reindex=true&deleteAll=false"
|
11
11
|
expect(subject).to receive(:`).with("curl -s -X POST '#{url}'")
|
12
12
|
subject.reindex_solr(Person)
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
16
|
-
describe
|
17
|
-
it
|
15
|
+
|
16
|
+
describe '#create_solr_core' do
|
17
|
+
it 'calls curl to post the solr create core command' do
|
18
18
|
url = "#{DatastaxRails::Base.solr_base_url}/admin/cores?action=CREATE&name=datastax_rails_test.people"
|
19
19
|
expect(subject).to receive(:`).with("curl -s -X POST '#{url}'")
|
20
20
|
subject.create_solr_core(Person)
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
24
|
-
describe
|
25
|
-
it
|
26
|
-
model =
|
23
|
+
|
24
|
+
describe '#generate_solr_schema' do
|
25
|
+
it 'uses a custom config if one is present' do
|
26
|
+
model = double('Article', :column_family => 'articles', :name => 'Article', :attribute_definitions => {}, :primary_key => 'id', :<= => false)
|
27
27
|
expect(subject.generate_solr_schema(model)).to match(/This is my custom schema/)
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
describe
|
32
|
-
|
30
|
+
|
31
|
+
describe '#upload_solr_configuration' do
|
32
|
+
|
33
33
|
end
|
34
|
-
end
|
34
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper.rb'
|
2
2
|
|
3
3
|
describe DatastaxRails::Base do
|
4
|
-
context
|
5
|
-
context
|
6
|
-
it
|
7
|
-
Boat.create(:
|
8
|
-
Boat.create(:
|
9
|
-
Boat.create(:
|
10
|
-
Boat.create(:
|
4
|
+
context 'Scoping' do
|
5
|
+
context 'Default' do
|
6
|
+
it 'applies the default scope' do
|
7
|
+
Boat.create(name: 'WindDancer', registration: 1)
|
8
|
+
Boat.create(name: 'Misty', registration: 2)
|
9
|
+
Boat.create(name: 'Voyager', registration: 3)
|
10
|
+
Boat.create(name: 'Aquacadabra', registration: 4)
|
11
11
|
Boat.commit_solr
|
12
|
-
|
13
|
-
Boat.where(:
|
12
|
+
|
13
|
+
expect(Boat.where(registration: [1, 2, 3, 4]).map(&:name)).to eq(%w(Aquacadabra Misty Voyager WindDancer))
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DatastaxRails::Types::DynamicList do
|
4
|
-
subject {described_class.new(double(
|
5
|
-
|
4
|
+
subject { described_class.new(double('record', changed_attributes: {}, attributes: {}), 'list', []) }
|
5
|
+
|
6
6
|
before(:each) do
|
7
|
-
subject <<
|
8
|
-
subject <<
|
9
|
-
subject <<
|
7
|
+
subject << 'Test String 1'
|
8
|
+
subject << 'Another Test String'
|
9
|
+
subject << 'Test String 1'
|
10
10
|
end
|
11
|
-
|
12
|
-
it {
|
11
|
+
|
12
|
+
it { is_expected.to eq(['Test String 1', 'Another Test String', 'Test String 1']) }
|
13
13
|
its('record.changed_attributes') { should include('list' => []) }
|
14
|
-
its('record.attributes') { should include('list' => [
|
15
|
-
|
16
|
-
it
|
17
|
-
subject[1] =
|
18
|
-
subject.
|
14
|
+
its('record.attributes') { should include('list' => ['Test String 1', 'Another Test String', 'Test String 1']) }
|
15
|
+
|
16
|
+
it 'preserves ordering' do
|
17
|
+
subject[1] = 'Test String 2'
|
18
|
+
expect(subject).to eq(['Test String 1', 'Test String 2', 'Test String 1'])
|
19
19
|
end
|
20
20
|
end
|
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DatastaxRails::Types::DynamicMap do
|
4
|
-
subject {described_class.new(double(
|
5
|
-
|
4
|
+
subject { described_class.new(double('record', changed_attributes: {}, attributes: {}), 'map', {}) }
|
5
|
+
|
6
6
|
before(:each) do
|
7
|
-
subject['mapkey'] =
|
7
|
+
subject['mapkey'] = 'Test String'
|
8
8
|
end
|
9
|
-
|
10
|
-
its(['mapkey']) { should eq(
|
9
|
+
|
10
|
+
its(['mapkey']) { should eq('Test String') }
|
11
11
|
its('record.changed_attributes') { should include('map' => {}) }
|
12
|
-
its('record.attributes') { should include('map' => {'mapkey' => 'Test String'})}
|
13
|
-
|
14
|
-
it
|
12
|
+
its('record.attributes') { should include('map' => { 'mapkey' => 'Test String' }) }
|
13
|
+
|
14
|
+
it 'automatically maps key names when setting values' do
|
15
15
|
subject['test'] = 'Test String'
|
16
16
|
expect(subject).to have_key('maptest')
|
17
17
|
end
|
18
|
-
|
19
|
-
it
|
18
|
+
|
19
|
+
it 'automatically maps key names when reading values' do
|
20
20
|
expect(subject['key']).to eq('Test String')
|
21
21
|
end
|
22
22
|
end
|
@@ -1,16 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DatastaxRails::Types::DynamicSet do
|
4
|
-
|
5
|
-
|
4
|
+
let(:set) { described_class.new(double('record', changed_attributes: {}, attributes: {}), 'set', []) }
|
5
|
+
subject { set }
|
6
6
|
before(:each) do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
set << 'Test String 1'
|
8
|
+
set << 'Another Test String'
|
9
|
+
set.add('Test String 1')
|
10
|
+
set << nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it { is_expected.to eq(Set.new(['Test String 1', 'Another Test String', nil])) }
|
14
|
+
its('record.changed_attributes') { is_expected.to include('set' => Set.new) }
|
15
|
+
its('record.attributes') { is_expected.to include('set' => Set.new(['Test String 1', 'Another Test String', nil])) }
|
16
|
+
|
17
|
+
context 'updating an existing record' do
|
18
|
+
subject { FactoryGirl.build_stubbed(:person, email_addresses: Set.new(['john@example.com'])) }
|
19
|
+
|
20
|
+
before do
|
21
|
+
subject.changed_attributes.clear
|
22
|
+
subject.email_addresses << 'john@compuserve.com'
|
23
|
+
end
|
24
|
+
|
25
|
+
it { is_expected.to be_changed }
|
26
|
+
its(:changed_attributes) { is_expected.to include('email_addresses' => Set.new(['john@example.com'])) }
|
11
27
|
end
|
12
|
-
|
13
|
-
it { should eq(Set.new(["Test String 1", "Another Test String", nil]))}
|
14
|
-
its('record.changed_attributes') { should include('set' => Set.new) }
|
15
|
-
its('record.attributes') { should include('set' => Set.new(["Test String 1", "Another Test String", nil]))}
|
16
28
|
end
|
@@ -1,43 +1,43 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DatastaxRails::Base do
|
4
|
-
describe
|
5
|
-
it
|
4
|
+
describe 'uniqueness validation' do
|
5
|
+
it 'should validate uniqueness' do
|
6
6
|
Person.commit_solr
|
7
|
-
Person.create!(:
|
7
|
+
Person.create!(name: 'Jason')
|
8
8
|
Person.commit_solr
|
9
9
|
Person.commit_solr
|
10
|
-
person = Person.new(:
|
11
|
-
person.
|
12
|
-
person.name =
|
13
|
-
person.
|
10
|
+
person = Person.new(name: 'Jason')
|
11
|
+
expect(person).not_to be_valid
|
12
|
+
person.name = 'John'
|
13
|
+
expect(person).to be_valid
|
14
14
|
end
|
15
|
-
|
16
|
-
it
|
15
|
+
|
16
|
+
it 'should allow an update to a model without triggering a uniqueness error' do
|
17
17
|
Person.commit_solr
|
18
|
-
p=Person.create!(:
|
18
|
+
p = Person.create!(name: 'Jason', birthdate: Date.strptime('10/19/1985', '%m/%d/%Y'))
|
19
19
|
Person.commit_solr
|
20
|
-
p.birthdate = Date.strptime(
|
20
|
+
p.birthdate = Date.strptime('10/19/1980', '%m/%d/%Y')
|
21
21
|
p.save!
|
22
22
|
end
|
23
|
-
|
24
|
-
it
|
25
|
-
j = Job.new(:
|
26
|
-
j.
|
23
|
+
|
24
|
+
it 'should not break when negative numbers are entered' do
|
25
|
+
j = Job.new(title: 'Mouseketeer', position_number: -1)
|
26
|
+
expect(j).to be_valid
|
27
27
|
end
|
28
|
-
|
29
|
-
it
|
30
|
-
Job.create!(:
|
28
|
+
|
29
|
+
it 'should not enforce uniqueness of blanks if specified' do
|
30
|
+
Job.create!(title: 'Engineer')
|
31
31
|
Job.commit_solr
|
32
|
-
j = Job.new(:
|
33
|
-
j.
|
32
|
+
j = Job.new(title: 'Analyst')
|
33
|
+
expect(j).to be_valid
|
34
34
|
end
|
35
|
-
|
36
|
-
it
|
37
|
-
Boat.create!(:
|
35
|
+
|
36
|
+
it 'should enforce uniqueness of blanks if not instructed otherwise' do
|
37
|
+
Boat.create!(name: nil)
|
38
38
|
Boat.commit_solr
|
39
|
-
b=Boat.new
|
40
|
-
b.
|
39
|
+
b = Boat.new
|
40
|
+
expect(b).not_to be_valid
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DatastaxRails::WideStorageModel do
|
4
|
+
subject { build_stubbed(:audit_log) }
|
5
|
+
|
6
|
+
context '#id_for_update' do
|
7
|
+
subject { super().id_for_update }
|
8
|
+
it { is_expected.to have_key('uuid') }
|
9
|
+
it { is_expected.to have_key('created_at') }
|
10
|
+
end
|
11
|
+
end
|
data/spec/datastax_rails_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('../boot', __FILE__)
|
|
3
3
|
require 'active_model/railtie'
|
4
4
|
|
5
5
|
Bundler.require
|
6
|
-
require
|
6
|
+
require 'datastax_rails'
|
7
7
|
|
8
8
|
module Dummy
|
9
9
|
class Application < Rails::Application
|
@@ -30,7 +30,7 @@ module Dummy
|
|
30
30
|
# config.i18n.default_locale = :de
|
31
31
|
|
32
32
|
# Configure the default encoding used in templates for Ruby 1.9.
|
33
|
-
config.encoding =
|
33
|
+
config.encoding = 'utf-8'
|
34
34
|
|
35
35
|
# Configure sensitive parameters which will be filtered from the log file.
|
36
36
|
config.filter_parameters += [:password]
|
@@ -42,4 +42,3 @@ module Dummy
|
|
42
42
|
config.assets.version = '1.0'
|
43
43
|
end
|
44
44
|
end
|
45
|
-
|
data/spec/dummy/config/boot.rb
CHANGED
@@ -5,15 +5,15 @@ Dummy::Application.configure do
|
|
5
5
|
# every request. This slows down response time but is perfect for development
|
6
6
|
# since you don't have to restart the web server when you make code changes.
|
7
7
|
config.cache_classes = false
|
8
|
-
|
8
|
+
|
9
9
|
config.eager_load = false
|
10
10
|
|
11
11
|
# Show full error reports and disable caching
|
12
12
|
config.consider_all_requests_local = true
|
13
|
-
#config.action_controller.perform_caching = false
|
13
|
+
# config.action_controller.perform_caching = false
|
14
14
|
|
15
15
|
# Don't care if the mailer can't send
|
16
|
-
#config.action_mailer.raise_delivery_errors = false
|
16
|
+
# config.action_mailer.raise_delivery_errors = false
|
17
17
|
|
18
18
|
# Print deprecation notices to the Rails logger
|
19
19
|
config.active_support.deprecation = :log
|
@@ -11,7 +11,7 @@ Dummy::Application.configure do
|
|
11
11
|
|
12
12
|
# Configure static asset server for tests with Cache-Control for performance
|
13
13
|
config.serve_static_assets = true
|
14
|
-
config.static_cache_control =
|
14
|
+
config.static_cache_control = 'public, max-age=3600'
|
15
15
|
|
16
16
|
# Show full error reports and disable caching
|
17
17
|
config.consider_all_requests_local = true
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Be sure to restart your server when you modify this file.
|
2
2
|
|
3
|
-
Dummy::Application.config.session_store :cookie_store, :
|
3
|
+
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
|
4
4
|
|
5
5
|
# Use the database for sessions instead of the cookie-based default,
|
6
6
|
# which shouldn't be used to store highly confidential information
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
7
7
|
ActiveSupport.on_load(:action_controller) do
|
8
|
-
wrap_parameters :
|
8
|
+
wrap_parameters format: [:json]
|
9
9
|
end
|
10
10
|
|
11
11
|
# Disable root element in JSON by default.
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
feature
|
4
|
-
scenario
|
5
|
-
Person.create!(:
|
3
|
+
feature 'Dynamic Fields' do
|
4
|
+
scenario 'map entries dynamically populate solr fields' do
|
5
|
+
Person.create!(name: 'Steve', str_: { 'str_favorite_color' => 'blue' })
|
6
6
|
Person.commit_solr
|
7
|
-
expect(Person.where(:
|
7
|
+
expect(Person.where(str_favorite_color: 'blue').entries.size).to eq(1)
|
8
8
|
end
|
9
9
|
end
|
@@ -1,24 +1,23 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
feature
|
4
|
-
scenario
|
3
|
+
feature 'Table Overloads' do
|
4
|
+
scenario 'models writing to the same column family do not collide' do
|
5
5
|
core_meta = CoreMetadata.new
|
6
|
-
core_meta.strings[:source] =
|
7
|
-
core_meta.strings[:author] =
|
6
|
+
core_meta.strings[:source] = 'BBC'
|
7
|
+
core_meta.strings[:author] = 'John'
|
8
8
|
core_meta.timestamps[:published_at] = Time.now
|
9
9
|
core_meta.save
|
10
|
-
|
10
|
+
|
11
11
|
team_meta = TeamMetadata.new
|
12
12
|
team_meta.id = core_meta.id
|
13
|
-
team_meta.strings[:source] =
|
13
|
+
team_meta.strings[:source] = 'TV'
|
14
14
|
team_meta.strings[:medium] = 'television'
|
15
15
|
team_meta.dates[:published_on] = Date.today
|
16
16
|
team_meta.save
|
17
|
-
|
17
|
+
|
18
18
|
CoreMetadata.commit_solr
|
19
|
-
|
20
|
-
|
21
|
-
expect(CoreMetadata.fulltext('
|
22
|
-
expect(CoreMetadata.fulltext('TV')).to have(0).entries
|
19
|
+
|
20
|
+
expect(CoreMetadata.fulltext('BBC').entries.size).to eq(1)
|
21
|
+
expect(CoreMetadata.fulltext('TV').entries.size).to eq(0)
|
23
22
|
end
|
24
|
-
end
|
23
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,42 +1,45 @@
|
|
1
1
|
# configure Rails Envinronment
|
2
|
-
ENV[
|
3
|
-
require File.expand_path(
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
4
4
|
|
5
5
|
require 'rspec/rails'
|
6
|
+
require 'rspec/its'
|
7
|
+
require 'factory_girl_rails'
|
6
8
|
|
7
|
-
ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
|
9
|
+
ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
|
8
10
|
|
9
11
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
10
12
|
# in spec/support/ and its subdirectories.
|
11
|
-
Dir[File.expand_path(File.join(ENGINE_RAILS_ROOT,
|
13
|
+
Dir[File.expand_path(File.join(ENGINE_RAILS_ROOT, 'spec/support/**/*.rb'))].each { |f| require f }
|
12
14
|
|
13
15
|
RSpec.configure do |config|
|
16
|
+
config.include FactoryGirl::Syntax::Methods
|
17
|
+
|
14
18
|
config.alias_it_should_behave_like_to :it_has_behavior, 'has behavior:'
|
15
|
-
|
19
|
+
|
16
20
|
# Use a focus tag to filter specific specs. This helps if you need to
|
17
21
|
# focus on one spec instead of the whole suite.
|
18
22
|
config.filter_run focus: true
|
19
23
|
config.run_all_when_everything_filtered = true
|
20
|
-
|
24
|
+
|
21
25
|
# Filter slow specs. Add a :slow tag to the spec to keep it from
|
22
26
|
# running unless the SLOW_SPECS environment variable is set.
|
23
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
24
27
|
# config.filter_run_excluding :slow unless ENV['SLOW_SPECS']
|
25
|
-
|
28
|
+
|
26
29
|
config.before(:each) do
|
27
30
|
DatastaxRails::Base.recorded_classes = {}
|
28
31
|
DatastaxRails::Base.statement_cache.clear
|
29
32
|
end
|
30
|
-
|
33
|
+
|
31
34
|
config.after(:each) do
|
32
35
|
DatastaxRails::Base.recorded_classes.keys.each do |klass|
|
33
|
-
DatastaxRails::Base.connection.execute("TRUNCATE #{klass.column_family
|
36
|
+
DatastaxRails::Base.connection.execute("TRUNCATE #{klass.column_family}")
|
34
37
|
end
|
35
38
|
end
|
36
|
-
|
39
|
+
|
37
40
|
# config.after(:all) do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
+
# DatastaxRails::Base.models.each do |m|
|
42
|
+
# DatastaxRails::Cql::Truncate.new(m).execute
|
43
|
+
# end
|
41
44
|
# end
|
42
45
|
end
|