persevere 0.17.0 → 0.18.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.
data/lib/persevere.rb CHANGED
@@ -34,10 +34,9 @@ class PersevereResult
34
34
  end
35
35
 
36
36
  class Persevere
37
- VERSION = '1.1'
38
37
  HEADERS = { 'Accept' => 'application/json',
39
38
  'Content-Type' => 'application/json'
40
- }
39
+ } unless defined?(HEADERS)
41
40
 
42
41
  attr_accessor :server_url, :pservr
43
42
 
@@ -49,12 +48,12 @@ class Persevere
49
48
  end
50
49
 
51
50
  # Pass in a resource hash
52
- def create(path, resource)
51
+ def create(path, resource, headers = {})
53
52
  json_blob = resource.to_json
54
53
  response = nil
55
54
  while response.nil?
56
55
  begin
57
- response = @persevere.send_request('POST', path, json_blob, HEADERS)
56
+ response = @persevere.send_request('POST', path, json_blob, HEADERS.merge(headers))
58
57
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
59
58
  Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
60
59
  puts "Persevere Create Failed: #{e}, Trying again."
@@ -63,11 +62,11 @@ class Persevere
63
62
  return PersevereResult.make(response)
64
63
  end
65
64
 
66
- def retrieve(path)
65
+ def retrieve(path, headers = {})
67
66
  response = nil
68
67
  while response.nil?
69
68
  begin
70
- response = @persevere.send_request('GET', path, nil, HEADERS)
69
+ response = @persevere.send_request('GET', path, nil, HEADERS.merge(headers))
71
70
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
72
71
  Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
73
72
  puts "Persevere Create Failed: #{e}, Trying again."
@@ -76,13 +75,13 @@ class Persevere
76
75
  return PersevereResult.make(response)
77
76
  end
78
77
 
79
- def update(path, resource)
78
+ def update(path, resource, headers = {})
80
79
  json_blob = resource.to_json
81
80
  # puts "JSON to PERSEVERE: #{json_blob}"
82
81
  response = nil
83
82
  while response.nil?
84
83
  begin
85
- response = @persevere.send_request('PUT', path, json_blob, HEADERS)
84
+ response = @persevere.send_request('PUT', path, json_blob, HEADERS.merge(headers))
86
85
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
87
86
  Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
88
87
  puts "Persevere Create Failed: #{e}, Trying again."
@@ -91,11 +90,11 @@ class Persevere
91
90
  return PersevereResult.make(response)
92
91
  end
93
92
 
94
- def delete(path)
93
+ def delete(path, headers = {})
95
94
  response = nil
96
95
  while response.nil?
97
96
  begin
98
- response = @persevere.send_request('DELETE', path, nil, HEADERS)
97
+ response = @persevere.send_request('DELETE', path, nil, HEADERS.merge(headers))
99
98
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
100
99
  Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
101
100
  puts "Persevere Create Failed: #{e}, Trying again."
@@ -57,7 +57,6 @@ describe Persevere do
57
57
  result = @p.create('/Class/', @blobObj)
58
58
  result.code.should == "201"
59
59
  JSON.parse(result.body).should == @blobObj
60
- # result.body.should == "\"Can not modify queries\""
61
60
  # This shouldn't be a 201, it should say something mean.
62
61
  end
63
62
  end
@@ -73,7 +72,7 @@ describe Persevere do
73
72
  end
74
73
 
75
74
  it 'should 404 on a non-existent object' do
76
- result = @p.retrieve('/Class/NotThere')
75
+ result = @p.retrieve('/Class/GetNotThere')
77
76
  result.code.should == "404"
78
77
  result.message.should == "Not Found"
79
78
  end
@@ -91,9 +90,10 @@ describe Persevere do
91
90
  end
92
91
 
93
92
  it 'should fail to modify a non-existent item' do
94
- result = @p.update('/Class/NotThere', @blobObj)
93
+ result = @p.update('/Class/NonExistent', @blobObj)
95
94
  result.code.should == "500"
96
95
  result.body.should == "\"id does not match location\""
96
+ @p.delete('/Class/NonExistent') # A bug(?) in Persevere makes a broken NonExistent class.
97
97
  # This should be a 404 and not throw a persevere server exception
98
98
  end
99
99
  end
@@ -110,10 +110,9 @@ describe Persevere do
110
110
 
111
111
  it 'should fail to delete a non-existent item' do
112
112
  result = @p.delete('/Class/NotThere')
113
- result.code.should == "204"
114
- result.message.should == "No Content"
115
- result.body.should be_nil
116
- # This should be a 404 and not fail silently with a 204
113
+ result.code.should == "404"
114
+ result.message.should == "Not Found"
115
+ result.body.should == "\"Class/NotThere not found\""
117
116
  end
118
117
  end
119
118
  end
data/spec/spec_helper.rb CHANGED
@@ -1,14 +1,52 @@
1
- # require 'pathname'
2
- # require 'rubygems'
3
- #require 'spec'
4
-
5
- # DataMapper.setup(:default, {
6
- # :adapter => 'persevere',
7
- # :host => 'localhost',
8
- # :port => '8080',
9
- # :uri => 'http://localhost:8080'
10
- # })
11
-
12
- #
13
- # I need to make the Book class for Books to relate to
14
- #
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ require 'addressable/uri'
5
+ require 'spec'
6
+
7
+ require 'ruby-debug'
8
+
9
+ require 'dm-core'
10
+
11
+ require 'adapter_shared_spec'
12
+
13
+ SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
14
+ # $LOAD_PATH.unshift(SPEC_ROOT.parent + 'lib')
15
+
16
+ Pathname.glob((SPEC_ROOT + '{lib,*/shared}/**/*.rb').to_s).each { |file| require file }
17
+
18
+ ENV['ADAPTERS'] ||= 'all'
19
+
20
+ ADAPTERS = []
21
+
22
+ PRIMARY = {
23
+ 'persevere' => {:adapter => 'persevere', :host => 'localhost', :port => '8080'}
24
+ }
25
+
26
+ adapters = ENV['ADAPTERS'].split(' ').map { |adapter_name| adapter_name.strip.downcase }.uniq
27
+ adapters = PRIMARY.keys if adapters.include?('all')
28
+
29
+ PRIMARY.only(*adapters).each do |name, default|
30
+ connection_string = ENV["#{name.upcase}_SPEC_URI"] || default
31
+ begin
32
+ adapter = DataMapper.setup(name.to_sym, connection_string)
33
+
34
+ # test the connection if possible
35
+ if adapter.respond_to?(:query)
36
+ name == 'oracle' ? adapter.select('SELECT 1 FROM dual') : adapter.select('SELECT 1')
37
+ end
38
+
39
+ ADAPTERS << name
40
+ PRIMARY[name] = connection_string # ensure *_SPEC_URI is saved
41
+ rescue Exception => exception
42
+ puts "Could not connect to the database using #{connection_string.inspect} because: #{exception.inspect}"
43
+ end
44
+ end
45
+
46
+ logger = DataMapper::Logger.new(DataMapper.root / 'log' / 'dm.log', :debug)
47
+ logger.auto_flush = true
48
+
49
+ Spec::Runner.configure do |config|
50
+ config.extend(DataMapper::Spec::AdapterHelpers)
51
+ # config.include(DataMapper::Spec::PendingHelpers)
52
+ end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persevere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
- - Ivan R. Judson
8
- - The Yogo Data Management Development Team
7
+ - Ivan R. Judson
8
+ - The Yogo Data Management Development Team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-01-11 00:00:00 -07:00
13
+ date: 2010-01-13 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
17
17
  description: A ruby wrapper for persevere
18
18
  email:
19
- - irjudson [a] gmail [d] com
19
+ - irjudson [a] gmail [d] com
20
20
  executables: []
21
21
 
22
22
  extensions: []
23
23
 
24
24
  extra_rdoc_files:
25
- - LICENSE.txt
26
- - README.txt
25
+ - LICENSE.txt
26
+ - README.txt
27
27
  files:
28
- - LICENSE.txt
29
- - Rakefile
30
- - lib/persevere.rb
31
- - persevere/History.txt
32
- - persevere/README.txt
33
- - README.txt
28
+ - LICENSE.txt
29
+ - Rakefile
30
+ - lib/persevere.rb
31
+ - persevere/History.txt
32
+ - persevere/README.txt
33
+ - README.txt
34
34
  has_rdoc: true
35
35
  homepage: http://github.com/yogo/persevere
36
36
  licenses: []
37
37
 
38
38
  post_install_message:
39
39
  rdoc_options:
40
- - --main
41
- - persevere/README.txt
40
+ - --main
41
+ - persevere/README.txt
42
42
  require_paths:
43
- - lib
43
+ - lib
44
44
  required_ruby_version: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: "0"
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
49
  version:
50
50
  required_rubygems_version: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: "0"
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "0"
55
55
  version:
56
56
  requirements: []
57
57
 
@@ -61,6 +61,6 @@ signing_key:
61
61
  specification_version: 3
62
62
  summary: A ruby wrapper for persevere
63
63
  test_files:
64
- - spec/persevere_spec.rb
65
- - spec/spec.opts
66
- - spec/spec_helper.rb
64
+ - spec/persevere_spec.rb
65
+ - spec/spec.opts
66
+ - spec/spec_helper.rb