muve 0.1.0 → 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: 07fd84a42ff9d48763eb97e0991f3b29c1922a5a
4
- data.tar.gz: bae3ee756eb66eff4539fed0fcd717ca1bde469a
3
+ metadata.gz: c4f36cfe27c1f7f7ed994364976bc49c15c7e677
4
+ data.tar.gz: 3115d65888228e346e5d079367aa18867ee19b78
5
5
  SHA512:
6
- metadata.gz: c864989ed5a970291c4a794e503553def1dcf813c92d7d8700858434a8170e51c3183cbd9ad0e0fa43651299e6f77a4887e74948bc04704a10140af0c1bbb0f4
7
- data.tar.gz: 0bb9e70a4e32a2ae7c44d07689b433f67074353cf508201cc16f45b1c9aec7861cf785c54fa61ccd6e8fb7f6f094bea11d9e96100e0f8a3b261213c5a6247b10
6
+ metadata.gz: cb4d0e4eddf27e19af900241cfc184d003b2ec84ed833d12bdfa7fe91bfd7f3623ab4f196d12b883b69e868584ec390eced54711f2fbddb64d4726702d0b3b8f
7
+ data.tar.gz: 6ad01f4ad7c17805edb36165bfe8b223bb430ef6c1baf2d0421e6269acfa9e974193a3db5256b812244acde4f0f221b99da6bc4ef1d6eb36d155a4bbf7790e63
data/.gitignore CHANGED
@@ -24,3 +24,4 @@ tmp
24
24
  *.o
25
25
  *.a
26
26
  mkmf.log
27
+ .rspec
data/Gemfile CHANGED
@@ -6,8 +6,6 @@ gem "rake", "~> 10.3.2"
6
6
  gem "bundler", "~> 1.6"
7
7
 
8
8
  group :test do
9
- gem "mongo", "~> 1.10.2"
10
- gem "bson_ext"
11
9
  gem "ffaker", "~> 1.24.0"
12
10
  gem "factory_girl", "~> 4.0.0"
13
11
  gem "rspec", "~> 3.0.0"
@@ -0,0 +1,33 @@
1
+ # Muve
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/muve.svg)](http://badge.fury.io/rb/muve)
4
+
5
+ The Muve gem is designed to allow for the quick implementation of the
6
+ Muvement API logic into a project. At the very moment this is very
7
+ experimental and subject to massive changes which is why I wouldn't recommend
8
+ others to use this gem as yet :wink:.
9
+
10
+ ## Installation
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'muve'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install muve
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it ( https://github.com/[my-github-username]/muve/fork )
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create a new Pull Request
@@ -1,5 +1,3 @@
1
- require 'muve/store/mongo'
2
-
3
1
  module Muve
4
2
  # Muve::Store takes care of resource persistence and retrieval. Use stores
5
3
  # as adaptors to connect your implementation of Muve to whichever datastore
@@ -1,3 +1,3 @@
1
1
  module Muve
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muve
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Asabina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-29 00:00:00.000000000 Z
11
+ date: 2014-07-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Basic helpers to be used with Muvement
14
14
  email:
@@ -20,6 +20,7 @@ files:
20
20
  - ".gitignore"
21
21
  - Gemfile
22
22
  - LICENSE.txt
23
+ - README.md
23
24
  - Rakefile
24
25
  - lib/muve.rb
25
26
  - lib/muve/errors.rb
@@ -28,11 +29,9 @@ files:
28
29
  - lib/muve/model.rb
29
30
  - lib/muve/movement.rb
30
31
  - lib/muve/store.rb
31
- - lib/muve/store/mongo.rb
32
32
  - lib/muve/traveller.rb
33
33
  - lib/muve/version.rb
34
34
  - muve.gemspec
35
- - spec/adaptor/mongo_spec.rb
36
35
  - spec/factories.rb
37
36
  - spec/helper_spec.rb
38
37
  - spec/location_spec.rb
@@ -67,7 +66,6 @@ signing_key:
67
66
  specification_version: 4
68
67
  summary: muve gem
69
68
  test_files:
70
- - spec/adaptor/mongo_spec.rb
71
69
  - spec/factories.rb
72
70
  - spec/helper_spec.rb
73
71
  - spec/location_spec.rb
@@ -1,50 +0,0 @@
1
- module Muve
2
- module Store
3
- class Mongo
4
- require 'mongo'
5
-
6
- extend Muve::Store
7
-
8
- def self.create(resource, details)
9
- raise MuveInvalidAttributes, "invalid update data" unless details.kind_of? Hash
10
- resource.database[resource.container].insert(details)
11
- end
12
-
13
- def self.fetch(resource, id, details={})
14
- # TODO: discover a solution that works for situations where database
15
- # driver returns string keys as well as symbol keys
16
- details = {} unless details.kind_of? Hash
17
- result = resource.database[resource.container].find_one(details.merge(_id: id))
18
- result = Helper.symbolize_keys(result)
19
- result[:id] = result.delete(:_id)
20
- result
21
- end
22
-
23
- def self.find(resource, details)
24
- details = {} unless details.kind_of? Hash
25
- Enumerator.new do |result|
26
- resource.database[resource.container].find(details).each do |item|
27
- item = Helper.symbolize_keys(item)
28
- item[:id] = item.delete(:_id)
29
- result << item
30
- end
31
- end
32
- end
33
-
34
- def self.update(resource, id, details)
35
- raise MuveInvalidAttributes, "invalid update data" unless details.kind_of? Hash
36
- # TODO: raise error if details is not valid
37
- resource.database[resource.container].find_and_modify(
38
- query: { _id: id },
39
- update: details
40
- )
41
- end
42
-
43
- def self.delete(resource, id, details=nil)
44
- details = {} unless details.kind_of? Hash
45
- details = details.merge(_id: id) if id
46
- resource.database[resource.container].remove(details)
47
- end
48
- end
49
- end
50
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Mongo Adaptor' do
4
- let(:connection) { Mongo::MongoClient.new }
5
- let(:database) { connection.db('muve_test') }
6
- before do
7
- class Place
8
- include Muve::Model
9
-
10
- def self.container
11
- 'places'
12
- end
13
- end
14
-
15
- Muve.init(connection, database)
16
- end
17
-
18
- it 'writes model data to the store' do
19
- expect{
20
- Muve::Store::Mongo.create(Place, {
21
- city: Faker::Address.city,
22
- street: Faker::Address.street_name,
23
- building: Faker::Address.building_number
24
- })
25
- }.to change{database['places'].count}.by(1)
26
- end
27
-
28
- it 'writes modifications to the store' do
29
- id = database['places'].insert(name: Faker::Venue.name)
30
- new_name = Faker::Venue.name
31
-
32
- expect{
33
- Muve::Store::Mongo.update(Place, id, { name: new_name })
34
- }.to change{database['places'].find_one(_id: id)['name']}.to(new_name)
35
- end
36
-
37
- it 'finds a resource from store' do
38
- id = database['places'].insert(name: Faker::Venue.name)
39
- expect(Muve::Store::Mongo.get(Place, id)[:id]).to eq(id)
40
- end
41
-
42
- it 'finds multiple resources from store' do
43
- expect(Muve::Store::Mongo.find(Place, {})).to be_a(Enumerable)
44
- end
45
-
46
- it 'extracts a resource from every result in a multiple resource set' do
47
- Muve::Store::Mongo.find(Place, {}).take(3).each do |result|
48
- attributes = result.keys.map{ |i| i.to_s }
49
- expect(attributes).to include('id', 'city', 'street', 'building')
50
- end
51
- end
52
- end