From c26aa8f8a6d58cf2051e12e639e77d0cb2e9e860 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Fri, 12 Oct 2007 19:20:23 +0000 Subject: [PATCH] ActionItem14: checkpoint, implementing CreateEnterprise --- app/models/create_enterprise.rb | 27 +++++++++++++++++++++++++++ test/unit/create_enterprise_test.rb | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/app/models/create_enterprise.rb b/app/models/create_enterprise.rb index a9d84db..17905b7 100644 --- a/app/models/create_enterprise.rb +++ b/app/models/create_enterprise.rb @@ -1,2 +1,29 @@ class CreateEnterprise < Task + + DATA_FIELDS = %w[ name identifier address contact_phone contact_person acronym foundation_year legal_form economic_activity management_information ] + + serialize :data, Hash + attr_protected :data + def data + self[:data] ||= Hash.new + end + + DATA_FIELDS.each do |field| + # getter + define_method(field) do + self.data[field.to_sym] + end + # setter + define_method("#{field}=") do |value| + self.data[field.to_sym] = value + end + end + + # checks for virtual attributes + validates_presence_of :name, :identifier, :address, :contact_phone, :contact_person, :legal_form, :economic_activity + validates_format_of :foundation_year, :with => /^\d*$/ + + # checks for actual attributes + validates_presence_of :requestor_id + end diff --git a/test/unit/create_enterprise_test.rb b/test/unit/create_enterprise_test.rb index ab90b64..2b8c850 100644 --- a/test/unit/create_enterprise_test.rb +++ b/test/unit/create_enterprise_test.rb @@ -2,6 +2,43 @@ require File.dirname(__FILE__) + '/../test_helper' class CreateEnterpriseTest < Test::Unit::TestCase - # TODO: add tests + should 'provide needed data' do + task = CreateEnterprise.new + + %w[ name identifier address contact_phone contact_person acronym foundation_year legal_form economic_activity management_information ].each do |field| + assert task.respond_to?(field) + assert task.respond_to?("#{field}=") + end + end + + should 'accept only numbers as foundation year' do + task = CreateEnterprise.new + + task.foundation_year = "test" + task.valid? + assert task.errors.invalid?(:foundation_year) + + task.foundation_year = 2006 + task.valid? + assert !task.errors.invalid?(:foundation_year) + end + + should 'require a requestor' do + task = CreateEnterprise.new + task.valid? + + assert task.errors.invalid?(:requestor_id) + task.requestor = User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'testuser@localhost.localdomain').person + task.valid? + assert !task.errors.invalid?(:requestor_id) + end + + should 'require a target (validator organization)' do + flunk 'need to write' + end + + should 'associate task requestor as enterprise administrator when creating' do + flunk 'need to write' + end end -- libgit2 0.21.2