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.
- data/VERSION +1 -1
 - data/app/models/rea/category.rb +4 -0
 - data/app/models/rea/category_member.rb +1 -0
 - data/app/models/rea/category_type.rb +1 -1
 - data/app/models/rea/group.rb +17 -6
 - data/app/models/rea/group_type.rb +7 -0
 - data/app/models/rea/identifier.rb +12 -3
 - data/config/locales/en.yml +4 -0
 - data/config/locales/zh-CN.yml +42 -0
 - data/db/migrate/20120601074531_create_rea_category_types.rb +1 -1
 - data/db/migrate/20120601074540_create_rea_categories.rb +1 -1
 - data/db/migrate/20120605030658_create_rea_groups.rb +14 -3
 - data/db/migrate/20120605082028_create_rea_identifiers.rb +2 -2
 - data/db/migrate/20120717080004_create_rea_group_types.rb +7 -0
 - data/engine-rea.gemspec +31 -14
 - data/lib/generators/rea/install/install_generator.rb +8 -0
 - data/lib/rails_patch.rb +26 -0
 - data/lib/rea.rb +25 -1
 - data/lib/rea/application.rb +86 -0
 - data/lib/rea/aspect_type.rb +28 -6
 - data/lib/rea/aspect_type/base.rb +3 -2
 - data/lib/rea/aspect_type/classification.rb +142 -0
 - data/lib/rea/aspect_type/description.rb +3 -2
 - data/lib/rea/aspect_type/due_date.rb +34 -0
 - data/lib/rea/aspect_type/identification.rb +38 -0
 - data/lib/rea/engine.rb +1 -3
 - data/lib/rea/meta_type.rb +1 -1
 - data/lib/rea/meta_type/agent.rb +1 -1
 - data/lib/rea/meta_type/commitment.rb +5 -6
 - data/lib/rea/meta_type/contract.rb +17 -4
 - data/lib/rea/meta_type/conversion.rb +6 -0
 - data/lib/rea/meta_type/entity.rb +61 -20
 - data/lib/rea/meta_type/event.rb +17 -24
 - data/lib/rea/meta_type/exchange.rb +6 -0
 - data/lib/rea/meta_type/group.rb +25 -0
 - data/lib/rea/meta_type/process.rb +28 -0
 - data/lib/rea/meta_type/resource.rb +5 -1
 - data/lib/rea/model.rb +65 -0
 - data/lib/rea/settings.rb +58 -0
 - data/spec/dummy/db/schema.rb +1 -56
 - data/spec/generators/rea/install/install_generator_spec.rb +2 -0
 - data/spec/models/rea/category_member_spec.rb +5 -1
 - data/spec/models/rea/category_spec.rb +19 -1
 - data/spec/models/rea/category_type_spec.rb +24 -1
 - data/spec/models/rea/group_spec.rb +34 -1
 - data/spec/models/rea/group_type_spec.rb +8 -0
 - data/spec/rea/application_spec.rb +8 -0
 - data/spec/rea/aspect_type/classification_spec.rb +107 -0
 - data/spec/rea/aspect_type/due_date_spec.rb +75 -0
 - data/spec/rea/aspect_type/identification_spec.rb +64 -0
 - data/spec/rea/aspect_type_spec.rb +44 -0
 - data/spec/rea/engine_spec.rb +0 -3
 - data/spec/rea/meta_type/agent_spec.rb +28 -0
 - data/spec/rea/meta_type/commitment_spec.rb +45 -0
 - data/spec/rea/meta_type/contract_spec.rb +42 -0
 - data/spec/rea/meta_type/entity_spec.rb +58 -0
 - data/spec/rea/meta_type/event_spec.rb +21 -0
 - data/spec/rea/meta_type/group_spec.rb +55 -0
 - data/spec/rea/meta_type/process_spec.rb +5 -0
 - data/spec/rea/meta_type/resource_spec.rb +65 -0
 - data/spec/rea/meta_type_spec.rb +1 -1
 - data/spec/rea/model_spec.rb +79 -0
 - metadata +32 -15
 - data/app/models/rea/group_entity.rb +0 -7
 - data/db/migrate/20120605030708_create_rea_group_entities.rb +0 -9
 - data/lib/rea/aspect_type/classification_aspect.rb +0 -75
 - data/lib/rea/aspect_type/due_date_type.rb +0 -5
 - data/lib/rea/aspect_type/identifier_setup.rb +0 -7
 - data/lib/rea/dsl.rb +0 -24
 - data/lib/rea/dsl/behavioral.rb +0 -50
 - data/lib/rea/dsl/structural.rb +0 -53
 - data/spec/models/rea/group_entity_spec.rb +0 -5
 - data/spec/rea/dsl/behavioral_spec.rb +0 -149
 - data/spec/rea/dsl/structural_spec.rb +0 -299
 - data/spec/rea/dsl_spec.rb +0 -11
 
| 
         @@ -0,0 +1,107 @@ 
     | 
|
| 
      
 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
         
     | 
| 
         @@ -0,0 +1,75 @@ 
     | 
|
| 
      
 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 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 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 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 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
         
     | 
    
        data/spec/rea/engine_spec.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 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
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 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
         
     | 
| 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 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
         
     | 
| 
         @@ -0,0 +1,58 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Rea::MetaType::Entity do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              with_model :agent do
         
     | 
| 
      
 6 
     | 
    
         
            +
                table do |t|
         
     | 
| 
      
 7 
     | 
    
         
            +
                  t.string :name
         
     | 
| 
      
 8 
     | 
    
         
            +
                  t.references :group
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              with_model :group do
         
     | 
| 
      
 13 
     | 
    
         
            +
                table do |t|
         
     | 
| 
      
 14 
     | 
    
         
            +
                  t.string :name
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              before :each do
         
     | 
| 
      
 19 
     | 
    
         
            +
                Rea.model do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  entities do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    group :group
         
     | 
| 
      
 22 
     | 
    
         
            +
                    agent :agent do
         
     | 
| 
      
 23 
     | 
    
         
            +
                      grouping :group
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              context :syntax do
         
     | 
| 
      
 30 
     | 
    
         
            +
                subject { Rea.context.symbol_table[:agent] }
         
     | 
| 
      
 31 
     | 
    
         
            +
                it { should == Agent }
         
     | 
| 
      
 32 
     | 
    
         
            +
                context :group_reflect do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  subject { Agent.reflect_on_association(:group) }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  it { should_not be_nil }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  its(:macro) { should == :belongs_to }
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              context :model do
         
     | 
| 
      
 41 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  Agent.delete_all
         
     | 
| 
      
 43 
     | 
    
         
            +
                  Group.delete_all
         
     | 
| 
      
 44 
     | 
    
         
            +
                  Group.create! :name=>:group
         
     | 
| 
      
 45 
     | 
    
         
            +
                  2.times do
         
     | 
| 
      
 46 
     | 
    
         
            +
                    Agent.create! :name=>:agent, :group_id=>Group.last.id
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
                context :class do
         
     | 
| 
      
 50 
     | 
    
         
            +
                  subject { Agent }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  it :groups_for do
         
     | 
| 
      
 52 
     | 
    
         
            +
                    subject.groups_for(:group).should have(1).items
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     |