bumbleworks 0.0.22 → 0.0.23

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.
@@ -1,3 +1,3 @@
1
1
  module Bumbleworks
2
- VERSION = "0.0.22"
2
+ VERSION = "0.0.23"
3
3
  end
@@ -2,13 +2,14 @@ module Bumbleworks
2
2
  module WorkitemEntityStorage
3
3
  class EntityNotFound < StandardError; end
4
4
 
5
- def entity
6
- if has_entity_fields?
5
+ def entity(options = {})
6
+ @entity = nil if options[:reload] == true
7
+ @entity ||= if has_entity_fields?
7
8
  klass = Bumbleworks::Support.constantize(workitem.fields['entity_type'])
8
9
  entity = klass.first_by_identifier(workitem.fields['entity_id'])
9
10
  end
10
- raise EntityNotFound unless entity
11
- entity
11
+ raise EntityNotFound unless @entity
12
+ @entity
12
13
  end
13
14
 
14
15
  def has_entity?
@@ -39,13 +39,24 @@ describe Bumbleworks::WorkitemEntityStorage do
39
39
  end
40
40
 
41
41
  describe '#entity' do
42
- class LovelyEntity
43
- def self.first_by_identifier(identifier)
44
- return nil unless identifier
45
- "Object #{identifier}"
42
+ before :all do
43
+ class LovelyEntity
44
+ attr_accessor :identifier
45
+ def initialize(identifier)
46
+ @identifier = identifier
47
+ end
48
+
49
+ def self.first_by_identifier(identifier)
50
+ return nil unless identifier
51
+ new(identifier)
52
+ end
46
53
  end
47
54
  end
48
55
 
56
+ after :all do
57
+ Object.send(:remove_const, :LovelyEntity)
58
+ end
59
+
49
60
  let(:entitied_workflow_item) {
50
61
  Ruote::Workitem.new('fields' => {
51
62
  'entity_id' => '15',
@@ -56,7 +67,7 @@ describe Bumbleworks::WorkitemEntityStorage do
56
67
 
57
68
  it 'attempts to instantiate business entity from _id and _type fields' do
58
69
  feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
59
- feh.entity.should == 'Object 15'
70
+ feh.entity.identifier.should == '15'
60
71
  end
61
72
 
62
73
  it 'throw exception if entity fields not present' do
@@ -72,5 +83,17 @@ describe Bumbleworks::WorkitemEntityStorage do
72
83
  feh.entity
73
84
  }.to raise_error Bumbleworks::WorkitemEntityStorage::EntityNotFound
74
85
  end
86
+
87
+ it 'returns same instance when called twice' do
88
+ feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
89
+ feh.entity.identifier = 'pickles'
90
+ feh.entity.identifier.should == 'pickles'
91
+ end
92
+
93
+ it 'reloads instance when called with reload option' do
94
+ feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
95
+ feh.entity.identifier = 'pickles'
96
+ feh.entity(:reload => true).identifier.should == '15'
97
+ end
75
98
  end
76
99
  end
@@ -119,13 +119,19 @@ describe Bumbleworks do
119
119
  end
120
120
 
121
121
  describe '.launch!' do
122
- class LovelyEntity
123
- attr_accessor :id
124
- def initialize(id)
125
- @id = id
122
+ before :all do
123
+ class LovelyEntity
124
+ attr_accessor :id
125
+ def initialize(id)
126
+ @id = id
127
+ end
126
128
  end
127
129
  end
128
130
 
131
+ after :all do
132
+ Object.send(:remove_const, :LovelyEntity)
133
+ end
134
+
129
135
  it 'delegates to Bumbleworks::Ruote.launch' do
130
136
  Bumbleworks::Ruote.should_receive(:launch).with(:amazing_process, :hugs => :love)
131
137
  Bumbleworks.launch!(:amazing_process, :hugs => :love)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bumbleworks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: