quickbooks_web_connector 0.0.3 → 0.0.4

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,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