mongo_adaptor 0.0.17 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32d24e8595ab068f45ad10271e3a49cc659bdfe2
4
- data.tar.gz: 267ab227bc343562e7a65856863b0a03913eb995
3
+ metadata.gz: 2a962c576b77d36bb59564fa73d92d4edf380cc6
4
+ data.tar.gz: 982bfeab74870bf4738560fd955fc8e200d8a934
5
5
  SHA512:
6
- metadata.gz: 11c3dfa2fc3f05088185b8bed02fa2064de84bb020394cf3e786bbdf547c44ab99e4b4d1e8b32f3708b5990194f78b7f268a08c4683d7a4f4bb3dd21a8168eb3
7
- data.tar.gz: e3a746c3db2d424859461c718247aaf2cbd1b08564daf922b9a8420f04fa82ea82c9b44a900a90c5d23a1b7ead76da1a9759d3bd579c378a598d3933d5e09837
6
+ metadata.gz: 274fbce2383d1ad46b5b4adacee9fecdb22f5aeff66799b784725f6ad6e4ae9689edff12dd78bb3fe0418a79021454a087fc788f18219f65c6acfbbdfda2fcc8
7
+ data.tar.gz: b94804b5b46e3c7619075fe7dddb4d0a607a307d29eba1c64c8abafde606de7800e2dc577e16987ece343150517abd32b3032bc4f6147cf2e0ec3304b1dfc0d1
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
4
- - 2.1.1
3
+ - 2.3.3
4
+ - 2.1.5
5
5
  - 2.0.0
6
6
  - 1.9.3
7
7
  - 1.9.2
@@ -11,3 +11,6 @@ rvm:
11
11
  - 1.8.7
12
12
  - ree
13
13
  services: mongodb
14
+ matrix:
15
+ allow_failures:
16
+ - rvm: rbx-2
data/Gemfile CHANGED
@@ -2,7 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mongo_adaptor.gemspec
4
4
  gemspec
5
-
6
- platform :rbx do
7
- gem 'rubysl'
8
- end
data/lib/mongo_adaptor.rb CHANGED
@@ -19,15 +19,15 @@ class MongoAdaptor
19
19
  end
20
20
 
21
21
  def insert model
22
- @collection.insert process(model), safe_mode
22
+ @collection.insert_one process(model), safe_mode
23
23
  end
24
24
 
25
25
  def upsert model, query = { "_id" => model.id }
26
- @collection.update query, set(process(model)), safe_mode.merge(upsert_mode true)
26
+ @collection.update_one query, set(process(model)), safe_mode.merge(upsert_mode true)
27
27
  end
28
28
 
29
29
  def update model, query = { "_id" => model.id }
30
- @collection.update query, set(process(model)), safe_mode.merge(upsert_mode false)
30
+ @collection.update_one query, set(process(model)), safe_mode.merge(upsert_mode false)
31
31
  end
32
32
 
33
33
  def execute query_or_model, command, options = {}
@@ -36,30 +36,31 @@ class MongoAdaptor
36
36
  else
37
37
  query = { "_id" => query_or_model.id }
38
38
  end
39
- @collection.update query, command, safe_mode.merge(upsert_mode false).merge(options)
39
+ @collection.update_one query, command, safe_mode.merge(upsert_mode false).merge(options)
40
40
  end
41
41
 
42
42
  def fetch selector = {}, opts = {}
43
- @collection.find_one selector, { :fields => fields, :transformer => builder }.merge(opts)
43
+ build(@collection.find(selector, { :fields => fields }.merge(opts)).first)
44
44
  end
45
45
 
46
46
  def remove selector = {}, opts = {}
47
- @collection.remove selector, opts
47
+ @collection.delete_many selector, opts
48
48
  end
49
49
 
50
50
  def find selector = {}, opts = {}
51
- @collection.find selector, { :fields => fields, :transformer => builder }.merge(opts)
51
+ @collection.find(selector, { :fields => fields }.merge(opts)).map do |model|
52
+ build model
53
+ end
52
54
  end
53
55
 
54
56
  private
55
57
 
56
- def builder
57
- proc do |result|
58
- @klass.new.tap do |model|
59
- model[:id] = result.delete('_id') if model.respond_to?(:id)
60
- result.each do |field,value|
61
- model[field] = value if fields.include?(field.to_s)
62
- end
58
+ def build result
59
+ return unless result
60
+ @klass.new.tap do |model|
61
+ model[:id] = result.delete('_id') if model.respond_to?(:id)
62
+ result.each do |field,value|
63
+ model[field] = value if fields.include?(field.to_s)
63
64
  end
64
65
  end
65
66
  end
@@ -1,3 +1,3 @@
1
1
  class MongoAdaptor
2
- VERSION = "0.0.17"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -15,10 +15,9 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = MongoAdaptor::VERSION
17
17
 
18
- gem.add_dependency 'mongo'
19
- gem.add_dependency 'mongo-configure'
18
+ gem.add_dependency 'mongo', '~> 2.4'
19
+ gem.add_dependency 'mongo-configure', '~> 2.0.0'
20
20
 
21
21
  gem.add_development_dependency 'rake'
22
22
  gem.add_development_dependency 'rspec'
23
- gem.add_development_dependency 'rspec-its'
24
23
  end
@@ -1,9 +1,12 @@
1
- require 'rspec/its'
2
1
  require 'mongo_adaptor'
3
2
 
4
3
  describe 'adapting structs into mongo' do
5
- before { Mongo::Configure.from_database 'mongo_adaptor_test' }
6
- after { Mongo::Configure.current.load.collections.select { |c| c.name !~ /^system\./ }.each &:remove }
4
+ before do
5
+ Mongo::Logger.level = :info
6
+ Mongo::Configure.from_database 'mongo_adaptor_test'
7
+ end
8
+
9
+ after { Mongo::Configure.current.load.collections.select { |c| c.name !~ /^system\./ }.each &:delete_many }
7
10
 
8
11
  describe 'db setup' do
9
12
  it 'uses the configured database' do
@@ -29,7 +32,7 @@ describe 'adapting structs into mongo' do
29
32
 
30
33
  shared_examples_for 'creates a document' do
31
34
  it 'changes the number of items in the collection' do
32
- expect { subject }.to change { collection.size }.by(1)
35
+ expect { subject }.to change { collection.count }.by(1)
33
36
  end
34
37
  it 'generates an _id, ignoring any set key' do
35
38
  subject
@@ -69,7 +72,7 @@ describe 'adapting structs into mongo' do
69
72
 
70
73
  describe 'with an existing model' do
71
74
  let(:model) { klass.new 'Test Model','Some Data',['Some Other Members'] }
72
- let(:id) { collection.insert({ :name => 'My Model', :other => 'Some Value', :members => ['Some Members'] },{ :w => 1 }) }
75
+ let(:id) { collection.insert_one({ :name => 'My Model', :other => 'Some Value', :members => ['Some Members'] },{ :w => 1 }).inserted_id }
73
76
 
74
77
  before do
75
78
  model.id = id
@@ -79,10 +82,10 @@ describe 'adapting structs into mongo' do
79
82
  let(:data) { collection.find({}).to_a[-1] }
80
83
 
81
84
  it 'doesnt change the number of items in the collection' do
82
- expect { subject }.to change { collection.size }.by(0)
85
+ expect { subject }.to change { collection.count }.by(0)
83
86
  end
84
87
  it 'doesnt change the id' do
85
- expect { subject }.to_not change { collection.find_one['_id'] }
88
+ expect { subject }.to_not change { collection.find.first['_id'] }
86
89
  end
87
90
  it 'sets my fields and values' do
88
91
  subject
@@ -105,16 +108,16 @@ describe 'adapting structs into mongo' do
105
108
 
106
109
  describe 'to update it with a custom operation' do
107
110
  let(:data) { collection.find({}).to_a[-1] }
108
- subject { adaptor.execute model, "$push" => { "members" => "Some Other Members" } }
111
+ let(:operation) { adaptor.execute model, "$push" => { "members" => "Some Other Members" } }
109
112
 
110
113
  it 'doesnt change the number of items in the collection' do
111
- expect { subject }.to change { collection.size }.by(0)
114
+ expect { operation }.to change { collection.count }.by(0)
112
115
  end
113
116
  it 'doesnt change the id' do
114
- expect { subject }.to_not change { collection.find_one['_id'] }
117
+ expect { operation }.to_not change { collection.find.first['_id'] }
115
118
  end
116
119
  it 'executes my command' do
117
- subject
120
+ operation
118
121
  expect(data['members']).to eq ['Some Members','Some Other Members']
119
122
  end
120
123
  it 'also can execute my command by query' do
@@ -124,12 +127,17 @@ describe 'adapting structs into mongo' do
124
127
  end
125
128
 
126
129
  describe 'to fetch it' do
127
- subject { adaptor.fetch({ :_id => id }) }
128
- it { is_expected.to be_a klass }
129
- its(:id) { should == id }
130
- its(:name) { should == 'My Model' }
131
- its(:other) { should == 'Some Value' }
132
- its(:members) { should == ['Some Members'] }
130
+ let(:result) { adaptor.fetch({ :_id => id }) }
131
+
132
+ it "returns a class" do
133
+ expect(result).to be_a klass
134
+ end
135
+ specify "the classes fields are set correctly" do
136
+ expect(result.id).to eq id
137
+ expect(result.name).to eq 'My Model'
138
+ expect(result.other).to eq 'Some Value'
139
+ expect(result.members).to eq ['Some Members']
140
+ end
133
141
  end
134
142
 
135
143
  describe 'to remove it' do
@@ -143,21 +151,23 @@ describe 'adapting structs into mongo' do
143
151
  describe 'finding multiples' do
144
152
  before do
145
153
  3.times do |i|
146
- collection.insert({ :name => 'My Model', :other => i },{ :w => 1 })
154
+ collection.insert_one({ :name => 'My Model', :other => i },{ :w => 1 })
147
155
  end
148
156
  3.times do |i|
149
- collection.insert({ :name => 'Other Model', :other => i },{ :w => 1 })
157
+ collection.insert_one({ :name => 'Other Model', :other => i },{ :w => 1 })
150
158
  end
151
159
  end
152
160
 
153
- subject { adaptor.find({ :name => 'My Model' }) }
161
+ let(:result) { adaptor.find({ :name => 'My Model' }) }
154
162
 
155
- its(:count) { should == 3 }
163
+ it 'returns 3 models' do
164
+ expect(result.count).to eq 3
165
+ end
156
166
  it 'translates all to klass' do
157
- expect(subject.all? { |k| k.is_a? klass }).to be true
167
+ expect(result.all? { |k| k.is_a? klass }).to be true
158
168
  end
159
169
  it 'gets them all' do
160
- expect(subject.map(&:other)).to eq [0,1,2]
170
+ expect(result.map(&:other)).to eq [0,1,2]
161
171
  end
162
172
  it 'will pass along options' do
163
173
  expect { adaptor.find({ :name => 'My Model' },{ :fields => { }}) }.to_not raise_error
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_adaptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Rowe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-18 00:00:00.000000000 Z
11
+ date: 2016-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongo
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '2.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '2.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongo-configure
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 2.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 2.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec-its
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  description: A simple mongo handler. Translates Structs into Mongo and back.
84
70
  email:
85
71
  - hello@jonrowe.co.uk
@@ -116,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
102
  version: '0'
117
103
  requirements: []
118
104
  rubyforge_project:
119
- rubygems_version: 2.2.2
105
+ rubygems_version: 2.6.8
120
106
  signing_key:
121
107
  specification_version: 4
122
108
  summary: A simple mongo handler. Translates Structs into Mongo and back.