engine-rea 0.2.2 → 0.3.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.
- data/.rspec +1 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +40 -35
- data/VERSION +1 -1
- data/app/models/rea/categories_entity.rb +7 -0
- data/app/models/rea/category.rb +18 -7
- data/app/models/rea/classification.rb +7 -0
- data/app/models/rea/entities_group.rb +7 -0
- data/app/models/rea/group.rb +5 -17
- data/app/models/rea/rea.rb +7 -0
- data/config/locales/en.yml +2 -0
- data/config/locales/zh-CN.yml +16 -17
- data/db/migrate/20121129100245_create_rea_groups.rb +18 -0
- data/db/migrate/20121129100748_create_rea_categories.rb +19 -0
- data/db/migrate/20121129101744_create_rea_classifications.rb +29 -0
- data/db/migrate/20121130051633_create_rea_entities_groups.rb +13 -0
- data/db/migrate/20121130100600_create_rea_categories_entities.rb +13 -0
- data/engine-rea.gemspec +27 -59
- data/lib/generators/rea/install/install_generator.rb +4 -4
- data/lib/rea/active_record_ext.rb +82 -0
- data/lib/rea/application.rb +55 -21
- data/lib/rea/engine.rb +8 -2
- data/lib/rea.rb +5 -10
- data/spec/dummy/db/schema.rb +61 -1
- data/spec/models/rea/categories_entity_spec.rb +7 -0
- data/spec/models/rea/category_spec.rb +10 -19
- data/spec/models/rea/classification_spec.rb +6 -0
- data/spec/models/rea/entities_group_spec.rb +7 -0
- data/spec/models/rea/group_spec.rb +3 -35
- data/spec/rea/active_record_ext_spec.rb +35 -0
- data/spec/rea/application_spec.rb +17 -0
- data/spec/spec_helper.rb +3 -0
- metadata +40 -59
- data/app/models/rea/category_member.rb +0 -8
- data/app/models/rea/category_type.rb +0 -7
- data/app/models/rea/group_type.rb +0 -7
- data/app/models/rea/identifier.rb +0 -51
- data/app/views/layouts/rea/application.html.erb +0 -14
- data/db/migrate/20120601074531_create_rea_category_types.rb +0 -11
- data/db/migrate/20120601074540_create_rea_categories.rb +0 -12
- data/db/migrate/20120605023205_create_rea_category_members.rb +0 -12
- data/db/migrate/20120605030658_create_rea_groups.rb +0 -20
- data/db/migrate/20120605082028_create_rea_identifiers.rb +0 -11
- data/db/migrate/20120717080004_create_rea_group_types.rb +0 -7
- data/lib/rea/aspect_type/base.rb +0 -10
- data/lib/rea/aspect_type/classification.rb +0 -142
- data/lib/rea/aspect_type/description.rb +0 -8
- data/lib/rea/aspect_type/due_date.rb +0 -34
- data/lib/rea/aspect_type/identification.rb +0 -38
- data/lib/rea/aspect_type.rb +0 -33
- data/lib/rea/meta_type/agent.rb +0 -10
- data/lib/rea/meta_type/commitment.rb +0 -26
- data/lib/rea/meta_type/contract.rb +0 -32
- data/lib/rea/meta_type/conversion.rb +0 -6
- data/lib/rea/meta_type/entity.rb +0 -91
- data/lib/rea/meta_type/event.rb +0 -39
- data/lib/rea/meta_type/exchange.rb +0 -6
- data/lib/rea/meta_type/group.rb +0 -25
- data/lib/rea/meta_type/process.rb +0 -28
- data/lib/rea/meta_type/resource.rb +0 -14
- data/lib/rea/meta_type/schedule.rb +0 -0
- data/lib/rea/meta_type/type.rb +0 -0
- data/lib/rea/meta_type.rb +0 -8
- data/lib/rea/model.rb +0 -65
- data/lib/rea/plugins/active_model.rb +0 -18
- data/spec/models/rea/category_member_spec.rb +0 -9
- data/spec/models/rea/category_type_spec.rb +0 -28
- data/spec/models/rea/group_type_spec.rb +0 -8
- data/spec/models/rea/identifier_spec.rb +0 -48
- data/spec/rea/aspect_type/classification_spec.rb +0 -107
- data/spec/rea/aspect_type/due_date_spec.rb +0 -75
- data/spec/rea/aspect_type/identification_spec.rb +0 -64
- data/spec/rea/aspect_type_spec.rb +0 -44
- data/spec/rea/meta_type/agent_spec.rb +0 -28
- data/spec/rea/meta_type/commitment_spec.rb +0 -45
- data/spec/rea/meta_type/contract_spec.rb +0 -42
- data/spec/rea/meta_type/entity_spec.rb +0 -58
- data/spec/rea/meta_type/event_spec.rb +0 -21
- data/spec/rea/meta_type/group_spec.rb +0 -55
- data/spec/rea/meta_type/process_spec.rb +0 -5
- data/spec/rea/meta_type/resource_spec.rb +0 -65
- data/spec/rea/meta_type_spec.rb +0 -11
- data/spec/rea/model_spec.rb +0 -79
data/lib/rea/meta_type/group.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Rea
|
2
|
-
module MetaType
|
3
|
-
module Group
|
4
|
-
def self.included base
|
5
|
-
base.fields = [:name]
|
6
|
-
base.send :include, Entity
|
7
|
-
base.extend ClassMethods
|
8
|
-
end
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
|
12
|
-
def entity_types
|
13
|
-
@@entity_types ||= []
|
14
|
-
end
|
15
|
-
|
16
|
-
def grouped *names
|
17
|
-
$options = names.extract_options!
|
18
|
-
names.each do |name|
|
19
|
-
entity_types << name
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Rea
|
2
|
-
module MetaType
|
3
|
-
class Process
|
4
|
-
|
5
|
-
def inflows
|
6
|
-
@inflows ||= []
|
7
|
-
end
|
8
|
-
|
9
|
-
def outflows
|
10
|
-
@outflows ||= []
|
11
|
-
end
|
12
|
-
|
13
|
-
def inflow *names, &block
|
14
|
-
$options = names.extract_options!
|
15
|
-
names.each do |name|
|
16
|
-
inflows << name
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def outflow *names, &block
|
21
|
-
$options = names.extract_options!
|
22
|
-
names.each do |name|
|
23
|
-
outflows << name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
File without changes
|
data/lib/rea/meta_type/type.rb
DELETED
File without changes
|
data/lib/rea/meta_type.rb
DELETED
data/lib/rea/model.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Rea
|
2
|
-
module Model
|
3
|
-
class Context
|
4
|
-
|
5
|
-
def entities &block
|
6
|
-
instance_eval &block
|
7
|
-
end
|
8
|
-
|
9
|
-
%W{resource event agent commitment contract group}.each do |type_name|
|
10
|
-
define_method type_name do |*names, &block|
|
11
|
-
define_entity type_name, *names, &block
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def processes &block
|
16
|
-
instance_eval &block
|
17
|
-
end
|
18
|
-
|
19
|
-
def exchange name, &block
|
20
|
-
$exchange = ::Rea::MetaType::Exchange.new
|
21
|
-
$exchange.instance_eval &block
|
22
|
-
symbol_table[name] = $exchange
|
23
|
-
end
|
24
|
-
|
25
|
-
def conversion name, &block
|
26
|
-
$conversion = ::Rea::MetaType::Conversion.new
|
27
|
-
$conversion.instance_eval &block
|
28
|
-
symbol_table[name] = $conversion
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def symbol_table
|
33
|
-
@symbol_table ||= {}.with_indifferent_access
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
def define_entity type, *names, &block
|
38
|
-
$type_module = "Rea::MetaType::#{type.to_s.camelize}".constantize
|
39
|
-
$options = names.extract_options!
|
40
|
-
names.each do |name|
|
41
|
-
$target_class = name.is_a?(Symbol) ? name.to_s.camelize.constantize : name
|
42
|
-
$target_class.class_eval do
|
43
|
-
cattr_accessor :fields
|
44
|
-
include $type_module
|
45
|
-
end
|
46
|
-
$target_class.setup $options unless $options.empty?
|
47
|
-
$target_class.class_eval &block if block_given?
|
48
|
-
$name = name.is_a?(Symbol)? name : name.to_s.underscore.to_sym
|
49
|
-
symbol_table[$name] = $target_class
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.included base
|
55
|
-
end
|
56
|
-
|
57
|
-
def model &block
|
58
|
-
self.context.instance_eval &block
|
59
|
-
end
|
60
|
-
|
61
|
-
def context
|
62
|
-
@context ||= Context.new
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Rea
|
2
|
-
module Plugins
|
3
|
-
module ActiveModel
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
include ::ActiveModel::Conversion
|
7
|
-
include ::ActiveModel::Validations
|
8
|
-
include ::ActiveModel::Serialization
|
9
|
-
include ::ActiveModel::Serializers::Xml
|
10
|
-
include ::ActiveModel::Serializers::JSON
|
11
|
-
|
12
|
-
included do
|
13
|
-
extend ::ActiveModel::Naming
|
14
|
-
extend ::ActiveModel::Translation
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::CategoryType do
|
4
|
-
|
5
|
-
context :class do
|
6
|
-
subject { described_class }
|
7
|
-
it { subject.respond_to?(:category_type).should be_true }
|
8
|
-
|
9
|
-
it :could_create_instance do
|
10
|
-
expect { subject.category_type :category_type_test }.to change {Rea::CategoryType.count}
|
11
|
-
end
|
12
|
-
|
13
|
-
it :could_yield_block do
|
14
|
-
expect { |b| subject.category_type :some, &b }.to yield_control
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context :category do
|
19
|
-
before :all do
|
20
|
-
ct = described_class.create! :name=>:type
|
21
|
-
ct.category :c1, :c2
|
22
|
-
end
|
23
|
-
|
24
|
-
subject { described_class.first }
|
25
|
-
its(:categories) { should have(2).items }
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::Identifier do
|
4
|
-
context :validation do
|
5
|
-
context :correct_setup do
|
6
|
-
|
7
|
-
subject { described_class.new :name=>:name, :id_rule=>'AAABBB#{last_value}'}
|
8
|
-
|
9
|
-
it :stub do end
|
10
|
-
|
11
|
-
after :each do
|
12
|
-
should be_valid
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
context :error_setup do
|
18
|
-
subject { described_class.new :name=>:name, :id_rule=>'AAABBB' }
|
19
|
-
it :without_name do subject.name=nil end
|
20
|
-
it :without_id_rule do subject.id_rule = nil end
|
21
|
-
it :malformed_id_rule do subject.id_rule = 'AAA#{a' end
|
22
|
-
it :malformed_value_reset_rule do subject.value_reset_rule = 'a > ' end
|
23
|
-
|
24
|
-
after :each do
|
25
|
-
should_not be_valid
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context :generate do
|
31
|
-
context :without_value_reset_rule do
|
32
|
-
subject { described_class.create! :name=>:name, :id_rule=>'AAA#{"%03d" % last_value}' }
|
33
|
-
it :test_id_value do
|
34
|
-
subject.generate.should =~ /AAA\d{3}/
|
35
|
-
subject.reload
|
36
|
-
subject.last_value.should == 1
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context :with_value_reset_rule do
|
41
|
-
subject { described_class.create! :name=>:name, :id_rule=>'AAA', :value_reset_rule=>'true' }
|
42
|
-
before(:each) { subject.generate }
|
43
|
-
5.times do
|
44
|
-
its(:last_value) { should == 1 }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::AspectType::Classification do
|
4
|
-
let(:category_type) { Rea::CategoryType.create :name=>:category_type }
|
5
|
-
let(:category_type_multi) { Rea::CategoryType.create :name=>:category_type_multi }
|
6
|
-
|
7
|
-
before :all do
|
8
|
-
category_type.category :cate_l1_1, :cate_l1_2
|
9
|
-
category_type.category :cate_l1_3 do
|
10
|
-
category :cate_l2_1, :cate_l2_2
|
11
|
-
end
|
12
|
-
category_type_multi.category :catem_l1_1, :catem_l1_2
|
13
|
-
category_type_multi.category :catem_l1_3 do
|
14
|
-
category :catem_l2_1, :catem_l2_2
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
context :syntax_symbol_table_classification_aspect do
|
20
|
-
with_model :resource do
|
21
|
-
table do |t|
|
22
|
-
t.string :name
|
23
|
-
t.decimal :value
|
24
|
-
t.references :member_type
|
25
|
-
end
|
26
|
-
model do
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
before :each do
|
31
|
-
Rea.model do
|
32
|
-
entities do
|
33
|
-
resource :resource do
|
34
|
-
classification :auto_classification=>false do
|
35
|
-
member :member_type, :multiple_select=>false do
|
36
|
-
category :category_type
|
37
|
-
end
|
38
|
-
member :member_type_multi, :multiple_select=>true do
|
39
|
-
category :category_type_multi
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
|
48
|
-
subject { Rea.context.symbol_table[:resource_classification_aspect] }
|
49
|
-
it { should_not be_nil }
|
50
|
-
it { should be_a_kind_of Rea::AspectType::Classification::Aspect }
|
51
|
-
its(:members) { should have(2).items }
|
52
|
-
it { subject.member_type_for(:category_type).should == :member_type }
|
53
|
-
it { subject.member_type_for(:category_type_multi).should == :member_type_multi }
|
54
|
-
|
55
|
-
context :members do
|
56
|
-
subject { Rea.context.symbol_table[:resource_classification_aspect].members[:member_type_multi] }
|
57
|
-
its(:multiple_select) { should be_true }
|
58
|
-
end
|
59
|
-
|
60
|
-
context :model do
|
61
|
-
let(:category) { ::Rea::Category.find_by_name :cate_l1_1 }
|
62
|
-
|
63
|
-
context :class do
|
64
|
-
before :each do
|
65
|
-
Resource.delete_all
|
66
|
-
10.times do
|
67
|
-
Resource.create! :name=>:name, :value=>10, :member_type_id=>category.id
|
68
|
-
end
|
69
|
-
end
|
70
|
-
subject { Resource }
|
71
|
-
it { subject.by_category(category).size.should == 10 }
|
72
|
-
it { subject.categories_for(:member_type).size.should == 5 }
|
73
|
-
end
|
74
|
-
|
75
|
-
context :instance do
|
76
|
-
subject { Resource.create! :name=>:name, :value=>1, :member_type_id=>category.id }
|
77
|
-
it { subject.is?(category).should be_true }
|
78
|
-
it { subject.is_in?(category).should be_true }
|
79
|
-
end
|
80
|
-
|
81
|
-
context :instance_multi do
|
82
|
-
let(:resource_multi) do
|
83
|
-
ids = Rea::CategoryType.find_by_name(:category_type_multi).category_ids
|
84
|
-
Resource.create! :name=>:name, :value=>1, :member_type_multi_ids=> ids
|
85
|
-
end
|
86
|
-
|
87
|
-
subject { resource_multi }
|
88
|
-
|
89
|
-
its(:member_type_multi) { should have(5).items }
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context :category_type_and_category do
|
97
|
-
|
98
|
-
context :category_type do
|
99
|
-
subject { category_type }
|
100
|
-
its(:categories) { should have(5).items }
|
101
|
-
context :category do
|
102
|
-
subject{ Rea::Category.find_by_name 'cate_l1_3' }
|
103
|
-
its(:child_categories) { should have(2).items }
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::AspectType::DueDate do
|
4
|
-
|
5
|
-
with_model :resource do
|
6
|
-
table do |t|
|
7
|
-
t.string :name
|
8
|
-
t.decimal :value
|
9
|
-
t.datetime :deadline
|
10
|
-
end
|
11
|
-
model do
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
before :each do
|
16
|
-
Rea.model do
|
17
|
-
entities do
|
18
|
-
resource :resource do
|
19
|
-
due_date do
|
20
|
-
member :deadline, :editable=>true
|
21
|
-
member :auto_date, :editable=>false, :activation_rule=>proc{Time.now}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context :syntax do
|
29
|
-
context :aspect do
|
30
|
-
subject { Rea.context.symbol_table[:resource_due_date_aspect] }
|
31
|
-
it(:member) { subject.respond_to?(:member).should be_true }
|
32
|
-
end
|
33
|
-
context :entity_class do
|
34
|
-
subject { Resource }
|
35
|
-
it(:expired_on){ subject.respond_to?(:expired_on).should be_true }
|
36
|
-
it(:active_on){ subject.respond_to?(:active_on).should be_true }
|
37
|
-
|
38
|
-
context :with_data do
|
39
|
-
before :each do
|
40
|
-
subject.delete_all
|
41
|
-
10.times do
|
42
|
-
subject.create :name=>:name1, :value=>1, :deadline=>1.days.ago
|
43
|
-
subject.create :name=>:name2, :value=>1, :deadline=>1.days.from_now
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
it :active_and_expired do
|
48
|
-
subject.count.should == 20
|
49
|
-
subject.active_on(:deadline).size.should == 10
|
50
|
-
subject.expired_on(:deadline).size.should == 10
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
end
|
55
|
-
context :entity_instance do
|
56
|
-
subject { Resource.new }
|
57
|
-
its(:public_methods) { should include :deadline, :deadline_state, :deadline_expired? }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context :model do
|
62
|
-
context :active do
|
63
|
-
subject { Resource.new :deadline=> 1.days.from_now }
|
64
|
-
its(:deadline_state) { should == :active }
|
65
|
-
its(:deadline_expired?) { should be_false }
|
66
|
-
end
|
67
|
-
context :expired do
|
68
|
-
subject { Resource.new :deadline=> 1.days.ago }
|
69
|
-
its(:deadline_state) { should == :expired }
|
70
|
-
its(:deadline_expired?) { should be_true }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::AspectType::Identification do
|
4
|
-
|
5
|
-
def valid_attributes
|
6
|
-
{:name=>:name, :value=>1}
|
7
|
-
end
|
8
|
-
|
9
|
-
with_model :resource do
|
10
|
-
table do |t|
|
11
|
-
t.string :name
|
12
|
-
t.decimal :value
|
13
|
-
t.string :sn
|
14
|
-
t.string :sn_other
|
15
|
-
end
|
16
|
-
model do
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
before :each do
|
21
|
-
Rea.model do
|
22
|
-
entities do
|
23
|
-
resource :resource do
|
24
|
-
identification do
|
25
|
-
identifier :sn
|
26
|
-
identifier :sn_other, :type=>"resource.sn2"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context :syntax do
|
34
|
-
subject { Rea.context.symbol_table[:resource_identification_aspect] }
|
35
|
-
its(:identifiers) { should have(2).items }
|
36
|
-
it(:default_type) { subject.identifiers[:sn].type.should == "resource.sn" }
|
37
|
-
it(:customize_type) { subject.identifiers[:sn_other].type.should == 'resource.sn2'}
|
38
|
-
end
|
39
|
-
|
40
|
-
context :callback do
|
41
|
-
before :each do
|
42
|
-
Rea::Identifier.delete_all
|
43
|
-
Rea::Identifier.create :name=>"resource.sn", :id_rule=>"RESOURCE_SN"
|
44
|
-
Rea::Identifier.create :name=>"resource.sn2", :id_rule=>"RESOUCE_SN2"
|
45
|
-
end
|
46
|
-
|
47
|
-
context :update do
|
48
|
-
let(:resource) { Resource.create! valid_attributes }
|
49
|
-
subject { resource }
|
50
|
-
before(:each) { resource.save }
|
51
|
-
it { should be_valid }
|
52
|
-
it { should_not be_sn_changed }
|
53
|
-
end
|
54
|
-
|
55
|
-
context :create do
|
56
|
-
subject { Resource.create! valid_attributes }
|
57
|
-
before(:each) { subject.reload }
|
58
|
-
its(:sn) { should == "RESOURCE_SN" }
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::AspectType do
|
4
|
-
|
5
|
-
with_model :resource do
|
6
|
-
table do |t|
|
7
|
-
t.string :name
|
8
|
-
t.decimal :value
|
9
|
-
end
|
10
|
-
model do
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
before :each do
|
15
|
-
Rea.model do
|
16
|
-
entities do
|
17
|
-
resource :resource
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def valid_attributes
|
23
|
-
{:name=>:name, :value=>1}
|
24
|
-
end
|
25
|
-
|
26
|
-
context :syntax do
|
27
|
-
subject { Resource }
|
28
|
-
|
29
|
-
%W{classification identification description due_date}.each do |method|
|
30
|
-
context "#{method}_context" do
|
31
|
-
before(:each) do
|
32
|
-
subject.send method, :name
|
33
|
-
end
|
34
|
-
it("respond_to? #{method}"){ subject.respond_to?(method).should be_true }
|
35
|
-
it("block called #{method}") do
|
36
|
-
expect { |b| subject.send(method,:"#{method}_aspect", &b) }.to yield_control
|
37
|
-
end
|
38
|
-
its("ancestors") { should include "Rea::AspectType::#{method.camelize}".constantize }
|
39
|
-
its("#{method}_aspect") { should be_a_kind_of "Rea::AspectType::#{method.camelize}::Aspect".constantize }
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::MetaType::Agent do
|
4
|
-
|
5
|
-
context :active_record_resource_define do
|
6
|
-
with_model :agent do
|
7
|
-
table do |t|
|
8
|
-
t.string :name
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
before(:each) do
|
13
|
-
Rea.model do
|
14
|
-
entities do
|
15
|
-
agent :agent
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
subject { Agent.new :name=>:name }
|
21
|
-
it { should be_valid }
|
22
|
-
it :name_not_nil do
|
23
|
-
subject.name = nil
|
24
|
-
should_not be_valid
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::MetaType::Commitment do
|
4
|
-
|
5
|
-
with_model :commitment do
|
6
|
-
table do |t|
|
7
|
-
t.references :provider
|
8
|
-
t.references :resource
|
9
|
-
t.decimal :amount
|
10
|
-
t.boolean :fulfilled
|
11
|
-
end
|
12
|
-
model do
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
before(:each) do
|
17
|
-
Rea.model do
|
18
|
-
entities do
|
19
|
-
commitment :commitment, :type=>:increment do
|
20
|
-
event_creator do
|
21
|
-
raise :callback
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context :syntax do
|
30
|
-
subject { Rea.context.symbol_table[:commitment] }
|
31
|
-
its(:ancestors) { should include Rea::MetaType::Commitment }
|
32
|
-
its(:event_handler) {should_not be_nil }
|
33
|
-
end
|
34
|
-
|
35
|
-
context :model do
|
36
|
-
subject { Commitment.new :amount=>1 }
|
37
|
-
it {
|
38
|
-
expect do |b|
|
39
|
-
Commitment.event_creator &b
|
40
|
-
subject.fulfilled = true
|
41
|
-
subject.save
|
42
|
-
end.to yield_control
|
43
|
-
}
|
44
|
-
end
|
45
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Rea::MetaType::Contract do
|
4
|
-
|
5
|
-
with_model :contract do
|
6
|
-
table do |t|
|
7
|
-
end
|
8
|
-
model do
|
9
|
-
end
|
10
|
-
end
|
11
|
-
with_model :agent do
|
12
|
-
|
13
|
-
end
|
14
|
-
with_model :commitment do
|
15
|
-
table do
|
16
|
-
end
|
17
|
-
model do
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
before(:each) do
|
22
|
-
Rea.model do
|
23
|
-
entities do
|
24
|
-
agent :agent
|
25
|
-
commitment :commitment
|
26
|
-
contract :contract do
|
27
|
-
clause :commitment
|
28
|
-
party :buyer, Agent
|
29
|
-
party :seller, :agent
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context :syntax do
|
36
|
-
subject { Rea.context.symbol_table[:contract] }
|
37
|
-
it { should_not be_nil }
|
38
|
-
its(:clauses) { should include Commitment }
|
39
|
-
its(:reflect_on_all_associations) { should have(3).items }
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|