[Nitro] [ANN] Nitro + Og 0.22.0

Robert Wagner robbie.wilhelm at gmail.com
Tue Aug 9 12:48:44 EDT 2005


no, not quite. sorry your example is slightly too complex...
-robert

2005/8/9, David Corbin <dcorbin at machturtle.com>:
> This gets the same exception I had?
> 
> David
> On Monday 08 August 2005 01:17 am, John Lloyd-Jones wrote:
> > See the class Address. Comment out tthe two personal_customer_oid,
> > personal_customer_oid= methods and the code fails.  This is code was
> > updated to use Og 0.22. Tell me if I am using it incorrectly.
> >
> > On 8/7/05, George Moschovitis <george.moschovitis at gmail.com> wrote:
> > > Please. give me some source code that triggers this behaviour.
> >
> > ===== customer.rb =====
> > require 'og'
> >
> > module Created
> >     prop_accessor :created, Date
> >     pre "@created ||= Date.today", :on => :og_insert
> > end
> >
> > module Status
> >     property :status, String
> >     pre "@status ||= 'entered'", :on => :og_insert
> > end
> >
> > module Customer
> >       include Created
> >       include Status
> >     property :customer_number, String, :unique => true
> >     property :creditLimit, String
> > end
> >
> >
> > module CRM
> >
> > #   class Party; end
> >
> >    class Phone
> >       property :type, String
> >       property :countryCode, String
> >       property :areaCode, String
> >       property :number, String
> >       property :extension, String
> >       property :comments, String
> >    end
> >
> >    class ContactInfo
> >       property :email, String
> >       property :url, String
> >       property :phone, Phone
> >       property :fax, Phone
> >
> >    end
> >
> >    class DateRange
> >       property :from_dt, Date
> >       property :to_dt, Date
> >    end
> >
> >    class ExternalId; end
> >    class ExtraInfo
> >       property :name, String
> >       property :type, String
> >       property :value, String
> >       property :externalId, ExternalId
> >
> >       belongs_to :externalId, ExternalId
> >    end
> >
> >    class ExternalId
> >       property :type, String
> >       property :value, String
> >       property :status, String
> >       property :validity, DateRange
> >       property :extraInfo, FixedNum
> >
> > #      belongs_to Party, :field => :extid
> >       has_many :extraInfos, ExtraInfo
> >    end
> >
> >    class Party; end
> >    class Address
> >       property :street1, String
> >       property :street2, String
> >       property :city, String
> >       property :state, String
> >       property :postcode, String
> >       property :name, String
> > #      property :party, Party
> >       belongs_to Party, :field => :party
> >
> >       # Need to put this in by hand otherwise I get something like this:
> >       #(eval):23:in `add_address': undefined method
> > `personal_customer_oid=' # for #<Address:0xb7c5c46c> (NoMethodError)
> >       #    from og-test.rb:53:in `addAddress'
> >       #    from og-test.rb:124
> >
> >       def personal_customer_oid
> >         self.party_oid
> >       end
> >       def personal_customer_oid=(oid)
> >         self.party_oid = oid
> >       end
> >    end
> >
> >    class Party
> > #      property :address, Fixnum
> >       property :contactInfo, ContactInfo
> >       property :externalIds, ExternalId
> >
> >       has_many Address, :foreign_field => :party
> > #      has_many ExternalId, :foreign_field => extid
> >
> >       def initialize
> >          puts "Party: initialize..."
> >       end
> >
> >
> >       def addAddress( a )
> >          puts "addAddress: @address = #{@address}"
> >          add_address( a )
> >          @address += 1
> >       end
> >    end
> >
> >    class Person < Party
> >       property :firstName, String
> >       property :middleName, String
> >       property :lastName, String
> >       property :knownBy, String
> >       property :mobile, Phone
> >    end
> >
> >   class Organization < Party
> >       property :name, String
> >   end
> >
> >   class CorporateCustomer  < Organization; end
> >   class Department < Organization
> >      belongs_to :corporateCustomer, CorporateCustomer
> >   end
> >
> >   class PersonalCustomer < Person
> >      include Customer
> >
> >      def initialize (number, first, middle, last)
> >         super()
> >         @customer_number = number
> >         @firstName = first
> >         @middleName = middle
> >         @lastName = last
> >      end
> >
> >   end
> >
> >   class CorporateCustomer < Organization
> >      include Customer
> >
> >      property :departments, Department
> >      property :contact, Person
> >      property :parent, Organization
> >
> >      has_many :departments, Department
> >   end
> >
> >   class EnterpriseCustomer < Organization
> >      include Customer
> >
> >      property :companies, CorporateCustomer
> >
> >      has_many :companies, CorporateCustomer
> >   end
> > end
> >
> > ==== tc_customer.rb =====
> > $:.unshift File.join(File.dirname(__FILE__), 'lib')
> >
> > $DBG = true
> >
> > require 'test/unit'
> > require 'og'
> > require 'customer.rb'
> >
> >
> > class TC_Customer < Test::Unit::TestCase # :nodoc: all
> >   include Og
> >
> >      puts "Og Version #{Og::Version}"
> >
> >      @og = Og.setup(
> >
> >         :destroy => true,
> >         :store => :sqlite,
> >         :name => 'tc_customer'
> >
> >      )
> >
> >   def setup
> >
> >      puts "create a (fictious) primary address"
> >      @a_primary = CRM::Address.new
> >      @a_primary.street1 = '1370 Dunlap Ave'
> >      @a_primary.street2 = 'Apt # 786'
> >      @a_primary.city = 'Phoenix'
> >      @a_primary.state = 'AZ'
> >      @a_primary.name = 'primary'
> >
> >      puts "create a (fictious) mailing address"
> >      @a_mailing = CRM::Address.new
> >      @a_mailing.street1 = '1290 Ray Ave'
> >      @a_mailing.street2 = 'P.O Box 15'
> >      @a_mailing.city = 'Chandler'
> >      @a_mailing.state = 'AZ'
> >      @a_mailing.name = 'mailing'
> >
> >   end
> >
> >   def teardown
> >   end
> >
> >   def test_store_and_retrieve
> >     puts "create personal customer"
> >     p1 = CRM::PersonalCustomer.new('1001', 'John', '', 'Lloyd-Jones')
> >     puts "save the personal customer"
> >     p1.save
> >
> >     p2 = CRM::PersonalCustomer.one :condition => 'customer_number=1001'
> >     assert_equal p1.firstName, p2.firstName, "Expect first name to be same"
> >     assert_equal p1.lastName, p2.lastName, "Expect last name to be same"
> >   end
> >
> >   def test_address
> >     puts "create personal customer"
> >     p1 = CRM::PersonalCustomer.new('1002', 'Kalpana', '', 'Lloyd-Jones')
> >     puts "save the personal customer"
> >     p1.save
> >
> >     p2 = CRM::PersonalCustomer.one :condition => 'customer_number=1002'
> >     p2.addresses << @a_primary
> >     p2.save
> >
> >     p3 = CRM::PersonalCustomer.one :condition => 'customer_number=1002'
> >     p3.addresses.each { |a|
> >        puts "#{a.street1} #{a.city}, #{a.state}"
> >     }
> >     # assert_equal( p2.address, 1, "p2.address should be 1 (first address)"
> > ) assert_equal( @a_primary.party_oid, p1.oid, "@a_primary should belong to
> > p1")
> >   end
> >
> >   def test_multiple_addresses
> >     p2 = CRM::PersonalCustomer.one :condition => 'customer_number=1002'
> >
> >     puts "add mailing address"
> >     p2.addresses << @a_mailing
> >     p2.save
> >
> >     p3 = CRM::PersonalCustomer.one :condition => 'customer_number=1002'
> >     puts "p3 party id is #{p3.oid}"
> >     p3.addresses.each do |a|
> >        puts "id #{a.oid}: #{a.street1} #{a.city}, #{a.state}"
> >        a1 = case a.name
> >                when 'primary' then @a_primary
> >                when 'mailing' then @a_mailing
> >             end
> >        assert_equal(a1.street1, a.street1, "street1 should match")
> >        assert_equal(a1.city, a.city, "city should match")
> >        assert_equal(a1.state, a.state, "state should match")
> >     end
> >   end
> >
> > end
> >
> > _______________________________________________
> > Nitro-general mailing list
> > Nitro-general at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/nitro-general
> _______________________________________________
> Nitro-general mailing list
> Nitro-general at rubyforge.org
> http://rubyforge.org/mailman/listinfo/nitro-general
>




More information about the Nitro-general mailing list