persevere 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
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