From 7d577436a6c588aa10907be9edd7fce11eb08054 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Mon, 2 Jul 2007 18:28:15 +0000 Subject: [PATCH] adding domain model --- app/models/domain.rb | 7 +++++++ app/models/virtual_community.rb | 9 ++++----- db/migrate/001_create_virtual_communities.rb | 2 +- db/migrate/003_create_domains.rb | 13 +++++++++++++ test/fixtures/domains.yml | 5 +++++ test/unit/domain_test.rb | 28 ++++++++++++++++++++++++++++ test/unit/virtual_community_test.rb | 19 ++----------------- 7 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 app/models/domain.rb create mode 100644 db/migrate/003_create_domains.rb create mode 100644 test/fixtures/domains.yml create mode 100644 test/unit/domain_test.rb diff --git a/app/models/domain.rb b/app/models/domain.rb new file mode 100644 index 0000000..efb979f --- /dev/null +++ b/app/models/domain.rb @@ -0,0 +1,7 @@ +class Domain < ActiveRecord::Base + + belongs_to :owner, :polymorphic => true + + validates_format_of :name, :with => /^(\w+\.)+\w+$/ + +end diff --git a/app/models/virtual_community.rb b/app/models/virtual_community.rb index 9ed639c..60eb5b3 100644 --- a/app/models/virtual_community.rb +++ b/app/models/virtual_community.rb @@ -1,10 +1,9 @@ class VirtualCommunity < ActiveRecord::Base - validates_presence_of :domain - validates_format_of :domain, :with => /^(\w+\.)+\w+$/ + has_many :domains, :as => :owner - serialize :features - def features - self[:features] ||= {} + serialize :configuration + def configuration + self[:configuration] ||= {} end end diff --git a/db/migrate/001_create_virtual_communities.rb b/db/migrate/001_create_virtual_communities.rb index acc8119..b306446 100644 --- a/db/migrate/001_create_virtual_communities.rb +++ b/db/migrate/001_create_virtual_communities.rb @@ -3,7 +3,7 @@ class CreateVirtualCommunities < ActiveRecord::Migration create_table :virtual_communities do |t| t.column :name, :string t.column :domain, :string - t.column :features, :text + t.column :configuration, :text end end diff --git a/db/migrate/003_create_domains.rb b/db/migrate/003_create_domains.rb new file mode 100644 index 0000000..1125251 --- /dev/null +++ b/db/migrate/003_create_domains.rb @@ -0,0 +1,13 @@ +class CreateDomains < ActiveRecord::Migration + def self.up + create_table :domains do |t| + t.column :name, :string + t.column :ownwer_type, :string + t.column :owner_id, :integer + end + end + + def self.down + drop_table :domains + end +end diff --git a/test/fixtures/domains.yml b/test/fixtures/domains.yml new file mode 100644 index 0000000..b49c4eb --- /dev/null +++ b/test/fixtures/domains.yml @@ -0,0 +1,5 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +one: + id: 1 +two: + id: 2 diff --git a/test/unit/domain_test.rb b/test/unit/domain_test.rb new file mode 100644 index 0000000..8ee7a61 --- /dev/null +++ b/test/unit/domain_test.rb @@ -0,0 +1,28 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class DomainTest < Test::Unit::TestCase + fixtures :domains + + # Replace this with your real tests. + def test_domain_name_format + c = Domain.new + c.valid? + assert c.errors.invalid?(:domain) + + c.domain = 'bliblibli' + c.valid? + assert c.errors.invalid?(:domain) + + c.domain = 'test.net' + c.valid? + assert ! c.errors.invalid?(:domain) + end + + def test_owner + d = Domain.new(:name => 'example.com') + d.owner = VirtualCommunity.new(:name => 'Example') + assert d.save + assert_kind_of VirtualCommunity, d.owner + end + +end diff --git a/test/unit/virtual_community_test.rb b/test/unit/virtual_community_test.rb index 2e23654..8074bfb 100644 --- a/test/unit/virtual_community_test.rb +++ b/test/unit/virtual_community_test.rb @@ -3,24 +3,9 @@ require File.dirname(__FILE__) + '/../test_helper' class VirtualCommunityTest < Test::Unit::TestCase fixtures :virtual_communities - def test_features + def test_configuration c = VirtualCommunity.new - assert_kind_of Hash, c.features + assert_kind_of Hash, c.configuration end - def test_domain_validation - c = VirtualCommunity.new - c.valid? - assert c.errors.invalid?(:domain) - - c.domain = 'bliblibli' - c.valid? - assert c.errors.invalid?(:domain) - - c.domain = 'test.net' - c.valid? - assert ! c.errors.invalid?(:domain) - end - - end -- libgit2 0.21.2