fauna 1.3.4 → 2.0.0

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.
@@ -0,0 +1,77 @@
1
+ RSpec.describe Fauna::Ref do
2
+ it 'converts to string' do
3
+ expect(Fauna::Ref.new('classes/test').to_s).to eq('classes/test')
4
+ end
5
+
6
+ describe '#initalize' do
7
+ it 'creates from string' do
8
+ name = random_string
9
+ expect(Fauna::Ref.new("classes/#{name}").value).to eq("classes/#{name}")
10
+ end
11
+
12
+ it 'creates from arguments' do
13
+ name = random_string
14
+ id = random_number
15
+
16
+ expect(Fauna::Ref.new('classes', name).value).to eq("classes/#{name}")
17
+ expect(Fauna::Ref.new('classes', name, id).value).to eq("classes/#{name}/#{id}")
18
+ end
19
+
20
+ it 'creates from other refs' do
21
+ ref = Fauna::Ref.new('classes')
22
+ name = random_string
23
+ id = random_number
24
+
25
+ class_ref = Fauna::Ref.new(ref, name)
26
+
27
+ expect(class_ref.value).to eq("classes/#{name}")
28
+ expect(Fauna::Ref.new(class_ref, id).value).to eq("classes/#{name}/#{id}")
29
+ expect(Fauna::Ref.new(ref, name, id).value).to eq("classes/#{name}/#{id}")
30
+ end
31
+ end
32
+
33
+ describe '#id' do
34
+ context 'with multiple elements' do
35
+ it 'returns id portion' do
36
+ expect(Fauna::Ref.new('classes', 'test').id).to eq('test')
37
+ end
38
+ end
39
+
40
+ context 'with single element' do
41
+ it 'raises error' do
42
+ expect { Fauna::Ref.new('classes').id }.to raise_error(ArgumentError)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '#to_class' do
48
+ context 'with multiple elements' do
49
+ it 'returns class portion' do
50
+ expect(Fauna::Ref.new('classes', 'test').to_class).to eq(Fauna::Ref.new('classes'))
51
+ end
52
+ end
53
+
54
+ context 'with single element' do
55
+ it 'returns class portion' do
56
+ expect(Fauna::Ref.new('classes').to_class).to eq(Fauna::Ref.new('classes'))
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '#==' do
62
+ it 'equals same ref' do
63
+ ref = Fauna::Ref.new('classes/test')
64
+
65
+ expect(ref).to eq(Fauna::Ref.new('classes/test'))
66
+ expect(ref.to_class).to eq(Fauna::Ref.new('classes'))
67
+ end
68
+
69
+ it 'does not equal different ref' do
70
+ expect(Fauna::Ref.new('classes/test')).not_to eq(Fauna::Ref.new('classes'))
71
+ end
72
+
73
+ it 'does not equal other type' do
74
+ expect(Fauna::Ref.new('classes/test')).not_to eq('classes/test')
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,23 @@
1
+ RSpec.describe Fauna::SetRef do
2
+ describe '#==' do
3
+ it 'equals same set' do
4
+ data = { match: random_ref, terms: random_string }
5
+ set = Fauna::SetRef.new(data)
6
+
7
+ expect(set).to eq(Fauna::SetRef.new(data))
8
+ end
9
+
10
+ it 'does not equal different set' do
11
+ set = Fauna::SetRef.new(match: random_ref, terms: random_string)
12
+
13
+ expect(set).not_to eq(Fauna::SetRef.new(match: random_ref, terms: random_string))
14
+ end
15
+
16
+ it 'does not equal other type' do
17
+ data = { match: random_ref, terms: random_string }
18
+ set = Fauna::SetRef.new(data)
19
+
20
+ expect(set).not_to eq(data)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ require 'simplecov'
2
+ require 'fauna'
3
+ require 'fauna_helper'
4
+
5
+ # Reference http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
6
+ RSpec.configure do |config|
7
+ config.expect_with :rspec do |expectations|
8
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
9
+ end
10
+
11
+ config.mock_with :rspec do |mocks|
12
+ mocks.verify_partial_doubles = true
13
+ end
14
+
15
+ # Disable monkey patching
16
+ config.disable_monkey_patching!
17
+
18
+ # Enable warnings
19
+ config.warnings = true
20
+
21
+ # Setup test order
22
+ config.order = :random
23
+ Kernel.srand config.seed
24
+
25
+ # Include test helpers
26
+ config.include FaunaTestHelpers
27
+ end
@@ -0,0 +1,19 @@
1
+ RSpec.describe 'Fauna Util' do
2
+ describe '#time_from_usecs' do
3
+ it 'converts microseconds to time' do
4
+ time = Time.at(1, 234_567)
5
+ usecs = 1_234_567
6
+
7
+ expect(Fauna.time_from_usecs(usecs)).to eq(time)
8
+ end
9
+ end
10
+
11
+ describe '#usecs_from_time' do
12
+ it 'converts time to microseconds' do
13
+ time = Time.at(1, 234_567)
14
+ usecs = 1_234_567
15
+
16
+ expect(Fauna.usecs_from_time(time)).to eq(usecs)
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -1,178 +1,160 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fauna
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fauna, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-14 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.9.0
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
26
  version: 0.9.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.8.0
33
+ version: '1.8'
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: 1.8.0
40
+ version: '1.8'
41
41
  - !ruby/object:Gem::Dependency
42
- name: mocha
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '3.4'
55
55
  - !ruby/object:Gem::Dependency
56
- name: echoe
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: minitest
56
+ name: rubocop
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ~>
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '4.0'
61
+ version: 0.35.0
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '4.0'
68
+ version: 0.35.0
83
69
  - !ruby/object:Gem::Dependency
84
- name: rubocop
70
+ name: coveralls
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ! '>='
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: 0.8.10
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ! '>='
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: 0.8.10
97
83
  description: Ruby client for the Fauna distributed database.
98
- email: ''
84
+ email: priority@faunadb.com
99
85
  executables: []
100
86
  extensions: []
101
87
  extra_rdoc_files:
102
88
  - CHANGELOG
103
89
  - LICENSE
104
90
  - README.md
105
- - lib/fauna.rb
106
- - lib/fauna/cache.rb
107
- - lib/fauna/client.rb
108
- - lib/fauna/connection.rb
109
- - lib/fauna/named_resource.rb
110
- - lib/fauna/rails.rb
111
- - lib/fauna/resource.rb
112
- - lib/fauna/set.rb
113
- - lib/fauna/util.rb
114
- - lib/tasks/fauna.rake
115
91
  files:
116
92
  - CHANGELOG
117
93
  - Gemfile
118
94
  - LICENSE
119
- - Manifest
120
95
  - README.md
121
96
  - Rakefile
122
97
  - fauna.gemspec
123
98
  - lib/fauna.rb
124
- - lib/fauna/cache.rb
125
99
  - lib/fauna/client.rb
126
- - lib/fauna/connection.rb
127
- - lib/fauna/named_resource.rb
128
- - lib/fauna/rails.rb
129
- - lib/fauna/resource.rb
130
- - lib/fauna/set.rb
100
+ - lib/fauna/client_logger.rb
101
+ - lib/fauna/context.rb
102
+ - lib/fauna/errors.rb
103
+ - lib/fauna/json.rb
104
+ - lib/fauna/objects.rb
105
+ - lib/fauna/query.rb
106
+ - lib/fauna/request_result.rb
131
107
  - lib/fauna/util.rb
132
- - lib/tasks/fauna.rake
133
- - test/class_test.rb
134
- - test/client_test.rb
135
- - test/connection_test.rb
136
- - test/database_test.rb
137
- - test/query_test.rb
138
- - test/readme_test.rb
139
- - test/set_test.rb
140
- - test/test_helper.rb
141
- homepage: http://fauna.github.com/fauna/
108
+ - lib/fauna/version.rb
109
+ - spec/client_logger_spec.rb
110
+ - spec/client_spec.rb
111
+ - spec/context_spec.rb
112
+ - spec/errors_spec.rb
113
+ - spec/fauna_helper.rb
114
+ - spec/json_spec.rb
115
+ - spec/query_spec.rb
116
+ - spec/ref_spec.rb
117
+ - spec/setref_spec.rb
118
+ - spec/spec_helper.rb
119
+ - spec/util_spec.rb
120
+ homepage: https://github.com/faunadb/faunadb-ruby
142
121
  licenses:
143
- - Mozilla Public License, Version 2.0 (MPL2)
122
+ - MPL-2.0
144
123
  metadata: {}
145
124
  post_install_message:
146
125
  rdoc_options:
147
- - --line-numbers
148
- - --title
126
+ - "--line-numbers"
127
+ - "--title"
149
128
  - Fauna
150
- - --main
129
+ - "--main"
151
130
  - README.md
152
131
  require_paths:
153
132
  - lib
154
133
  required_ruby_version: !ruby/object:Gem::Requirement
155
134
  requirements:
156
- - - ! '>='
135
+ - - ">="
157
136
  - !ruby/object:Gem::Version
158
137
  version: '0'
159
138
  required_rubygems_version: !ruby/object:Gem::Requirement
160
139
  requirements:
161
- - - ! '>='
140
+ - - ">="
162
141
  - !ruby/object:Gem::Version
163
- version: '1.2'
142
+ version: '0'
164
143
  requirements: []
165
- rubyforge_project: fauna
166
- rubygems_version: 2.1.10
144
+ rubyforge_project:
145
+ rubygems_version: 2.4.5.1
167
146
  signing_key:
168
147
  specification_version: 4
169
- summary: Ruby client for the Fauna distributed database.
148
+ summary: FaunaDB Ruby client
170
149
  test_files:
171
- - test/class_test.rb
172
- - test/client_test.rb
173
- - test/connection_test.rb
174
- - test/database_test.rb
175
- - test/query_test.rb
176
- - test/readme_test.rb
177
- - test/set_test.rb
178
- - test/test_helper.rb
150
+ - spec/util_spec.rb
151
+ - spec/context_spec.rb
152
+ - spec/client_logger_spec.rb
153
+ - spec/query_spec.rb
154
+ - spec/fauna_helper.rb
155
+ - spec/client_spec.rb
156
+ - spec/errors_spec.rb
157
+ - spec/setref_spec.rb
158
+ - spec/ref_spec.rb
159
+ - spec/spec_helper.rb
160
+ - spec/json_spec.rb
data/Manifest DELETED
@@ -1,25 +0,0 @@
1
- CHANGELOG
2
- Gemfile
3
- LICENSE
4
- Manifest
5
- README.md
6
- Rakefile
7
- fauna.gemspec
8
- lib/fauna.rb
9
- lib/fauna/cache.rb
10
- lib/fauna/client.rb
11
- lib/fauna/connection.rb
12
- lib/fauna/named_resource.rb
13
- lib/fauna/rails.rb
14
- lib/fauna/resource.rb
15
- lib/fauna/set.rb
16
- lib/fauna/util.rb
17
- lib/tasks/fauna.rake
18
- test/class_test.rb
19
- test/client_test.rb
20
- test/connection_test.rb
21
- test/database_test.rb
22
- test/query_test.rb
23
- test/readme_test.rb
24
- test/set_test.rb
25
- test/test_helper.rb
@@ -1,64 +0,0 @@
1
- module Fauna
2
- class NoContextError < StandardError
3
- end
4
-
5
- class Cache
6
- attr_reader :connection
7
-
8
- def initialize(connection)
9
- fail ArgumentError, 'Connection cannot be nil' unless connection
10
- @cache = {}
11
- @connection = connection
12
- end
13
-
14
- def get(ref, query = {}, pagination = {})
15
- res = @cache[ref]
16
- res = @cache[res] if res.is_a? String # non-canonical refs point to their canonical refs.
17
-
18
- if res.nil?
19
- response = @connection.get(ref, query.merge(pagination))
20
- update_cache(ref, response)
21
- res = response['resource']
22
- end
23
-
24
- res
25
- end
26
-
27
- def post(ref, data)
28
- res = @connection.post(ref, data)
29
- update_cache(ref, res)
30
- res['resource']
31
- end
32
-
33
- def put(ref, data)
34
- res = @connection.put(ref, data)
35
- return unless res['resource']
36
- update_cache(ref, res)
37
- res['resource']
38
- end
39
-
40
- def patch(ref, data)
41
- res = @connection.patch(ref, data)
42
- return unless res['resource']
43
- update_cache(ref, res)
44
- res['resource']
45
- end
46
-
47
- def delete(ref, data)
48
- @connection.delete(ref, data)
49
- @cache.delete(ref)
50
- nil
51
- end
52
-
53
- private
54
-
55
- def update_cache(ref, res)
56
- # FIXME: Implement set range caching
57
- if res['resource']['class'] != 'resources' && res['resource']['class'] != 'events'
58
- @cache[ref] = res['resource']['ref'] # store the non-canonical ref as a pointer to the real one.
59
- @cache[res['resource']['ref']] = res['resource']
60
- end
61
- @cache.merge!(res['references'] || {})
62
- end
63
- end
64
- end