canvas_sync 0.17.35 → 0.17.37

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,107 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe CanvasSync::JobBatches::ActiveJob do
4
+ describe CanvasSync::JobBatches::ActiveJob::BatchAwareJob do
5
+ include ActiveJob::TestHelper
6
+
7
+ after do
8
+ clear_enqueued_jobs
9
+ clear_performed_jobs
10
+ end
11
+
12
+ context "When Performing" do
13
+ context 'when without batch' do
14
+ it 'just yields' do
15
+ expect(CanvasSync::JobBatches::Batch).not_to receive(:process_successful_job)
16
+ expect(CanvasSync::JobBatches::Batch).not_to receive(:process_failed_job)
17
+ expect_any_instance_of(BatchTestJobBase).to receive(:perform)
18
+
19
+ BatchTestJobBase.perform_now
20
+ end
21
+ end
22
+
23
+ context 'when in batch' do
24
+ let(:bid) { 'SAMPLEBID' }
25
+
26
+ context 'when successful' do
27
+ it 'yields' do
28
+ expect_any_instance_of(BatchTestJobBase).to receive(:perform)
29
+ BatchTestJobBase.perform_now
30
+ end
31
+
32
+ it 'calls process_successful_job' do
33
+ job = BatchTestJobBase.new
34
+ job.instance_variable_set(:@bid, bid)
35
+ expect(CanvasSync::JobBatches::Batch).to receive(:process_successful_job).with(bid, job.job_id)
36
+ job.perform_now
37
+ end
38
+ end
39
+
40
+ context 'when failed' do
41
+ it 'calls process_failed_job and reraises exception' do
42
+ reraised = false
43
+ job = FailingBatchTestJobBase.new
44
+ job.instance_variable_set(:@bid, bid)
45
+ expect(CanvasSync::JobBatches::Batch).to receive(:process_failed_job)
46
+ begin
47
+ job.perform_now
48
+ rescue
49
+ reraised = true
50
+ end
51
+ expect(reraised).to be_truthy
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ context "When Enqueueing" do
58
+ context 'when without batch' do
59
+ it 'just yields' do
60
+ expect(CanvasSync::JobBatches::Batch).not_to receive(:increment_job_queue)
61
+ BatchTestJobBase.perform_later
62
+ expect(BatchTestJobBase).to have_been_enqueued
63
+ end
64
+ end
65
+
66
+ context 'when in batch' do
67
+ let(:bid) { 'SAMPLEBID' }
68
+
69
+ before do
70
+ Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY] = CanvasSync::JobBatches::Batch.new(bid)
71
+ Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY].instance_variable_set(:@open, true)
72
+ end
73
+ after { Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY] = nil }
74
+
75
+ it 'yields' do
76
+ expect {
77
+ BatchTestJobBase.perform_later
78
+ }.to enqueue_job(BatchTestJobBase)
79
+ end
80
+
81
+ it 'assigns bid to job metadata' do
82
+ job = BatchTestJobBase.perform_later
83
+ expect(job.bid).to eq bid
84
+ expect(job.serialize['batch_id']).to eq bid
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'worker' do
90
+ it 'defines method bid' do
91
+ expect(ActiveJob::Base.instance_methods).to include(:bid)
92
+ end
93
+
94
+ it 'defines method batch' do
95
+ expect(ActiveJob::Base.instance_methods).to include(:batch)
96
+ end
97
+
98
+ it 'defines method valid_within_batch?' do
99
+ expect(ActiveJob::Base.instance_methods).to include(:valid_within_batch?)
100
+ end
101
+ end
102
+ end
103
+
104
+ describe ".handle_job_death" do
105
+
106
+ end
107
+ end
@@ -338,7 +338,7 @@ RSpec.describe CanvasSync::JobBatches::Batch do
338
338
 
339
339
  context 'With ActiveJob Adapter' do
340
340
  around(:all) do |block|
341
- CanvasSync::JobBatches::Batch::Callback.worker_class = CanvasSync::JobBatches::Batch::Callback::ActiveJobCallbackWorker
341
+ CanvasSync::JobBatches::Batch::Callback.worker_class = CanvasSync::JobBatches::ActiveJob::ActiveJobCallbackWorker
342
342
  block.run
343
343
  end
344
344
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.35
4
+ version: 0.17.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Collings
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-22 00:00:00.000000000 Z
11
+ date: 2022-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -434,8 +434,8 @@ files:
434
434
  - lib/canvas_sync/importers/bulk_importer.rb
435
435
  - lib/canvas_sync/importers/legacy_importer.rb
436
436
  - lib/canvas_sync/job.rb
437
+ - lib/canvas_sync/job_batches/active_job.rb
437
438
  - lib/canvas_sync/job_batches/batch.rb
438
- - lib/canvas_sync/job_batches/batch_aware_job.rb
439
439
  - lib/canvas_sync/job_batches/callback.rb
440
440
  - lib/canvas_sync/job_batches/chain_builder.rb
441
441
  - lib/canvas_sync/job_batches/context_hash.rb
@@ -642,7 +642,7 @@ files:
642
642
  - spec/factories/submission_factory.rb
643
643
  - spec/factories/term_factory.rb
644
644
  - spec/factories/user_factory.rb
645
- - spec/job_batching/batch_aware_job_spec.rb
645
+ - spec/job_batching/active_job_spec.rb
646
646
  - spec/job_batching/batch_spec.rb
647
647
  - spec/job_batching/callback_spec.rb
648
648
  - spec/job_batching/context_hash_spec.rb
@@ -853,7 +853,7 @@ test_files:
853
853
  - spec/factories/submission_factory.rb
854
854
  - spec/factories/term_factory.rb
855
855
  - spec/factories/user_factory.rb
856
- - spec/job_batching/batch_aware_job_spec.rb
856
+ - spec/job_batching/active_job_spec.rb
857
857
  - spec/job_batching/batch_spec.rb
858
858
  - spec/job_batching/callback_spec.rb
859
859
  - spec/job_batching/context_hash_spec.rb
@@ -1,63 +0,0 @@
1
- module CanvasSync
2
- module JobBatches
3
- module BatchAwareJob
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- around_perform do |job, block|
8
- if (@bid) # This _must_ be @bid - not just bid
9
- prev_batch = Thread.current[CURRENT_BATCH_THREAD_KEY]
10
- begin
11
- Thread.current[CURRENT_BATCH_THREAD_KEY] = Batch.new(@bid)
12
- block.call
13
- Thread.current[CURRENT_BATCH_THREAD_KEY].save_context_changes
14
- Batch.process_successful_job(@bid, job_id)
15
- rescue
16
- Batch.process_failed_job(@bid, job_id)
17
- raise
18
- ensure
19
- Thread.current[CURRENT_BATCH_THREAD_KEY] = prev_batch
20
- end
21
- else
22
- block.call
23
- end
24
- end
25
-
26
- around_enqueue do |job, block|
27
- if (batch = Thread.current[CURRENT_BATCH_THREAD_KEY])
28
- @bid = batch.bid
29
- batch.increment_job_queue(job_id) if @bid
30
- end
31
- block.call
32
- end
33
- end
34
-
35
- def bid
36
- @bid || Thread.current[CURRENT_BATCH_THREAD_KEY]&.bid
37
- end
38
-
39
- def batch
40
- Thread.current[CURRENT_BATCH_THREAD_KEY]
41
- end
42
-
43
- def batch_context
44
- batch&.context || {}
45
- end
46
-
47
- def valid_within_batch?
48
- batch.valid?
49
- end
50
-
51
- def serialize
52
- super.tap do |data|
53
- data['batch_id'] = @bid # This _must_ be @bid - not just bid
54
- end
55
- end
56
-
57
- def deserialize(data)
58
- super
59
- @bid = data['batch_id']
60
- end
61
- end
62
- end
63
- end
@@ -1,101 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe CanvasSync::JobBatches::BatchAwareJob do
4
- include ActiveJob::TestHelper
5
-
6
- after do
7
- clear_enqueued_jobs
8
- clear_performed_jobs
9
- end
10
-
11
- context "When Performing" do
12
- context 'when without batch' do
13
- it 'just yields' do
14
- expect(CanvasSync::JobBatches::Batch).not_to receive(:process_successful_job)
15
- expect(CanvasSync::JobBatches::Batch).not_to receive(:process_failed_job)
16
- expect_any_instance_of(BatchTestJobBase).to receive(:perform)
17
-
18
- BatchTestJobBase.perform_now
19
- end
20
- end
21
-
22
- context 'when in batch' do
23
- let(:bid) { 'SAMPLEBID' }
24
-
25
- context 'when successful' do
26
- it 'yields' do
27
- expect_any_instance_of(BatchTestJobBase).to receive(:perform)
28
- BatchTestJobBase.perform_now
29
- end
30
-
31
- it 'calls process_successful_job' do
32
- job = BatchTestJobBase.new
33
- job.instance_variable_set(:@bid, bid)
34
- expect(CanvasSync::JobBatches::Batch).to receive(:process_successful_job).with(bid, job.job_id)
35
- job.perform_now
36
- end
37
- end
38
-
39
- context 'when failed' do
40
- it 'calls process_failed_job and reraises exception' do
41
- reraised = false
42
- job = FailingBatchTestJobBase.new
43
- job.instance_variable_set(:@bid, bid)
44
- expect(CanvasSync::JobBatches::Batch).to receive(:process_failed_job)
45
- begin
46
- job.perform_now
47
- rescue
48
- reraised = true
49
- end
50
- expect(reraised).to be_truthy
51
- end
52
- end
53
- end
54
- end
55
-
56
- context "When Enqueueing" do
57
- context 'when without batch' do
58
- it 'just yields' do
59
- expect(CanvasSync::JobBatches::Batch).not_to receive(:increment_job_queue)
60
- BatchTestJobBase.perform_later
61
- expect(BatchTestJobBase).to have_been_enqueued
62
- end
63
- end
64
-
65
- context 'when in batch' do
66
- let(:bid) { 'SAMPLEBID' }
67
-
68
- before do
69
- Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY] = CanvasSync::JobBatches::Batch.new(bid)
70
- Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY].instance_variable_set(:@open, true)
71
- end
72
- after { Thread.current[CanvasSync::JobBatches::CURRENT_BATCH_THREAD_KEY] = nil }
73
-
74
- it 'yields' do
75
- expect {
76
- BatchTestJobBase.perform_later
77
- }.to enqueue_job(BatchTestJobBase)
78
- end
79
-
80
- it 'assigns bid to job metadata' do
81
- job = BatchTestJobBase.perform_later
82
- expect(job.bid).to eq bid
83
- expect(job.serialize['batch_id']).to eq bid
84
- end
85
- end
86
- end
87
-
88
- context 'worker' do
89
- it 'defines method bid' do
90
- expect(ActiveJob::Base.instance_methods).to include(:bid)
91
- end
92
-
93
- it 'defines method batch' do
94
- expect(ActiveJob::Base.instance_methods).to include(:batch)
95
- end
96
-
97
- it 'defines method valid_within_batch?' do
98
- expect(ActiveJob::Base.instance_methods).to include(:valid_within_batch?)
99
- end
100
- end
101
- end