cellect-client 2.1.1 → 3.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -0
- data/cellect.gemspec +2 -1
- data/lib/cellect/version.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/shared_examples_for_loader.rb +42 -0
- data/spec/support/shared_examples_for_workflow.rb +84 -8
- data/spec/support/spec_adapter.rb +6 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1078227bba61ad301cc8455264181baf5fd6cd87
|
4
|
+
data.tar.gz: 66a0abcc056d63bd77c0b0d6fd49b1e0f65c2e12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20f5686575a9f73df5df7d9d811eac8663b469769a0f83e5eb19bbc9895ab11ee33d7e63c5baf5869331fe4687d3987d9e8a649c326a3cd55d1865d375d4acae
|
7
|
+
data.tar.gz: 95431db5865b17a590f44beac3e3f8fa6c2904d3969ab0fa670a275d745008443c59ba5817302e179a48021812137e274036a3e98ddb2f48283599afcc2419b6
|
data/.travis.yml
CHANGED
data/cellect.gemspec
CHANGED
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency 'puma', '~> 2.8'
|
30
30
|
spec.add_development_dependency 'pg', '~> 0.17'
|
31
31
|
spec.add_development_dependency 'connection_pool', '~> 2.0'
|
32
|
-
spec.add_development_dependency
|
32
|
+
spec.add_development_dependency "simplecov"
|
33
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0.0"
|
33
34
|
|
34
35
|
spec.add_runtime_dependency 'cellect-server', Cellect::VERSION
|
35
36
|
spec.add_runtime_dependency 'cellect-client', Cellect::VERSION
|
data/lib/cellect/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
shared_examples_for 'loader' do |name|
|
2
|
+
let(:fixtures) do
|
3
|
+
Cellect::Server
|
4
|
+
.adapter
|
5
|
+
.fixtures
|
6
|
+
.fetch(workflow.name, { })
|
7
|
+
.fetch('entries', [])
|
8
|
+
end
|
9
|
+
let(:fixture_count) { fixtures.count }
|
10
|
+
|
11
|
+
describe "#load_data" do
|
12
|
+
it "should use the server adapter to load data" do
|
13
|
+
expect(Cellect::Server.adapter)
|
14
|
+
.to receive(:load_data_for)
|
15
|
+
.with(workflow.name)
|
16
|
+
.and_call_original
|
17
|
+
loader.load_data
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should mark the workflow as loaded" do
|
21
|
+
expect { loader.load_data }.to change { workflow.state }.to(:ready)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#reload_data" do
|
26
|
+
it "should replace the existing subjects with the reloaded set" do
|
27
|
+
expect {
|
28
|
+
loader.reload_data(subjects)
|
29
|
+
}.to change {
|
30
|
+
workflow.subjects
|
31
|
+
}.to(subjects)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should mark the workflow as ready" do
|
35
|
+
expect {
|
36
|
+
loader.reload_data(subjects)
|
37
|
+
}.to change {
|
38
|
+
workflow.state
|
39
|
+
}.to(:ready)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,10 +1,4 @@
|
|
1
1
|
shared_examples_for 'workflow' do |name|
|
2
|
-
let(:obj){ send name }
|
3
|
-
|
4
|
-
before(:each) do
|
5
|
-
Cellect::Server.adapter.load_workflow obj.name
|
6
|
-
end
|
7
|
-
|
8
2
|
it 'should add singleton instances to the registry' do
|
9
3
|
expect(obj.class[obj.name]).to be_a_kind_of Cellect::Server::Workflow
|
10
4
|
expect(obj.class[obj.name].object_id).to eq obj.class[obj.name].object_id
|
@@ -14,8 +8,12 @@ shared_examples_for 'workflow' do |name|
|
|
14
8
|
expect(obj.name).to be_a String
|
15
9
|
expect(obj.users).to be_a Hash
|
16
10
|
|
17
|
-
|
18
|
-
|
11
|
+
if obj.grouped?
|
12
|
+
expect(obj.subjects).to eq({})
|
13
|
+
else
|
14
|
+
set_klass = obj.prioritized? ? DiffSet::PrioritySet : DiffSet::RandomSet
|
15
|
+
expect(obj.subjects).to be_a set_klass
|
16
|
+
end
|
19
17
|
end
|
20
18
|
|
21
19
|
it 'should provide a user lookup' do
|
@@ -23,4 +21,82 @@ shared_examples_for 'workflow' do |name|
|
|
23
21
|
expect(obj.user(1).object_id).to eq obj.user(1).object_id
|
24
22
|
expect(obj.users.keys).to include 1
|
25
23
|
end
|
24
|
+
|
25
|
+
context "with a celluloid stubbed async loader" do
|
26
|
+
let(:loader) do
|
27
|
+
if obj.grouped?
|
28
|
+
Cellect::Server::GroupedLoader.new(obj)
|
29
|
+
else
|
30
|
+
Cellect::Server::Loader.new(obj)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
let(:celluloid_target) { loader.wrapped_object }
|
34
|
+
|
35
|
+
before do
|
36
|
+
allow(obj.wrapped_object).to receive(:data_loader).and_return(loader)
|
37
|
+
allow(loader).to receive(:async).and_return(loader)
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#load_data' do
|
41
|
+
it 'should request data from the loader' do
|
42
|
+
expect(celluloid_target).to receive(:load_data)
|
43
|
+
obj.load_data
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should not attempt to reload subjects when in ready state' do
|
47
|
+
obj.state = :ready
|
48
|
+
expect(celluloid_target).not_to receive(:load_data)
|
49
|
+
obj.load_data
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#reload_data' do
|
54
|
+
context "able to reload" do
|
55
|
+
before do
|
56
|
+
obj.can_reload_at = Time.now - 1
|
57
|
+
obj.state = :ready
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should request data from the loader' do
|
61
|
+
expect(celluloid_target)
|
62
|
+
.to receive(:reload_data)
|
63
|
+
.with(instance_of(obj.subjects.class))
|
64
|
+
obj.reload_data
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should not reload subjects when state is in any kind of loading' do
|
68
|
+
%i(reloading loading).each do |state|
|
69
|
+
obj.state = state
|
70
|
+
expect(celluloid_target).not_to receive(:reload_data)
|
71
|
+
obj.reload_data
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should not allow reloading until after loading' do
|
77
|
+
expect(celluloid_target).not_to receive(:reload_data)
|
78
|
+
obj.reload_data
|
79
|
+
end
|
80
|
+
|
81
|
+
context "after initial data load" do
|
82
|
+
before do
|
83
|
+
obj.state = :ready
|
84
|
+
obj.set_reload_at_time
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should not allow reloading after first load' do
|
88
|
+
expect(celluloid_target).not_to receive(:reload_data)
|
89
|
+
obj.reload_data
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when reload time gaurds has past" do
|
93
|
+
it 'should allow reloading after timer has reset' do
|
94
|
+
obj.can_reload_at = Time.now - 1
|
95
|
+
expect(celluloid_target).to receive(:reload_data)
|
96
|
+
obj.reload_data
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
26
102
|
end
|
@@ -10,7 +10,12 @@ class SpecAdapter < Cellect::Server::Adapters::Default
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def load_data_for(workflow_name)
|
13
|
-
fixtures.fetch(workflow_name, { }).fetch 'entries', []
|
13
|
+
entries = fixtures.fetch(workflow_name, { }).fetch 'entries', []
|
14
|
+
if block_given?
|
15
|
+
entries.each { |entry| yield entry }
|
16
|
+
else
|
17
|
+
entries
|
18
|
+
end
|
14
19
|
end
|
15
20
|
|
16
21
|
def fixtures
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cellect-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Parrish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -209,6 +209,7 @@ files:
|
|
209
209
|
- spec/spec_helper.rb
|
210
210
|
- spec/support/cellect_helper.rb
|
211
211
|
- spec/support/shared_api_context.rb
|
212
|
+
- spec/support/shared_examples_for_loader.rb
|
212
213
|
- spec/support/shared_examples_for_set.rb
|
213
214
|
- spec/support/shared_examples_for_workflow.rb
|
214
215
|
- spec/support/spec_adapter.rb
|
@@ -254,6 +255,7 @@ test_files:
|
|
254
255
|
- spec/spec_helper.rb
|
255
256
|
- spec/support/cellect_helper.rb
|
256
257
|
- spec/support/shared_api_context.rb
|
258
|
+
- spec/support/shared_examples_for_loader.rb
|
257
259
|
- spec/support/shared_examples_for_set.rb
|
258
260
|
- spec/support/shared_examples_for_workflow.rb
|
259
261
|
- spec/support/spec_adapter.rb
|