opium 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,61 +3,61 @@ require 'spec_helper.rb'
3
3
  describe Opium::Model::Persistable do
4
4
  let( :model ) { Class.new { include Opium::Model::Persistable } }
5
5
 
6
- describe 'in a model' do
6
+ context 'within a model' do
7
7
  subject { model }
8
8
 
9
- it { should respond_to( :destroy_all ).with(1).argument }
10
- it { should respond_to( :delete_all ).with(1).argument }
11
- it { should respond_to( :create, :create! ).with(1).argument }
12
- it { should respond_to( :add_header_to ).with(4).arguments }
13
- it { should respond_to( :added_headers ) }
14
- it { should respond_to( :get_header_for ).with(2).arguments }
9
+ it { is_expected.to respond_to( :destroy_all ).with(1).argument }
10
+ it { is_expected.to respond_to( :delete_all ).with(1).argument }
11
+ it { is_expected.to respond_to( :create, :create! ).with(1).argument }
12
+ it { is_expected.to respond_to( :add_header_to ).with(4).arguments }
13
+ it { is_expected.to respond_to( :added_headers ) }
14
+ it { is_expected.to respond_to( :get_header_for ).with(2).arguments }
15
15
 
16
- describe ':added_headers' do
16
+ describe '.added_headers' do
17
17
  it { subject.added_headers.should be_a( Hash ) }
18
18
  end
19
19
 
20
- describe ':add_header_to' do
20
+ describe '.add_header_to' do
21
21
  after { subject.added_headers.clear }
22
22
 
23
23
  it { expect { subject.add_header_to :put, :x_header, 42 }.to_not raise_exception }
24
24
  it { subject.add_header_to(:delete, :x_header, 37, only: :delete).should be_nil }
25
25
 
26
- it 'should add header information to :added_headers' do
26
+ it 'adds header information to :added_headers' do
27
27
  subject.add_header_to( :put, :x_header, 42, except: :update )
28
28
  subject.added_headers.should have_key(:put)
29
29
  subject.added_headers[:put].should include( :header, :value, :options )
30
30
  end
31
31
  end
32
32
 
33
- describe ':get_header_for' do
33
+ describe '.get_header_for' do
34
34
  after { subject.added_headers.clear }
35
35
 
36
- it 'should return an empty hash if a method has no added headers' do
36
+ it 'returns an empty hash if a method has no added headers' do
37
37
  subject.get_header_for( :put, :update ).should == {}
38
38
  end
39
39
 
40
- it 'should return an empty hash if a context is not within the only list for a method' do
40
+ it 'returns an empty hash if a context is not within the only list for a method' do
41
41
  subject.add_header_to( :put, :x_header, 42, only: [:foo, :bar] )
42
42
  subject.get_header_for( :put, :baz ).should == {}
43
43
  end
44
44
 
45
- it 'should return an empty hash if a context is within the except list for a method' do
45
+ it 'returns an empty hash if a context is within the except list for a method' do
46
46
  subject.add_header_to( :put, :x_header, 42, except: [:foo, :bar] )
47
47
  subject.get_header_for( :put, :foo ).should == {}
48
48
  end
49
49
 
50
- it 'should return a headers hash if context-free' do
50
+ it 'returns a headers hash if context-free' do
51
51
  subject.add_header_to( :put, :x_header, 42 )
52
52
  subject.get_header_for( :put, :update ).should == { headers: { x_header: 42 } }
53
53
  end
54
54
 
55
- it 'should return a headers hash if a context is within the only list for a method' do
55
+ it 'returns a headers hash if a context is within the only list for a method' do
56
56
  subject.add_header_to( :put, :x_header, 42, only: :update )
57
57
  subject.get_header_for( :put, :update ).should == { headers: { x_header: 42 } }
58
58
  end
59
59
 
60
- it 'should return a headers hash if a context is not within the except list for a method' do
60
+ it 'returns a headers hash if a context is not within the except list for a method' do
61
61
  subject.add_header_to( :put, :x_header, 42, except: :foo )
62
62
  subject.get_header_for( :put, :update ).should == { headers: { x_header: 42 } }
63
63
  end
@@ -67,17 +67,18 @@ describe Opium::Model::Persistable do
67
67
  describe 'instance' do
68
68
  subject { model.new }
69
69
 
70
- it { should respond_to( :save ).with(1).argument }
71
- it { should respond_to( :save! ).with(0).arguments }
72
- it { should respond_to( :update_attributes, :update_attributes! ).with(1).argument }
73
- it { should respond_to( :touch ) }
74
- it { should respond_to( :destroy ) }
75
- it { should respond_to( :delete ) }
76
- it { should respond_to( :new_record?, :persisted? ) }
77
- it { should respond_to( :pointer, :to_parse ) }
70
+ it { is_expected.to respond_to( :save ).with(1).argument }
71
+ it { is_expected.to respond_to( :save! ).with(0).arguments }
72
+ it { is_expected.to respond_to( :update_attributes, :update_attributes! ).with(1).argument }
73
+ it { is_expected.to respond_to( :update, :update! ).with(1).argument }
74
+ it { is_expected.to respond_to( :touch ) }
75
+ it { is_expected.to respond_to( :destroy ) }
76
+ it { is_expected.to respond_to( :delete ) }
77
+ it { is_expected.to respond_to( :new_record?, :persisted? ) }
78
+ it { is_expected.to respond_to( :pointer, :to_parse ) }
78
79
  end
79
80
 
80
- describe 'within a model' do
81
+ context 'within a model' do
81
82
  before do
82
83
  stub_const( 'Game', Class.new do
83
84
  include Opium::Model
@@ -93,7 +94,7 @@ describe Opium::Model::Persistable do
93
94
  Opium::Model::Criteria.models.clear
94
95
  end
95
96
 
96
- describe ':new_record?' do
97
+ describe '#new_record?' do
97
98
  subject { Game.new }
98
99
 
99
100
  it 'should be true in a model without an id' do
@@ -244,12 +245,12 @@ describe Opium::Model::Persistable do
244
245
  it { expect { subject.save! }.to raise_exception }
245
246
  end
246
247
 
247
- describe 'when saving a model with validates: false' do
248
+ context 'when saving a model with validates: false' do
248
249
  subject { Game.new( title: 'Skyrim' ) }
249
-
250
- it 'should not receive :valid?, but should receive :create' do
250
+
251
+ it 'does not receive :valid?, but does receive :_create' do
251
252
  subject.should_not receive(:valid?)
252
- subject.should receive(:create)
253
+ subject.should receive(:_create)
253
254
  subject.save( validates: false )
254
255
  end
255
256
  end
@@ -356,11 +357,11 @@ describe Opium::Model::Persistable do
356
357
  end
357
358
  end
358
359
 
359
- describe ':to_parse' do
360
+ describe '#to_parse' do
360
361
  subject { Game.new( id: 'abcd1234' ) }
361
362
 
362
- it 'should be a pointer hash' do
363
- subject.to_parse.should == subject.pointer.to_parse
363
+ it 'is a pointer hash' do
364
+ expect( subject.to_parse ).to eq subject.pointer.to_parse
364
365
  end
365
366
  end
366
367
  end
@@ -3,28 +3,28 @@ require 'spec_helper.rb'
3
3
  describe Opium::Model::Queryable do
4
4
  let( :model ) { Class.new { include Opium::Model::Queryable } }
5
5
 
6
- describe 'the class' do
6
+ context 'when included in a class' do
7
7
  subject { model }
8
8
 
9
- it { should respond_to( :all, :all_in ).with(1).argument }
10
- it { should respond_to( :and ).with(1).argument }
11
- it { should respond_to( :between ).with(1).argument }
12
- it { should respond_to( :exists ).with(1).argument }
13
- it { should respond_to( :gt, :gte ).with(1).argument }
14
- it { should respond_to( :lt, :lte ).with(1).argument }
15
- it { should respond_to( :in, :any_in, :nin ).with(1).argument }
16
- it { should respond_to( :ne ).with(1).argument }
17
- it { should respond_to( :or ).with(1).argument }
18
- it { should respond_to( :select, :dont_select ).with(1).argument }
19
- it { should respond_to( :keys, :pluck ).with(1).argument }
20
- it { should respond_to( :where ).with(1).argument }
21
- it { should respond_to( :order ).with(1).argument }
22
- it { should respond_to( :limit, :skip ).with(1).argument }
23
- it { should respond_to( :cache, :uncache, :cached? ) }
24
- it { should respond_to( :count, :total_count ) }
9
+ it { is_expected.to respond_to( :all, :all_in ).with(1).argument }
10
+ it { is_expected.to respond_to( :and ).with(1).argument }
11
+ it { is_expected.to respond_to( :between ).with(1).argument }
12
+ it { is_expected.to respond_to( :exists ).with(1).argument }
13
+ it { is_expected.to respond_to( :gt, :gte ).with(1).argument }
14
+ it { is_expected.to respond_to( :lt, :lte ).with(1).argument }
15
+ it { is_expected.to respond_to( :in, :any_in, :nin ).with(1).argument }
16
+ it { is_expected.to respond_to( :ne ).with(1).argument }
17
+ it { is_expected.to respond_to( :or ).with(1).argument }
18
+ it { is_expected.to respond_to( :select, :dont_select ).with(1).argument }
19
+ it { is_expected.to respond_to( :keys, :pluck ).with(1).argument }
20
+ it { is_expected.to respond_to( :where ).with(1).argument }
21
+ it { is_expected.to respond_to( :order ).with(1).argument }
22
+ it { is_expected.to respond_to( :limit, :skip ).with(1).argument }
23
+ it { is_expected.to respond_to( :cache, :uncache, :cached? ) }
24
+ it { is_expected.to respond_to( :count, :total_count ) }
25
25
  end
26
26
 
27
- describe 'within a model' do
27
+ context 'within a model' do
28
28
  before do
29
29
  stub_const( 'Game', Class.new do
30
30
  include Opium::Model
@@ -43,29 +43,29 @@ describe Opium::Model::Queryable do
43
43
 
44
44
  subject { Game }
45
45
 
46
- describe ':where' do
47
- it 'should return a criteria' do
46
+ describe '.where' do
47
+ it 'returns a criteria' do
48
48
  subject.where( price: { '$lte' => 5 } ).should be_a( Opium::Model::Criteria )
49
49
  end
50
50
 
51
- it 'should set the "where" constraint to the provided value' do
51
+ it 'sets the "where" constraint to the provided value' do
52
52
  subject.where( price: { '$lte' => 5 } ).tap do |criteria|
53
53
  criteria.constraints.should have_key( 'where' )
54
54
  criteria.constraints['where'].should =~ { 'price' => { '$lte' => 5 } }
55
55
  end
56
56
  end
57
57
 
58
- it 'should deep merge the "where" constraint on successive calls' do
58
+ it 'deep merges the "where" constraint on successive calls' do
59
59
  subject.where( price: { '$lte' => 5 } ).where( price: { '$gte' => 1 } ).tap do |criteria|
60
60
  criteria.constraints['where'].should =~ { 'price' => { '$lte' => 5, '$gte' => 1 } }
61
61
  end
62
62
  end
63
63
 
64
- it 'should ensure that specified fields exist on the model' do
64
+ it 'ensures that specified fields exist on the model' do
65
65
  expect { subject.where( does_not_exist: true ) }.to raise_exception
66
66
  end
67
67
 
68
- it 'should map ruby names to parse names and ruby values to parse values' do
68
+ it 'maps ruby names to parse names and ruby values to parse values' do
69
69
  time = Time.now - 1000
70
70
  subject.where( created_at: { '$gte' => time } ).tap do |criteria|
71
71
  criteria.constraints['where'].should =~ { 'createdAt' => { '$gte' => time.to_parse } }
@@ -74,7 +74,7 @@ describe Opium::Model::Queryable do
74
74
  end
75
75
 
76
76
  shared_examples_for 'a chainable criteria clause' do |method|
77
- describe ":#{method}" do
77
+ describe ".#{method}" do
78
78
  it 'should return a criteria' do
79
79
  subject.send( method, price: 5, title: 'Skyrim' ).should be_a( Opium::Model::Criteria )
80
80
  end
@@ -124,6 +124,16 @@ describe Opium::Model::Queryable do
124
124
  it_should_behave_like 'an aliased method', :and, :where
125
125
  it_should_behave_like 'an aliased method', :all_in, :all
126
126
  it_should_behave_like 'an aliased method', :any_in, :in
127
+
128
+ describe '.all' do
129
+ context 'when no parameter is given' do
130
+ let(:result) { subject.all }
131
+
132
+ it { expect { result }.to_not raise_exception }
133
+ it { expect( result ).to be_a Opium::Model::Criteria }
134
+ it { expect( result ).to eq subject.criteria }
135
+ end
136
+ end
127
137
 
128
138
  describe ':exists' do
129
139
  it 'should return a criteria' do
@@ -23,6 +23,7 @@ describe Opium::Model do
23
23
  it { is_expected.to be <= Opium::Model::Scopable }
24
24
  it { is_expected.to be <= Opium::Model::Findable }
25
25
  it { is_expected.to be <= Opium::Model::Inheritable }
26
+ it { is_expected.to be <= Opium::Model::Batchable }
26
27
 
27
28
  describe '#inspect' do
28
29
  context 'within a blank model' do
data/spec/opium_spec.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Opium do
4
- its(:constants) { should include( :Model ) }
4
+ it { expect( described_class.constants ).to include( :Model, :User, :File, :Config ) }
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opium
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Bowers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-28 00:00:00.000000000 Z
11
+ date: 2015-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -220,6 +220,20 @@ dependencies:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0.9'
223
+ - !ruby/object:Gem::Dependency
224
+ name: mimemagic
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.3'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.3'
223
237
  description: Provides an intuitive, Mongoid-inspired mapping layer between your application's
224
238
  object space and Parse.
225
239
  email:
@@ -231,6 +245,7 @@ files:
231
245
  - ".coveralls.yml"
232
246
  - ".gitignore"
233
247
  - ".travis.yml"
248
+ - CHANGELOG.md
234
249
  - Gemfile
235
250
  - Guardfile
236
251
  - LICENSE.txt
@@ -258,10 +273,15 @@ files:
258
273
  - lib/opium/extensions/pointer.rb
259
274
  - lib/opium/extensions/regexp.rb
260
275
  - lib/opium/extensions/string.rb
276
+ - lib/opium/extensions/symbol.rb
261
277
  - lib/opium/extensions/time.rb
262
278
  - lib/opium/extensions/true_class.rb
279
+ - lib/opium/file.rb
263
280
  - lib/opium/model.rb
264
281
  - lib/opium/model/attributable.rb
282
+ - lib/opium/model/batchable.rb
283
+ - lib/opium/model/batchable/batch.rb
284
+ - lib/opium/model/batchable/operation.rb
265
285
  - lib/opium/model/callbacks.rb
266
286
  - lib/opium/model/connectable.rb
267
287
  - lib/opium/model/criteria.rb
@@ -295,8 +315,13 @@ files:
295
315
  - spec/opium/extensions/pointer_spec.rb
296
316
  - spec/opium/extensions/regexp_spec.rb
297
317
  - spec/opium/extensions/string_spec.rb
318
+ - spec/opium/extensions/symbol_spec.rb
298
319
  - spec/opium/extensions/time_spec.rb
320
+ - spec/opium/file_spec.rb
299
321
  - spec/opium/model/attributable_spec.rb
322
+ - spec/opium/model/batchable/batch_spec.rb
323
+ - spec/opium/model/batchable/operation_spec.rb
324
+ - spec/opium/model/batchable_spec.rb
300
325
  - spec/opium/model/callbacks_spec.rb
301
326
  - spec/opium/model/connectable_spec.rb
302
327
  - spec/opium/model/criteria_spec.rb
@@ -327,7 +352,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
352
  requirements:
328
353
  - - ">="
329
354
  - !ruby/object:Gem::Version
330
- version: '0'
355
+ version: 1.9.3
331
356
  required_rubygems_version: !ruby/object:Gem::Requirement
332
357
  requirements:
333
358
  - - ">="
@@ -354,8 +379,13 @@ test_files:
354
379
  - spec/opium/extensions/pointer_spec.rb
355
380
  - spec/opium/extensions/regexp_spec.rb
356
381
  - spec/opium/extensions/string_spec.rb
382
+ - spec/opium/extensions/symbol_spec.rb
357
383
  - spec/opium/extensions/time_spec.rb
384
+ - spec/opium/file_spec.rb
358
385
  - spec/opium/model/attributable_spec.rb
386
+ - spec/opium/model/batchable/batch_spec.rb
387
+ - spec/opium/model/batchable/operation_spec.rb
388
+ - spec/opium/model/batchable_spec.rb
359
389
  - spec/opium/model/callbacks_spec.rb
360
390
  - spec/opium/model/connectable_spec.rb
361
391
  - spec/opium/model/criteria_spec.rb