quickbooks_web_connector 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe QuickbooksWebConnector::Failure do
4
+
5
+ describe '.create' do
6
+ it 'creates a new failure and saves it' do
7
+ failure = stub :failure
8
+ failure.should_receive(:save)
9
+ described_class.should_receive(:new).with(Exception, { foo: 'bar' }).and_return(failure)
10
+
11
+ described_class.create(exception: Exception, payload: { foo: 'bar' })
12
+ end
13
+ end
14
+
15
+ describe '.requeue' do
16
+ it 'adds the failure back in as a new job' do
17
+ described_class.create(exception: Exception.new('boom'), payload: { 'request_builder_class' => 'SomeBuilder', 'response_handler_class' => 'SomeHandler', 'args' => ['36'] })
18
+
19
+ described_class.requeue(0)
20
+
21
+ expect(described_class.find(0)['retried_at']).to_not be_nil
22
+
23
+ expect(QuickbooksWebConnector.size).to eq(1)
24
+ new_job = QuickbooksWebConnector.reserve
25
+ expect(new_job.request_builder_class).to be(SomeBuilder)
26
+ expect(new_job.response_handler_class).to be(SomeHandler)
27
+ expect(new_job.args).to eq(['36'])
28
+ end
29
+ end
30
+
31
+ describe '.remove' do
32
+ it 'removes the failed job from the list' do
33
+ described_class.create(exception: Exception.new, payload: {})
34
+
35
+ expect(described_class.all).to have(1).job
36
+
37
+ described_class.remove(0)
38
+
39
+ expect(described_class.all).to have(0).jobs
40
+ end
41
+ end
42
+
43
+ describe '#save' do
44
+ subject(:failure) { described_class.new(Exception.new('something went wrong'), { foo: 'bar' }) }
45
+
46
+ it 'stores the failure with some details in redis' do
47
+ failure.save
48
+
49
+ expect(described_class.count).to eq(1)
50
+
51
+ item = described_class.all.first
52
+ expect(item['failed_at']).to_not be_nil
53
+ expect(item['payload']).to eq('foo' => 'bar')
54
+ expect(item['exception']).to eq('Exception')
55
+ expect(item['error']).to eq('something went wrong')
56
+ expect(item['backtrace']).to be_an(Array)
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe QuickbooksWebConnector::Job do
4
+
5
+ describe '.queued' do
6
+ it 'returns all queued jobs' do
7
+ expect(described_class.queued.size).to be(0)
8
+
9
+ described_class.create(SomeBuilder, SomeHandler, 12)
10
+ described_class.create(SomeBuilder, SomeHandler, 31)
11
+
12
+ expect(described_class.queued.size).to eq(2)
13
+ end
14
+ end
15
+
16
+ it 'becomes a failure if building the request XML raises an exception' do
17
+ SomeBuilder.stub(:perform).and_raise(Exception)
18
+ job = described_class.new 'request_builder_class' => 'SomeBuilder'
19
+
20
+ expect { job.request_xml }.to_not raise_exception
21
+
22
+ expect(QuickbooksWebConnector::Failure.count).to be(1)
23
+ end
24
+
25
+ it 'becomes a failure if handling the response raises an exception' do
26
+ SomeHandler.stub(:perform).and_raise(Exception)
27
+ job = described_class.new 'response_handler_class' => 'SomeHandler'
28
+
29
+ expect { job.perform }.to_not raise_exception
30
+
31
+ expect(QuickbooksWebConnector::Failure.count).to be(1)
32
+ end
33
+
34
+ end
@@ -114,7 +114,10 @@ describe QuickbooksWebConnector::SoapWrapper::QBWebConnectorSvcSoap do
114
114
  describe 'sendRequestXML' do
115
115
  subject(:response) { servant.sendRequestXML(stub :parameters) }
116
116
 
117
- before { QuickbooksWebConnector.enqueue '<some><xml></xml></some>', SomeHandler, 1 }
117
+ before do
118
+ SomeBuilder.stub(:perform).with(1).and_return('<some><xml></xml></some>')
119
+ QuickbooksWebConnector.enqueue SomeBuilder, SomeHandler, 1
120
+ end
118
121
 
119
122
  it { should be_a QuickbooksWebConnector::SoapWrapper::SendRequestXMLResponse }
120
123
  its(:sendRequestXMLResult) { should eq '<some><xml></xml></some>' }
@@ -25,12 +25,13 @@ describe QuickbooksWebConnector do
25
25
 
26
26
  it 'can enqueue jobs' do
27
27
  expect(described_class.size).to eq(0)
28
- described_class.enqueue '<some><xml></xml></some>', SomeHandler, 1, '/tmp'
28
+ described_class.enqueue SomeBuilder, SomeHandler, 1, '/tmp'
29
29
 
30
30
  job = described_class.reserve
31
31
 
32
32
  expect(job).to be_a_kind_of(described_class::Job)
33
- expect(job.payload_class).to eq(SomeHandler)
33
+ expect(job.request_builder_class).to eq(SomeBuilder)
34
+ expect(job.response_handler_class).to eq(SomeHandler)
34
35
  expect(job.args[0]).to eq 1
35
36
  expect(job.args[1]).to eq '/tmp'
36
37
 
data/spec/spec_helper.rb CHANGED
@@ -37,13 +37,18 @@ RSpec.configure do |config|
37
37
  config.after(:suite) do
38
38
  processes = `ps -A -o pid,command | grep [r]edis-test`.split($/)
39
39
  pids = processes.map { |process| process.split(" ")[0] }
40
- puts "Killing test redis server..."
40
+ puts '', "Killing test redis server..."
41
41
  pids.each { |pid| Process.kill("TERM", pid.to_i) }
42
42
  system("rm -f #{$dir}/support/redis/dump.rdb")
43
43
  end
44
44
  end
45
45
 
46
46
  # fixture classes
47
+ class SomeBuilder
48
+ def self.perform(*args)
49
+ end
50
+ end
51
+
47
52
  class SomeHandler
48
53
  def self.perform(response_xml, *args)
49
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickbooks_web_connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2013-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -108,6 +108,7 @@ files:
108
108
  - config/routes.rb
109
109
  - lib/quickbooks_web_connector/config.rb
110
110
  - lib/quickbooks_web_connector/engine.rb
111
+ - lib/quickbooks_web_connector/failure.rb
111
112
  - lib/quickbooks_web_connector/job.rb
112
113
  - lib/quickbooks_web_connector/json_coder.rb
113
114
  - lib/quickbooks_web_connector/soap_wrapper/default.rb
@@ -155,11 +156,12 @@ files:
155
156
  - spec/dummy/Rakefile
156
157
  - spec/dummy/README.rdoc
157
158
  - spec/dummy/script/rails
158
- - spec/quickbooks_web_connector/soap_wrapper/defaultServant_spec.rb
159
- - spec/quickbooks_web_connector_spec.rb
159
+ - spec/lib/quickbooks_web_connector/failure_spec.rb
160
+ - spec/lib/quickbooks_web_connector/job_spec.rb
161
+ - spec/lib/quickbooks_web_connector/soap_wrapper/defaultServant_spec.rb
162
+ - spec/lib/quickbooks_web_connector_spec.rb
160
163
  - spec/routing/quickbooks_web_connector_spec.rb
161
164
  - spec/spec_helper.rb
162
- - spec/support/redis/dump.rdb
163
165
  - spec/support/redis/redis-test.conf
164
166
  - spec/views/quickbooks_web_connector/qwc/qwc.xml.builder_spec.rb
165
167
  homepage: https://github.com/cgunther/quickbooks_web_connector
@@ -176,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
178
  version: '0'
177
179
  segments:
178
180
  - 0
179
- hash: -1903100488972492978
181
+ hash: -4263784119313176074
180
182
  required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  none: false
182
184
  requirements:
@@ -185,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
187
  version: '0'
186
188
  segments:
187
189
  - 0
188
- hash: -1903100488972492978
190
+ hash: -4263784119313176074
189
191
  requirements: []
190
192
  rubyforge_project:
191
193
  rubygems_version: 1.8.23
@@ -227,10 +229,11 @@ test_files:
227
229
  - spec/dummy/Rakefile
228
230
  - spec/dummy/README.rdoc
229
231
  - spec/dummy/script/rails
230
- - spec/quickbooks_web_connector/soap_wrapper/defaultServant_spec.rb
231
- - spec/quickbooks_web_connector_spec.rb
232
+ - spec/lib/quickbooks_web_connector/failure_spec.rb
233
+ - spec/lib/quickbooks_web_connector/job_spec.rb
234
+ - spec/lib/quickbooks_web_connector/soap_wrapper/defaultServant_spec.rb
235
+ - spec/lib/quickbooks_web_connector_spec.rb
232
236
  - spec/routing/quickbooks_web_connector_spec.rb
233
237
  - spec/spec_helper.rb
234
- - spec/support/redis/dump.rdb
235
238
  - spec/support/redis/redis-test.conf
236
239
  - spec/views/quickbooks_web_connector/qwc/qwc.xml.builder_spec.rb
@@ -1 +0,0 @@
1
- REDIS0006�ܳC�Z��V