engine-rea 0.2.1 → 0.2.2

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.
Files changed (75) hide show
  1. data/VERSION +1 -1
  2. data/app/models/rea/category.rb +4 -0
  3. data/app/models/rea/category_member.rb +1 -0
  4. data/app/models/rea/category_type.rb +1 -1
  5. data/app/models/rea/group.rb +17 -6
  6. data/app/models/rea/group_type.rb +7 -0
  7. data/app/models/rea/identifier.rb +12 -3
  8. data/config/locales/en.yml +4 -0
  9. data/config/locales/zh-CN.yml +42 -0
  10. data/db/migrate/20120601074531_create_rea_category_types.rb +1 -1
  11. data/db/migrate/20120601074540_create_rea_categories.rb +1 -1
  12. data/db/migrate/20120605030658_create_rea_groups.rb +14 -3
  13. data/db/migrate/20120605082028_create_rea_identifiers.rb +2 -2
  14. data/db/migrate/20120717080004_create_rea_group_types.rb +7 -0
  15. data/engine-rea.gemspec +31 -14
  16. data/lib/generators/rea/install/install_generator.rb +8 -0
  17. data/lib/rails_patch.rb +26 -0
  18. data/lib/rea.rb +25 -1
  19. data/lib/rea/application.rb +86 -0
  20. data/lib/rea/aspect_type.rb +28 -6
  21. data/lib/rea/aspect_type/base.rb +3 -2
  22. data/lib/rea/aspect_type/classification.rb +142 -0
  23. data/lib/rea/aspect_type/description.rb +3 -2
  24. data/lib/rea/aspect_type/due_date.rb +34 -0
  25. data/lib/rea/aspect_type/identification.rb +38 -0
  26. data/lib/rea/engine.rb +1 -3
  27. data/lib/rea/meta_type.rb +1 -1
  28. data/lib/rea/meta_type/agent.rb +1 -1
  29. data/lib/rea/meta_type/commitment.rb +5 -6
  30. data/lib/rea/meta_type/contract.rb +17 -4
  31. data/lib/rea/meta_type/conversion.rb +6 -0
  32. data/lib/rea/meta_type/entity.rb +61 -20
  33. data/lib/rea/meta_type/event.rb +17 -24
  34. data/lib/rea/meta_type/exchange.rb +6 -0
  35. data/lib/rea/meta_type/group.rb +25 -0
  36. data/lib/rea/meta_type/process.rb +28 -0
  37. data/lib/rea/meta_type/resource.rb +5 -1
  38. data/lib/rea/model.rb +65 -0
  39. data/lib/rea/settings.rb +58 -0
  40. data/spec/dummy/db/schema.rb +1 -56
  41. data/spec/generators/rea/install/install_generator_spec.rb +2 -0
  42. data/spec/models/rea/category_member_spec.rb +5 -1
  43. data/spec/models/rea/category_spec.rb +19 -1
  44. data/spec/models/rea/category_type_spec.rb +24 -1
  45. data/spec/models/rea/group_spec.rb +34 -1
  46. data/spec/models/rea/group_type_spec.rb +8 -0
  47. data/spec/rea/application_spec.rb +8 -0
  48. data/spec/rea/aspect_type/classification_spec.rb +107 -0
  49. data/spec/rea/aspect_type/due_date_spec.rb +75 -0
  50. data/spec/rea/aspect_type/identification_spec.rb +64 -0
  51. data/spec/rea/aspect_type_spec.rb +44 -0
  52. data/spec/rea/engine_spec.rb +0 -3
  53. data/spec/rea/meta_type/agent_spec.rb +28 -0
  54. data/spec/rea/meta_type/commitment_spec.rb +45 -0
  55. data/spec/rea/meta_type/contract_spec.rb +42 -0
  56. data/spec/rea/meta_type/entity_spec.rb +58 -0
  57. data/spec/rea/meta_type/event_spec.rb +21 -0
  58. data/spec/rea/meta_type/group_spec.rb +55 -0
  59. data/spec/rea/meta_type/process_spec.rb +5 -0
  60. data/spec/rea/meta_type/resource_spec.rb +65 -0
  61. data/spec/rea/meta_type_spec.rb +1 -1
  62. data/spec/rea/model_spec.rb +79 -0
  63. metadata +32 -15
  64. data/app/models/rea/group_entity.rb +0 -7
  65. data/db/migrate/20120605030708_create_rea_group_entities.rb +0 -9
  66. data/lib/rea/aspect_type/classification_aspect.rb +0 -75
  67. data/lib/rea/aspect_type/due_date_type.rb +0 -5
  68. data/lib/rea/aspect_type/identifier_setup.rb +0 -7
  69. data/lib/rea/dsl.rb +0 -24
  70. data/lib/rea/dsl/behavioral.rb +0 -50
  71. data/lib/rea/dsl/structural.rb +0 -53
  72. data/spec/models/rea/group_entity_spec.rb +0 -5
  73. data/spec/rea/dsl/behavioral_spec.rb +0 -149
  74. data/spec/rea/dsl/structural_spec.rb +0 -299
  75. data/spec/rea/dsl_spec.rb +0 -11
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rea::MetaType::Event do
4
+ with_model :event do
5
+ table do |t|
6
+ end
7
+ model do
8
+ end
9
+ end
10
+
11
+ before(:each) do
12
+ Rea.model do
13
+ entities do
14
+ event :event, :type=>:increment
15
+ end
16
+ end
17
+ end
18
+
19
+ subject { Rea.context.symbol_table[:event] }
20
+ its(:type) { should == :increment }
21
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rea::MetaType::Group do
4
+
5
+ with_model :agent do
6
+ table do |t|
7
+ t.string :name
8
+ t.references :group
9
+ end
10
+ model do
11
+ end
12
+ end
13
+
14
+ with_model :group do
15
+ table do |t|
16
+ t.string :name
17
+ end
18
+ end
19
+
20
+ before :each do
21
+
22
+ Rea.model do
23
+ entities do
24
+ group :group do
25
+ grouped :agent
26
+ end
27
+ agent :agent do
28
+ grouping :group, :class_name=>Group.name
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ context :syntax do
35
+ context :symbol do
36
+ context :group do
37
+ subject { Rea.context.symbol_table[:group] }
38
+ it { should == Group }
39
+ its(:entity_types) { should include :agent }
40
+ end
41
+ end
42
+ end
43
+
44
+ context :model do
45
+ before :each do
46
+ Agent.delete_all
47
+ Group.delete_all
48
+ Group.create! :name=>:group
49
+ 2.times do
50
+ Agent.create! :name=>:agent, :group_id=>Group.last.id
51
+ end
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rea::MetaType::Process do
4
+
5
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ class SimpleResource
4
+ end
5
+
6
+ describe Rea::MetaType::Resource do
7
+
8
+ context :simple_resource_define do
9
+ with_model :event do
10
+ table do |t|
11
+ t.references :resource
12
+ t.references :provider
13
+ t.decimal :amount
14
+ end
15
+ model do
16
+ end
17
+ end
18
+
19
+ before(:each) do
20
+ Rea.model do
21
+ entities do
22
+ resource :simple_resource, :entity_type=>:simple do
23
+ item :rp, :id=>1, :value=>1
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ context :class do
30
+ subject { SimpleResource }
31
+ its(:rp) { should be_a_kind_of SimpleResource }
32
+ its(:entity_type) { should == :simple }
33
+ it { subject.find(1).should be_a_kind_of SimpleResource }
34
+ end
35
+ end
36
+
37
+ context :active_record_resource_define do
38
+ with_model :resource do
39
+ table do |t|
40
+ t.string :name
41
+ t.decimal :value
42
+ end
43
+ end
44
+
45
+ before(:each) do
46
+ Rea.model do
47
+ entities do
48
+ resource :resource
49
+ end
50
+ end
51
+ end
52
+
53
+ subject { Resource.new :name=>:name, :value=>1 }
54
+ it { should be_valid }
55
+ it :name_not_nil do
56
+ subject.name = nil
57
+ should_not be_valid
58
+ end
59
+ it :value_not_nil do
60
+ subject.value = nil
61
+ should_not be_valid
62
+ end
63
+
64
+ end
65
+ end
@@ -6,6 +6,6 @@ describe Rea::MetaType do
6
6
 
7
7
  subject { described_class }
8
8
 
9
- it { subject.autoload?(:Event).should be_true }
9
+ it(:auto_loaded) { Rea::MetaType::Event.should be_a_kind_of Module }
10
10
  end
11
11
  end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rea::Model do
4
+
5
+ context Rea do
6
+ subject { Rea }
7
+ its(:context) { should be_a_kind_of Rea::Model::Context }
8
+ its(:public_methods) { should include :model }
9
+ it :call_model do
10
+ expect { |b|
11
+ Rea.model &b
12
+ }.to yield_control
13
+ end
14
+ end
15
+
16
+ context Rea::Model::Context do
17
+ with_model :resource do
18
+ table do |t|
19
+ end
20
+ model do
21
+ end
22
+ end
23
+
24
+ with_model :event do
25
+ table do |t|
26
+ end
27
+ model do
28
+ end
29
+ end
30
+
31
+ with_model :agent do
32
+ table do |t|
33
+ end
34
+ model do
35
+ end
36
+ end
37
+
38
+ with_model :commitment do
39
+ table do |t|
40
+ end
41
+ model do
42
+ end
43
+ end
44
+
45
+ with_model :contract do
46
+ table do |t|
47
+ end
48
+ model do
49
+ end
50
+ end
51
+
52
+ before(:each) do
53
+ Rea.model do
54
+ entities do
55
+ resource :resource
56
+ event :event
57
+ agent :agent
58
+ commitment :commitment
59
+ contract Contract
60
+ end
61
+
62
+ processes do
63
+ exchange :process_trade do
64
+ outflow :event,:resource=>:resource, :provider=>:agent
65
+ inflow :event, :resource=>:resource, :recipient=>:agent
66
+ end
67
+ conversion :process_produce do
68
+ outflow :event,:resource=>:resource, :provider=>:agent
69
+ inflow :event, :resource=>:resource, :recipient=>:agent
70
+ end
71
+ end
72
+ end
73
+ end
74
+ subject { Rea.context }
75
+ its("symbol_table.keys") { should include *%W{resource event agent
76
+ commitment contract process_trade process_produce} }
77
+ end
78
+
79
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engine-rea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
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-06-19 00:00:00.000000000 Z
12
+ date: 2012-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -290,42 +290,48 @@ files:
290
290
  - app/models/rea/category_member.rb
291
291
  - app/models/rea/category_type.rb
292
292
  - app/models/rea/group.rb
293
- - app/models/rea/group_entity.rb
293
+ - app/models/rea/group_type.rb
294
294
  - app/models/rea/identifier.rb
295
295
  - app/views/layouts/rea/application.html.erb
296
+ - config/locales/en.yml
297
+ - config/locales/zh-CN.yml
296
298
  - config/routes.rb
297
299
  - db/migrate/20120601074531_create_rea_category_types.rb
298
300
  - db/migrate/20120601074540_create_rea_categories.rb
299
301
  - db/migrate/20120605023205_create_rea_category_members.rb
300
302
  - db/migrate/20120605030658_create_rea_groups.rb
301
- - db/migrate/20120605030708_create_rea_group_entities.rb
302
303
  - db/migrate/20120605082028_create_rea_identifiers.rb
304
+ - db/migrate/20120717080004_create_rea_group_types.rb
303
305
  - engine-rea.gemspec
304
306
  - lib/engine-rea.rb
305
307
  - lib/generators/rea/install/USAGE
306
308
  - lib/generators/rea/install/install_generator.rb
309
+ - lib/rails_patch.rb
307
310
  - lib/rea.rb
311
+ - lib/rea/application.rb
308
312
  - lib/rea/aspect_type.rb
309
313
  - lib/rea/aspect_type/base.rb
310
- - lib/rea/aspect_type/classification_aspect.rb
314
+ - lib/rea/aspect_type/classification.rb
311
315
  - lib/rea/aspect_type/description.rb
312
- - lib/rea/aspect_type/due_date_type.rb
313
- - lib/rea/aspect_type/identifier_setup.rb
314
- - lib/rea/dsl.rb
315
- - lib/rea/dsl/behavioral.rb
316
- - lib/rea/dsl/structural.rb
316
+ - lib/rea/aspect_type/due_date.rb
317
+ - lib/rea/aspect_type/identification.rb
317
318
  - lib/rea/engine.rb
318
319
  - lib/rea/meta_type.rb
319
320
  - lib/rea/meta_type/agent.rb
320
321
  - lib/rea/meta_type/commitment.rb
321
322
  - lib/rea/meta_type/contract.rb
323
+ - lib/rea/meta_type/conversion.rb
322
324
  - lib/rea/meta_type/entity.rb
323
325
  - lib/rea/meta_type/event.rb
326
+ - lib/rea/meta_type/exchange.rb
324
327
  - lib/rea/meta_type/group.rb
328
+ - lib/rea/meta_type/process.rb
325
329
  - lib/rea/meta_type/resource.rb
326
330
  - lib/rea/meta_type/schedule.rb
327
331
  - lib/rea/meta_type/type.rb
332
+ - lib/rea/model.rb
328
333
  - lib/rea/plugins/active_model.rb
334
+ - lib/rea/settings.rb
329
335
  - lib/tasks/cucumber.rake
330
336
  - lib/tasks/rea_tasks.rake
331
337
  - lib/tasks/watchr.rake
@@ -369,14 +375,25 @@ files:
369
375
  - spec/models/rea/category_member_spec.rb
370
376
  - spec/models/rea/category_spec.rb
371
377
  - spec/models/rea/category_type_spec.rb
372
- - spec/models/rea/group_entity_spec.rb
373
378
  - spec/models/rea/group_spec.rb
379
+ - spec/models/rea/group_type_spec.rb
374
380
  - spec/models/rea/identifier_spec.rb
375
- - spec/rea/dsl/behavioral_spec.rb
376
- - spec/rea/dsl/structural_spec.rb
377
- - spec/rea/dsl_spec.rb
381
+ - spec/rea/application_spec.rb
382
+ - spec/rea/aspect_type/classification_spec.rb
383
+ - spec/rea/aspect_type/due_date_spec.rb
384
+ - spec/rea/aspect_type/identification_spec.rb
385
+ - spec/rea/aspect_type_spec.rb
378
386
  - spec/rea/engine_spec.rb
387
+ - spec/rea/meta_type/agent_spec.rb
388
+ - spec/rea/meta_type/commitment_spec.rb
389
+ - spec/rea/meta_type/contract_spec.rb
390
+ - spec/rea/meta_type/entity_spec.rb
391
+ - spec/rea/meta_type/event_spec.rb
392
+ - spec/rea/meta_type/group_spec.rb
393
+ - spec/rea/meta_type/process_spec.rb
394
+ - spec/rea/meta_type/resource_spec.rb
379
395
  - spec/rea/meta_type_spec.rb
396
+ - spec/rea/model_spec.rb
380
397
  - spec/spec_helper.rb
381
398
  homepage: http://github.com/lazing/engine-rea
382
399
  licenses:
@@ -393,7 +410,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
393
410
  version: '0'
394
411
  segments:
395
412
  - 0
396
- hash: -104373165
413
+ hash: -1070606783
397
414
  required_rubygems_version: !ruby/object:Gem::Requirement
398
415
  none: false
399
416
  requirements:
@@ -1,7 +0,0 @@
1
- module Rea
2
- class GroupEntity < ActiveRecord::Base
3
- # attr_accessible :title, :body
4
- belongs_to :group
5
- belongs_to :entity, :polymorphic=>true
6
- end
7
- end
@@ -1,9 +0,0 @@
1
- class CreateReaGroupEntities < ActiveRecord::Migration
2
- def change
3
- create_table :rea_group_entities do |t|
4
- t.references :entity
5
- t.string :entity_type
6
- t.references :group
7
- end
8
- end
9
- end
@@ -1,75 +0,0 @@
1
- module Rea
2
- module AspectType
3
- module Classification
4
- def self.included base
5
- base.extend ClassMethods
6
- base.scope :by_category, lambda { |category_type_name, category_name|
7
- $field_name = base.rea_ast[:classification][category_type_name.to_sym]
8
- base.where($field_name.to_sym=>category_name)
9
- }
10
- end
11
-
12
- def is category
13
- $field_name = self.class.rea_ast[:classification][category.category_type.name.to_sym]
14
- self.send($field_name).to_sym == category.name.to_sym
15
- end
16
-
17
- def is_in category
18
- field_name = self.class.rea_ast[:classification][category.category_type.name.to_sym]
19
- $current = category.class.find_by_name(self.send(field_name))
20
- while($current) do
21
- return true if $current.name.to_s == category.name.to_s
22
- $current = $current.parent_category
23
- end
24
- return false
25
- end
26
-
27
- module CategoryType
28
- def category *category_names, &block
29
- options = category_names.extract_options!
30
- category_names.flatten.each do |name|
31
- category = self.categories.find_or_create_by_name name, options
32
- block.call(category) if block_given?
33
- end
34
- end
35
- end
36
-
37
- module Category
38
- def category *category_names, &block
39
- options = category_names.extract_options!
40
- options = {:category_type_id=>self.category_type_id, :category_id=>self.id}.merge(options)
41
- category_names.flatten.each do |name|
42
- category = self.child_categories.find_or_create_by_name name, options
43
- block.call(category) if block_given?
44
- end
45
- end
46
- end
47
-
48
- module ClassMethods
49
- def category_type category_type_name, options={}, &block
50
- category_type = ::Rea::CategoryType.find_or_create_by_name category_type_name, options
51
- block.call(category_type) if block_given?
52
- end
53
-
54
-
55
- def member name, options={}
56
- options = { :name=>name.to_s }.merge options
57
- rea[name] = ::Rea::AspectType::MemberType.new options
58
- rea_ast[:classification][options[:type]] = name
59
- end
60
- end
61
- end
62
- class ClassificationAspect < Base
63
- end
64
-
65
- class MemberType < Base
66
- attr_reader :name, :type
67
-
68
- def category_options
69
- category_type = ::Rea::CategoryType.find_by_name(self.type.to_s)
70
- category_type.categories
71
- end
72
- end
73
- end
74
-
75
- end