cequel 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,12 +2,13 @@
2
2
  require File.expand_path('../../spec_helper', __FILE__)
3
3
 
4
4
  describe Cequel::Schema::TableSynchronizer do
5
+ let(:table_name) { :"posts_#{SecureRandom.hex(4)}" }
5
6
 
6
- let(:table) { cequel.schema.read_table(:posts) }
7
+ let(:table) { cequel.schema.read_table(table_name) }
7
8
 
8
9
  context 'with no existing table' do
9
10
  before do
10
- cequel.schema.sync_table :posts do
11
+ cequel.schema.sync_table table_name do
11
12
  key :blog_subdomain, :text
12
13
  key :permalink, :text
13
14
  column :title, :text
@@ -18,7 +19,7 @@ describe Cequel::Schema::TableSynchronizer do
18
19
  end
19
20
  end
20
21
 
21
- after { cequel.schema.drop_table(:posts) }
22
+ after { cequel.schema.drop_table(table_name) }
22
23
 
23
24
  it 'should create table' do
24
25
  expect(table.column(:title).type).to eq(Cequel::Type[:text]) #etc.
@@ -27,7 +28,7 @@ describe Cequel::Schema::TableSynchronizer do
27
28
 
28
29
  context 'with an existing table' do
29
30
  before do
30
- cequel.schema.create_table :posts do
31
+ cequel.schema.create_table table_name do
31
32
  key :blog_subdomain, :text
32
33
  key :permalink, :text
33
34
  column :title, :ascii, :index => true
@@ -38,12 +39,12 @@ describe Cequel::Schema::TableSynchronizer do
38
39
  end
39
40
  end
40
41
 
41
- after { cequel.schema.drop_table(:posts) }
42
+ after { cequel.schema.drop_table(table_name) }
42
43
 
43
44
  context 'with valid changes' do
44
45
 
45
46
  before do
46
- cequel.schema.sync_table :posts do
47
+ cequel.schema.sync_table table_name do
47
48
  key :blog_subdomain, :text
48
49
  key :post_permalink, :text
49
50
  column :title, :ascii
@@ -95,7 +96,7 @@ describe Cequel::Schema::TableSynchronizer do
95
96
 
96
97
  it 'should not allow changing type of key' do
97
98
  expect {
98
- cequel.schema.sync_table :posts do
99
+ cequel.schema.sync_table table_name do
99
100
  key :blog_subdomain, :text
100
101
  key :permalink, :ascii
101
102
  column :title, :ascii
@@ -109,7 +110,7 @@ describe Cequel::Schema::TableSynchronizer do
109
110
 
110
111
  it 'should not allow adding a key' do
111
112
  expect {
112
- cequel.schema.sync_table :posts do
113
+ cequel.schema.sync_table table_name do
113
114
  key :blog_subdomain, :text
114
115
  key :permalink, :text
115
116
  key :year, :int
@@ -124,7 +125,7 @@ describe Cequel::Schema::TableSynchronizer do
124
125
 
125
126
  it 'should not allow removing a key' do
126
127
  expect {
127
- cequel.schema.sync_table :posts do
128
+ cequel.schema.sync_table table_name do
128
129
  key :blog_subdomain, :text
129
130
  column :title, :ascii
130
131
  column :body, :text
@@ -137,7 +138,7 @@ describe Cequel::Schema::TableSynchronizer do
137
138
 
138
139
  it 'should not allow changing the partition status of a key' do
139
140
  expect {
140
- cequel.schema.sync_table :posts do
141
+ cequel.schema.sync_table table_name do
141
142
  key :blog_subdomain, :text
142
143
  partition_key :permalink, :text
143
144
  column :title, :ascii
@@ -151,7 +152,7 @@ describe Cequel::Schema::TableSynchronizer do
151
152
 
152
153
  it 'should not allow changing the data structure of a column' do
153
154
  expect {
154
- cequel.schema.sync_table :posts do
155
+ cequel.schema.sync_table table_name do
155
156
  key :blog_subdomain, :text
156
157
  key :permalink, :text
157
158
  column :title, :ascii
@@ -165,7 +166,7 @@ describe Cequel::Schema::TableSynchronizer do
165
166
 
166
167
  it 'should not allow invalid type transitions of a data column' do
167
168
  expect {
168
- cequel.schema.sync_table :posts do
169
+ cequel.schema.sync_table table_name do
169
170
  key :blog_subdomain, :text
170
171
  key :permalink, :text
171
172
  column :title, :ascii, :index => true
@@ -179,7 +180,7 @@ describe Cequel::Schema::TableSynchronizer do
179
180
 
180
181
  it 'should not allow changing clustering order' do
181
182
  expect {
182
- cequel.schema.sync_table :posts do
183
+ cequel.schema.sync_table table_name do
183
184
  key :blog_subdomain, :text
184
185
  key :permalink, :text, :desc
185
186
  column :title, :ascii, :index => true
@@ -2,8 +2,10 @@
2
2
  require File.expand_path('../../spec_helper', __FILE__)
3
3
 
4
4
  describe Cequel::Schema::TableUpdater do
5
+ let(:table_name) { :"posts_#{SecureRandom.hex(4)}" }
6
+
5
7
  before do
6
- cequel.schema.create_table(:posts) do
8
+ cequel.schema.create_table(table_name) do
7
9
  key :blog_subdomain, :text
8
10
  key :permalink, :text
9
11
  column :title, :ascii
@@ -11,13 +13,13 @@ describe Cequel::Schema::TableUpdater do
11
13
  end
12
14
  end
13
15
 
14
- after { cequel.schema.drop_table(:posts) }
16
+ after { cequel.schema.drop_table(table_name) }
15
17
 
16
- let(:table) { cequel.schema.read_table(:posts) }
18
+ let(:table) { cequel.schema.read_table(table_name) }
17
19
 
18
20
  describe '#add_column' do
19
21
  before do
20
- cequel.schema.alter_table(:posts) do
22
+ cequel.schema.alter_table(table_name) do
21
23
  add_column :published_at, :timestamp
22
24
  end
23
25
  end
@@ -29,7 +31,7 @@ describe Cequel::Schema::TableUpdater do
29
31
 
30
32
  describe '#add_list' do
31
33
  before do
32
- cequel.schema.alter_table(:posts) do
34
+ cequel.schema.alter_table(table_name) do
33
35
  add_list :author_names, :text
34
36
  end
35
37
  end
@@ -45,7 +47,7 @@ describe Cequel::Schema::TableUpdater do
45
47
 
46
48
  describe '#add_set' do
47
49
  before do
48
- cequel.schema.alter_table(:posts) do
50
+ cequel.schema.alter_table(table_name) do
49
51
  add_set :author_names, :text
50
52
  end
51
53
  end
@@ -61,7 +63,7 @@ describe Cequel::Schema::TableUpdater do
61
63
 
62
64
  describe '#add_map' do
63
65
  before do
64
- cequel.schema.alter_table(:posts) do
66
+ cequel.schema.alter_table(table_name) do
65
67
  add_map :trackbacks, :timestamp, :ascii
66
68
  end
67
69
  end
@@ -83,7 +85,7 @@ describe Cequel::Schema::TableUpdater do
83
85
 
84
86
  describe '#change_column' do
85
87
  before do
86
- cequel.schema.alter_table(:posts) do
88
+ cequel.schema.alter_table(table_name) do
87
89
  change_column :title, :text
88
90
  end
89
91
  end
@@ -95,7 +97,7 @@ describe Cequel::Schema::TableUpdater do
95
97
 
96
98
  describe '#rename_column' do
97
99
  before do
98
- cequel.schema.alter_table(:posts) do
100
+ cequel.schema.alter_table(table_name) do
99
101
  rename_column :permalink, :slug
100
102
  end
101
103
  end
@@ -108,7 +110,7 @@ describe Cequel::Schema::TableUpdater do
108
110
 
109
111
  describe '#change_properties' do
110
112
  before do
111
- cequel.schema.alter_table(:posts) do
113
+ cequel.schema.alter_table(table_name) do
112
114
  change_properties :comment => 'Test Comment'
113
115
  end
114
116
  end
@@ -118,35 +120,36 @@ describe Cequel::Schema::TableUpdater do
118
120
  end
119
121
  end
120
122
 
121
- describe '#add_index' do
123
+ describe '#drop_index' do
122
124
  before do
123
- cequel.schema.alter_table(:posts) do
125
+ tab_name = table_name
126
+ cequel.schema.alter_table(table_name) do
124
127
  create_index :title
128
+ drop_index :"#{tab_name}_title_idx"
125
129
  end
126
130
  end
127
131
 
128
- it 'should add the index' do
129
- expect(table.data_column(:title)).to be_indexed
132
+ it 'should drop the index' do
133
+ expect(table.data_column(:title)).not_to be_indexed
130
134
  end
131
135
  end
132
136
 
133
- describe '#drop_index' do
137
+ describe '#add_index' do
134
138
  before do
135
- cequel.schema.alter_table(:posts) do
139
+ cequel.schema.alter_table(table_name) do
136
140
  create_index :title
137
- drop_index :posts_title_idx
138
141
  end
139
142
  end
140
143
 
141
- it 'should drop the index' do
142
- expect(table.data_column(:title)).not_to be_indexed
144
+ it 'should add the index' do
145
+ expect(table.data_column(:title)).to be_indexed
143
146
  end
144
147
  end
145
148
 
146
149
  describe '#drop_column' do
147
150
  before do
148
151
  pending 'Support in a future Cassandra version'
149
- cequel.schema.alter_table(:posts) do
152
+ cequel.schema.alter_table(table_name) do
150
153
  drop_column :body
151
154
  end
152
155
  end
@@ -2,18 +2,19 @@
2
2
  require File.expand_path('../../spec_helper', __FILE__)
3
3
 
4
4
  describe Cequel::Schema::TableWriter do
5
+ let(:table_name) { :"posts_#{SecureRandom.hex(4)}" }
5
6
 
6
- let(:table) { cequel.schema.read_table(:posts) }
7
+ let(:table) { cequel.schema.read_table(table_name) }
7
8
 
8
9
  describe '#create_table' do
9
10
 
10
11
  after do
11
- cequel.schema.drop_table(:posts)
12
+ cequel.schema.drop_table(table_name)
12
13
  end
13
14
 
14
15
  describe 'with simple skinny table' do
15
16
  before do
16
- cequel.schema.create_table(:posts) do
17
+ cequel.schema.create_table(table_name) do
17
18
  key :permalink, :ascii
18
19
  column :title, :text
19
20
  end
@@ -35,7 +36,7 @@ describe Cequel::Schema::TableWriter do
35
36
 
36
37
  describe 'with multi-column primary key' do
37
38
  before do
38
- cequel.schema.create_table(:posts) do
39
+ cequel.schema.create_table(table_name) do
39
40
  key :blog_subdomain, :ascii
40
41
  key :permalink, :ascii
41
42
  column :title, :text
@@ -61,7 +62,7 @@ describe Cequel::Schema::TableWriter do
61
62
 
62
63
  describe 'with composite partition key' do
63
64
  before do
64
- cequel.schema.create_table(:posts) do
65
+ cequel.schema.create_table(table_name) do
65
66
  partition_key :blog_subdomain, :ascii
66
67
  partition_key :permalink, :ascii
67
68
  column :title, :text
@@ -80,7 +81,7 @@ describe Cequel::Schema::TableWriter do
80
81
 
81
82
  describe 'with composite partition key and non-partition keys' do
82
83
  before do
83
- cequel.schema.create_table(:posts) do
84
+ cequel.schema.create_table(table_name) do
84
85
  partition_key :blog_subdomain, :ascii
85
86
  partition_key :permalink, :ascii
86
87
  key :month, :timestamp
@@ -109,7 +110,7 @@ describe Cequel::Schema::TableWriter do
109
110
 
110
111
  describe 'collection types' do
111
112
  before do
112
- cequel.schema.create_table(:posts) do
113
+ cequel.schema.create_table(table_name) do
113
114
  key :permalink, :ascii
114
115
  column :title, :text
115
116
  list :authors, :blob
@@ -151,7 +152,7 @@ describe Cequel::Schema::TableWriter do
151
152
 
152
153
  describe 'storage properties' do
153
154
  before do
154
- cequel.schema.create_table(:posts) do
155
+ cequel.schema.create_table(table_name) do
155
156
  key :permalink, :ascii
156
157
  column :title, :text
157
158
  with :comment, 'Blog posts'
@@ -175,7 +176,7 @@ describe Cequel::Schema::TableWriter do
175
176
 
176
177
  describe 'compact storage' do
177
178
  before do
178
- cequel.schema.create_table(:posts) do
179
+ cequel.schema.create_table(table_name) do
179
180
  key :permalink, :ascii
180
181
  column :title, :text
181
182
  compact_storage
@@ -189,7 +190,7 @@ describe Cequel::Schema::TableWriter do
189
190
 
190
191
  describe 'clustering order' do
191
192
  before do
192
- cequel.schema.create_table(:posts) do
193
+ cequel.schema.create_table(table_name) do
193
194
  key :blog_permalink, :ascii
194
195
  key :id, :uuid, :desc
195
196
  column :title, :text
@@ -203,7 +204,7 @@ describe Cequel::Schema::TableWriter do
203
204
 
204
205
  describe 'indices' do
205
206
  it 'should create indices' do
206
- cequel.schema.create_table(:posts) do
207
+ cequel.schema.create_table(table_name) do
207
208
  key :blog_permalink, :ascii
208
209
  key :id, :uuid, :desc
209
210
  column :title, :text, :index => true
@@ -212,7 +213,7 @@ describe Cequel::Schema::TableWriter do
212
213
  end
213
214
 
214
215
  it 'should create indices with specified name' do
215
- cequel.schema.create_table(:posts) do
216
+ cequel.schema.create_table(table_name) do
216
217
  key :blog_permalink, :ascii
217
218
  key :id, :uuid, :desc
218
219
  column :title, :text, :index => :silly_idx
@@ -49,6 +49,14 @@ describe Cequel::SpecSupport::Preparation do
49
49
  Cequel::Record.connection.schema.drop!
50
50
  end
51
51
 
52
+ let!(:model) {
53
+ Class.new do
54
+ include Cequel::Record
55
+ self.table_name = "blog_" + SecureRandom.hex(4)
56
+ key :name, :text
57
+ end
58
+ }
59
+
52
60
  it "doesn't cause failure upon drop requests" do
53
61
  expect{ prep.drop_keyspace }.not_to raise_error
54
62
  end
@@ -139,6 +139,14 @@ module Cequel
139
139
  expect(cequel.client).to have_received(:execute).
140
140
  with(matcher, hash_including(:consistency => consistency))
141
141
  end
142
+
143
+ def expect_query_with_options(matcher, options)
144
+ allow(cequel.client).to receive(:execute).and_call_original
145
+ yield
146
+ expect(cequel.client).to have_received(:execute).
147
+ with(matcher, hash_including(options))
148
+ end
149
+
142
150
  end
143
151
  end
144
152
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mat Brown
@@ -29,7 +29,7 @@ authors:
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2015-09-03 00:00:00.000000000 Z
32
+ date: 2016-03-27 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: activemodel
@@ -199,14 +199,12 @@ files:
199
199
  - Appraisals
200
200
  - CHANGELOG.md
201
201
  - CONTRIBUTING.md
202
- - DRIVER_TODO
203
202
  - Gemfile
204
203
  - Gemfile.lock
205
204
  - LICENSE
206
205
  - README.md
207
206
  - Rakefile
208
207
  - Vagrantfile
209
- - cequel.gemspec
210
208
  - lib/cequel.rb
211
209
  - lib/cequel/errors.rb
212
210
  - lib/cequel/instrumentation.rb
@@ -304,7 +302,6 @@ files:
304
302
  - spec/examples/uuids_spec.rb
305
303
  - spec/support/helpers.rb
306
304
  - spec/support/result_stub.rb
307
- - tags
308
305
  - templates/config/cequel.yml
309
306
  - templates/record.rb
310
307
  homepage: https://github.com/cequel/cequel
@@ -328,7 +325,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
328
325
  requirements:
329
326
  - Cassandra >= 2.0.0
330
327
  rubyforge_project:
331
- rubygems_version: 2.4.5
328
+ rubygems_version: 2.2.5
332
329
  signing_key:
333
330
  specification_version: 4
334
331
  summary: Full-featured, ActiveModel-compliant ORM for Cassandra using CQL3
data/DRIVER_TODO DELETED
@@ -1,5 +0,0 @@
1
- * Why is it so slow?
2
- * Use built in batches
3
- * Use built in bind variable replacement
4
- * Use built in pagination(?)
5
- * Use built in retry(?)
data/cequel.gemspec DELETED
@@ -1,42 +0,0 @@
1
- require File.expand_path('../lib/cequel/version', __FILE__)
2
-
3
- Gem::Specification.new do |s|
4
- s.name = 'cequel'
5
- s.version = Cequel::VERSION
6
- s.authors = [
7
- 'Mat Brown', 'Aubrey Holland', 'Keenan Brock', 'Insoo Buzz Jung',
8
- 'Louis Simoneau', 'Peter Williams', 'Kenneth Hoffman', 'Antti Tapio',
9
- 'Ilya Bazylchuk', 'Dan Cardamore', 'Kei Kusakari', 'Oleh Novosad',
10
- 'John Smart', 'Angelo Lakra', 'Olivier Lance', 'Tomohiro Nishimura',
11
- 'Masaki Takahashi', 'G Gordon Worley III', 'Clark Bremer', 'Tamara Temple',
12
- 'Long On', 'Lucas Mundim'
13
- ]
14
- s.homepage = "https://github.com/cequel/cequel"
15
- s.email = 'mat.a.brown@gmail.com'
16
- s.license = 'MIT'
17
- s.summary = 'Full-featured, ActiveModel-compliant ORM for Cassandra using CQL3'
18
- s.description = <<DESC
19
- Cequel is an ActiveRecord-like domain model layer for Cassandra that exposes
20
- the robust data modeling capabilities of CQL3, including parent-child
21
- relationships via compound primary keys and in-memory atomic manipulation of
22
- collection columns.
23
- DESC
24
-
25
- s.files = Dir['lib/**/*.rb', 'templates/**/*', 'spec/**/*.rb', '[A-Z]*']
26
- s.test_files = Dir['spec/examples/**/*.rb']
27
- s.has_rdoc = true
28
- s.extra_rdoc_files = 'README.md'
29
- s.required_ruby_version = '>= 2.0'
30
- s.add_runtime_dependency 'activemodel', '~> 4.0'
31
- s.add_runtime_dependency 'cassandra-driver', '~> 2.0'
32
- s.add_development_dependency 'appraisal', '~> 1.0'
33
- s.add_development_dependency 'wwtd', '~> 0.5'
34
- s.add_development_dependency 'rake', '~> 10.1'
35
- s.add_development_dependency 'rspec', '~> 3.1'
36
- s.add_development_dependency 'rspec-its', '~> 1.0'
37
- s.add_development_dependency 'rubocop', '~> 0.28'
38
- s.add_development_dependency 'timecop', '~> 0.7'
39
- s.add_development_dependency 'travis', '~> 1.7'
40
- s.add_development_dependency 'yard', '~> 0.6'
41
- s.requirements << 'Cassandra >= 2.0.0'
42
- end