Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1090 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
59c5d995c3
commit
d6bfb7fa4d
|
@ -53,6 +53,11 @@ class CustomField < ActiveRecord::Base
|
||||||
errors.add(:possible_values, :activerecord_error_blank) if self.possible_values.nil? || self.possible_values.empty?
|
errors.add(:possible_values, :activerecord_error_blank) if self.possible_values.nil? || self.possible_values.empty?
|
||||||
errors.add(:possible_values, :activerecord_error_invalid) unless self.possible_values.is_a? Array
|
errors.add(:possible_values, :activerecord_error_invalid) unless self.possible_values.is_a? Array
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# validate default value
|
||||||
|
v = CustomValue.new(:custom_field => self.dup, :value => default_value, :customized => nil)
|
||||||
|
v.custom_field.is_required = false
|
||||||
|
errors.add(:default_value, :activerecord_error_invalid) unless v.valid?
|
||||||
end
|
end
|
||||||
|
|
||||||
def <=>(field)
|
def <=>(field)
|
||||||
|
|
|
@ -19,6 +19,12 @@ class CustomValue < ActiveRecord::Base
|
||||||
belongs_to :custom_field
|
belongs_to :custom_field
|
||||||
belongs_to :customized, :polymorphic => true
|
belongs_to :customized, :polymorphic => true
|
||||||
|
|
||||||
|
def after_initialize
|
||||||
|
if custom_field && new_record? && (customized_type.blank? || (customized && customized.new_record?))
|
||||||
|
self.value ||= custom_field.default_value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def validate
|
def validate
|
||||||
errors.add(:value, :activerecord_error_blank) and return if custom_field.is_required? and value.blank?
|
errors.add(:value, :activerecord_error_blank) and return if custom_field.is_required? and value.blank?
|
||||||
|
|
|
@ -8,31 +8,42 @@ function toggle_custom_field_format() {
|
||||||
p_regexp = $("custom_field_regexp");
|
p_regexp = $("custom_field_regexp");
|
||||||
p_values = $("custom_field_possible_values");
|
p_values = $("custom_field_possible_values");
|
||||||
p_searchable = $("custom_field_searchable");
|
p_searchable = $("custom_field_searchable");
|
||||||
|
p_default = $("custom_field_default_value");
|
||||||
|
|
||||||
|
p_default.setAttribute('type','text');
|
||||||
|
Element.show(p_default.parentNode);
|
||||||
|
|
||||||
switch (format.value) {
|
switch (format.value) {
|
||||||
case "list":
|
case "list":
|
||||||
Element.hide(p_length.parentNode);
|
Element.hide(p_length.parentNode);
|
||||||
Element.hide(p_regexp.parentNode);
|
Element.hide(p_regexp.parentNode);
|
||||||
Element.show(p_searchable.parentNode);
|
if (p_searchable) Element.show(p_searchable.parentNode);
|
||||||
Element.show(p_values);
|
Element.show(p_values);
|
||||||
break;
|
break;
|
||||||
case "date":
|
|
||||||
case "bool":
|
case "bool":
|
||||||
|
p_default.setAttribute('type','checkbox');
|
||||||
Element.hide(p_length.parentNode);
|
Element.hide(p_length.parentNode);
|
||||||
Element.hide(p_regexp.parentNode);
|
Element.hide(p_regexp.parentNode);
|
||||||
Element.hide(p_searchable.parentNode);
|
if (p_searchable) Element.hide(p_searchable.parentNode);
|
||||||
|
Element.hide(p_values);
|
||||||
|
break;
|
||||||
|
case "date":
|
||||||
|
Element.hide(p_length.parentNode);
|
||||||
|
Element.hide(p_regexp.parentNode);
|
||||||
|
if (p_searchable) Element.hide(p_searchable.parentNode);
|
||||||
Element.hide(p_values);
|
Element.hide(p_values);
|
||||||
break;
|
break;
|
||||||
case "float":
|
case "float":
|
||||||
case "int":
|
case "int":
|
||||||
Element.show(p_length.parentNode);
|
Element.show(p_length.parentNode);
|
||||||
Element.show(p_regexp.parentNode);
|
Element.show(p_regexp.parentNode);
|
||||||
Element.hide(p_searchable.parentNode);
|
if (p_searchable) Element.hide(p_searchable.parentNode);
|
||||||
Element.hide(p_values);
|
Element.hide(p_values);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Element.show(p_length.parentNode);
|
Element.show(p_length.parentNode);
|
||||||
Element.show(p_regexp.parentNode);
|
Element.show(p_regexp.parentNode);
|
||||||
Element.show(p_searchable.parentNode);
|
if (p_searchable) Element.show(p_searchable.parentNode);
|
||||||
Element.hide(p_values);
|
Element.hide(p_values);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -70,6 +81,7 @@ function deleteValueField(e) {
|
||||||
<span><%= text_field_tag 'custom_field[possible_values][]', value, :size => 30 %> <%= image_to_function "delete.png", "deleteValueField(this);return false" %><br /></span>
|
<span><%= text_field_tag 'custom_field[possible_values][]', value, :size => 30 %> <%= image_to_function "delete.png", "deleteValueField(this);return false" %><br /></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
|
<p><%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Отместване
|
||||||
field_assignable: Възможно е възлагане на задачи за тази роля
|
field_assignable: Възможно е възлагане на задачи за тази роля
|
||||||
field_redirect_existing_links: Пренасочване на съществуващи линкове
|
field_redirect_existing_links: Пренасочване на съществуващи линкове
|
||||||
field_estimated_hours: Изчислено време
|
field_estimated_hours: Изчислено време
|
||||||
|
field_default_value: Статус по подразбиране
|
||||||
|
|
||||||
setting_app_title: Заглавие
|
setting_app_title: Заглавие
|
||||||
setting_app_subtitle: Описание
|
setting_app_subtitle: Описание
|
||||||
|
|
|
@ -159,6 +159,7 @@ field_is_filter: Used as a filter
|
||||||
field_issue_to_id: Vztažený požadavek
|
field_issue_to_id: Vztažený požadavek
|
||||||
field_delay: Zpoždění
|
field_delay: Zpoždění
|
||||||
field_assignable: Požadavky mohou být přiřazeny této roli
|
field_assignable: Požadavky mohou být přiřazeny této roli
|
||||||
|
field_default_value: Výchozí stav
|
||||||
|
|
||||||
setting_app_title: Titulek aplikace
|
setting_app_title: Titulek aplikace
|
||||||
setting_app_subtitle: Podtitulek aplikace
|
setting_app_subtitle: Podtitulek aplikace
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Pufferzeit
|
||||||
field_assignable: Tickets können dieser Rolle zugewiesen werden
|
field_assignable: Tickets können dieser Rolle zugewiesen werden
|
||||||
field_redirect_existing_links: Existierende Links umleiten
|
field_redirect_existing_links: Existierende Links umleiten
|
||||||
field_estimated_hours: Geschätzter Aufwand
|
field_estimated_hours: Geschätzter Aufwand
|
||||||
|
field_default_value: Default
|
||||||
|
|
||||||
setting_app_title: Applikations-Titel
|
setting_app_title: Applikations-Titel
|
||||||
setting_app_subtitle: Applikations-Untertitel
|
setting_app_subtitle: Applikations-Untertitel
|
||||||
|
|
|
@ -174,6 +174,7 @@ field_estimated_hours: Estimated time
|
||||||
field_column_names: Columns
|
field_column_names: Columns
|
||||||
field_time_zone: Time zone
|
field_time_zone: Time zone
|
||||||
field_searchable: Searchable
|
field_searchable: Searchable
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Application title
|
setting_app_title: Application title
|
||||||
setting_app_subtitle: Application subtitle
|
setting_app_subtitle: Application subtitle
|
||||||
|
|
|
@ -155,6 +155,7 @@ field_identifier: Identificador
|
||||||
field_is_filter: Usado como filtro
|
field_is_filter: Usado como filtro
|
||||||
field_issue_to_id: Petición Relacionada
|
field_issue_to_id: Petición Relacionada
|
||||||
field_delay: Retraso
|
field_delay: Retraso
|
||||||
|
field_default_value: Estado por defecto
|
||||||
|
|
||||||
setting_app_title: Título de la aplicación
|
setting_app_title: Título de la aplicación
|
||||||
setting_app_subtitle: Subtítulo de la aplicación
|
setting_app_subtitle: Subtítulo de la aplicación
|
||||||
|
|
|
@ -174,6 +174,7 @@ field_estimated_hours: Arvioitu aika
|
||||||
field_column_names: Saraketta
|
field_column_names: Saraketta
|
||||||
field_time_zone: Aikavyöhyke
|
field_time_zone: Aikavyöhyke
|
||||||
field_searchable: Haettava
|
field_searchable: Haettava
|
||||||
|
field_default_value: Vakio arvo
|
||||||
|
|
||||||
setting_app_title: Ohjelman otsikko
|
setting_app_title: Ohjelman otsikko
|
||||||
setting_app_subtitle: Ohjelman alaotsikko
|
setting_app_subtitle: Ohjelman alaotsikko
|
||||||
|
|
|
@ -174,6 +174,7 @@ field_estimated_hours: Temps estimé
|
||||||
field_column_names: Colonnes
|
field_column_names: Colonnes
|
||||||
field_time_zone: Fuseau horaire
|
field_time_zone: Fuseau horaire
|
||||||
field_searchable: Utilisé pour les recherches
|
field_searchable: Utilisé pour les recherches
|
||||||
|
field_default_value: Valeur par défaut
|
||||||
|
|
||||||
setting_app_title: Titre de l'application
|
setting_app_title: Titre de l'application
|
||||||
setting_app_subtitle: Sous-titre de l'application
|
setting_app_subtitle: Sous-titre de l'application
|
||||||
|
|
|
@ -164,6 +164,7 @@ field_assignable: ניתן להקצות נושאים לתפקיד זה
|
||||||
field_redirect_existing_links: העבר קישורים קיימים
|
field_redirect_existing_links: העבר קישורים קיימים
|
||||||
field_estimated_hours: זמן משוער
|
field_estimated_hours: זמן משוער
|
||||||
field_column_names: עמודות
|
field_column_names: עמודות
|
||||||
|
field_default_value: ערך ברירת מחדל
|
||||||
|
|
||||||
setting_app_title: כותרת ישום
|
setting_app_title: כותרת ישום
|
||||||
setting_app_subtitle: תת-כותרת ישום
|
setting_app_subtitle: תת-כותרת ישום
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Delay
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Stato predefinito
|
||||||
|
|
||||||
setting_app_title: Titolo applicazione
|
setting_app_title: Titolo applicazione
|
||||||
setting_app_subtitle: Sottotitolo applicazione
|
setting_app_subtitle: Sottotitolo applicazione
|
||||||
|
|
|
@ -162,6 +162,7 @@ field_delay: 遅延
|
||||||
field_assignable: 問題はこのロールに割り当てることができます
|
field_assignable: 問題はこのロールに割り当てることができます
|
||||||
field_redirect_existing_links: 既存のリンクをリダイレクトする
|
field_redirect_existing_links: 既存のリンクをリダイレクトする
|
||||||
field_estimated_hours: 予定工数
|
field_estimated_hours: 予定工数
|
||||||
|
field_default_value: デフォルトのステータス
|
||||||
|
|
||||||
setting_app_title: アプリケーションのタイトル
|
setting_app_title: アプリケーションのタイトル
|
||||||
setting_app_subtitle: アプリケーションのサブタイトル
|
setting_app_subtitle: アプリケーションのサブタイトル
|
||||||
|
|
|
@ -164,6 +164,7 @@ field_assignable: 이 역할에 할당될수 있는 티켓
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: 추정시간
|
field_estimated_hours: 추정시간
|
||||||
field_column_names: 컬럼
|
field_column_names: 컬럼
|
||||||
|
field_default_value: 기본값
|
||||||
|
|
||||||
setting_app_title: 레드마인 제목
|
setting_app_title: 레드마인 제목
|
||||||
setting_app_subtitle: 레드마인 부제목
|
setting_app_subtitle: 레드마인 부제목
|
||||||
|
|
|
@ -171,7 +171,8 @@ field_estimated_hours: Apskaičiuotas laikas
|
||||||
field_column_names: Skiltys
|
field_column_names: Skiltys
|
||||||
field_time_zone: Laiko juosta
|
field_time_zone: Laiko juosta
|
||||||
field_searchable: Randamas
|
field_searchable: Randamas
|
||||||
|
field_default_value: Numatytoji vertė
|
||||||
|
|
||||||
setting_app_title: Programos pavadinimas
|
setting_app_title: Programos pavadinimas
|
||||||
setting_app_subtitle: Programos paantraštė
|
setting_app_subtitle: Programos paantraštė
|
||||||
setting_welcome_text: Pasveikinimas
|
setting_welcome_text: Pasveikinimas
|
||||||
|
|
|
@ -109,7 +109,7 @@ field_issue: Issue
|
||||||
field_status: Status
|
field_status: Status
|
||||||
field_notes: Notities
|
field_notes: Notities
|
||||||
field_is_closed: Issue gesloten
|
field_is_closed: Issue gesloten
|
||||||
field_is_default: Default status
|
field_is_default: Default
|
||||||
field_tracker: Tracker
|
field_tracker: Tracker
|
||||||
field_subject: Onderwerp
|
field_subject: Onderwerp
|
||||||
field_due_date: Verwachte datum gereed
|
field_due_date: Verwachte datum gereed
|
||||||
|
@ -161,6 +161,7 @@ field_delay: Vertraging
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Applicatie titel
|
setting_app_title: Applicatie titel
|
||||||
setting_app_subtitle: Applicatie ondertitel
|
setting_app_subtitle: Applicatie ondertitel
|
||||||
|
|
|
@ -155,6 +155,7 @@ field_identifier: Identifikator
|
||||||
field_is_filter: Atrybut filtrowania
|
field_is_filter: Atrybut filtrowania
|
||||||
field_issue_to_id: Powiązania zagadnienia
|
field_issue_to_id: Powiązania zagadnienia
|
||||||
field_delay: Opóźnienie
|
field_delay: Opóźnienie
|
||||||
|
field_default_value: Domyślny
|
||||||
|
|
||||||
setting_app_title: Tytuł aplikacji
|
setting_app_title: Tytuł aplikacji
|
||||||
setting_app_subtitle: Podtytuł aplikacji
|
setting_app_subtitle: Podtytuł aplikacji
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Delay
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Padrao
|
||||||
|
|
||||||
setting_app_title: Titulo da aplicacao
|
setting_app_title: Titulo da aplicacao
|
||||||
setting_app_subtitle: Sub-titulo da aplicacao
|
setting_app_subtitle: Sub-titulo da aplicacao
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Atraso
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Padrão
|
||||||
|
|
||||||
setting_app_title: Título da aplicação
|
setting_app_title: Título da aplicação
|
||||||
setting_app_subtitle: Sub-título da aplicação
|
setting_app_subtitle: Sub-título da aplicação
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Intarziere
|
||||||
field_assignable: La acest rol se poate atribui tichete
|
field_assignable: La acest rol se poate atribui tichete
|
||||||
field_redirect_existing_links: Redirectare linkuri existente
|
field_redirect_existing_links: Redirectare linkuri existente
|
||||||
field_estimated_hours: Timpul estimat
|
field_estimated_hours: Timpul estimat
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Titlul aplicatiei
|
setting_app_title: Titlul aplicatiei
|
||||||
setting_app_subtitle: Subtitlul aplicatiei
|
setting_app_subtitle: Subtitlul aplicatiei
|
||||||
|
|
|
@ -166,6 +166,7 @@ field_assignable: Задача может быть назначена этой
|
||||||
field_redirect_existing_links: Перенаправить существующие ссылки
|
field_redirect_existing_links: Перенаправить существующие ссылки
|
||||||
field_estimated_hours: Оцененное время
|
field_estimated_hours: Оцененное время
|
||||||
field_column_names: Колонки
|
field_column_names: Колонки
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Название приложения
|
setting_app_title: Название приложения
|
||||||
setting_app_subtitle: Подзаголовок приложения
|
setting_app_subtitle: Подзаголовок приложения
|
||||||
|
|
|
@ -166,6 +166,7 @@ field_assignable: Kartice mogu biti dodeljene ovoj ulozi
|
||||||
field_redirect_existing_links: Redirekcija postojećih linkova
|
field_redirect_existing_links: Redirekcija postojećih linkova
|
||||||
field_estimated_hours: Procenjeno vreme
|
field_estimated_hours: Procenjeno vreme
|
||||||
field_column_names: Kolone
|
field_column_names: Kolone
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Naziv aplikacije
|
setting_app_title: Naziv aplikacije
|
||||||
setting_app_subtitle: Podnaslov aplikacije
|
setting_app_subtitle: Podnaslov aplikacije
|
||||||
|
|
|
@ -161,6 +161,7 @@ field_delay: Delay
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: Applikationstitel
|
setting_app_title: Applikationstitel
|
||||||
setting_app_subtitle: Applicationsunderrubrik
|
setting_app_subtitle: Applicationsunderrubrik
|
||||||
|
|
|
@ -174,6 +174,7 @@ field_estimated_hours: 預估工時
|
||||||
field_column_names: Columns
|
field_column_names: Columns
|
||||||
field_time_zone: 時區
|
field_time_zone: 時區
|
||||||
field_searchable: 可用做搜尋條件
|
field_searchable: 可用做搜尋條件
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: 標題
|
setting_app_title: 標題
|
||||||
setting_app_subtitle: 副標題
|
setting_app_subtitle: 副標題
|
||||||
|
|
|
@ -164,6 +164,7 @@ field_delay: Delay
|
||||||
field_assignable: Issues can be assigned to this role
|
field_assignable: Issues can be assigned to this role
|
||||||
field_redirect_existing_links: Redirect existing links
|
field_redirect_existing_links: Redirect existing links
|
||||||
field_estimated_hours: Estimated time
|
field_estimated_hours: Estimated time
|
||||||
|
field_default_value: Default value
|
||||||
|
|
||||||
setting_app_title: 应用程序标题
|
setting_app_title: 应用程序标题
|
||||||
setting_app_subtitle: 应用程序子标题
|
setting_app_subtitle: 应用程序子标题
|
||||||
|
|
|
@ -10,6 +10,7 @@ custom_fields_001:
|
||||||
id: 1
|
id: 1
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: list
|
field_format: list
|
||||||
|
default_value: ""
|
||||||
custom_fields_002:
|
custom_fields_002:
|
||||||
name: Searchable field
|
name: Searchable field
|
||||||
min_length: 1
|
min_length: 1
|
||||||
|
@ -22,6 +23,7 @@ custom_fields_002:
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: string
|
field_format: string
|
||||||
searchable: true
|
searchable: true
|
||||||
|
default_value: "Default string"
|
||||||
custom_fields_003:
|
custom_fields_003:
|
||||||
name: Development status
|
name: Development status
|
||||||
min_length: 0
|
min_length: 0
|
||||||
|
@ -33,6 +35,7 @@ custom_fields_003:
|
||||||
id: 3
|
id: 3
|
||||||
is_required: true
|
is_required: true
|
||||||
field_format: list
|
field_format: list
|
||||||
|
default_value: ""
|
||||||
custom_fields_004:
|
custom_fields_004:
|
||||||
name: Phone number
|
name: Phone number
|
||||||
min_length: 0
|
min_length: 0
|
||||||
|
@ -44,6 +47,7 @@ custom_fields_004:
|
||||||
id: 4
|
id: 4
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: string
|
field_format: string
|
||||||
|
default_value: ""
|
||||||
custom_fields_005:
|
custom_fields_005:
|
||||||
name: Money
|
name: Money
|
||||||
min_length: 0
|
min_length: 0
|
||||||
|
@ -55,4 +59,5 @@ custom_fields_005:
|
||||||
id: 5
|
id: 5
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: float
|
field_format: float
|
||||||
|
default_value: ""
|
||||||
|
|
|
@ -34,7 +34,10 @@ class IssuesControllerTest < Test::Unit::TestCase
|
||||||
:enabled_modules,
|
:enabled_modules,
|
||||||
:enumerations,
|
:enumerations,
|
||||||
:attachments,
|
:attachments,
|
||||||
:workflows
|
:workflows,
|
||||||
|
:custom_fields,
|
||||||
|
:custom_values,
|
||||||
|
:custom_fields_trackers
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@controller = IssuesController.new
|
@controller = IssuesController.new
|
||||||
|
@ -132,6 +135,9 @@ class IssuesControllerTest < Test::Unit::TestCase
|
||||||
get :new, :project_id => 1, :tracker_id => 1
|
get :new, :project_id => 1, :tracker_id => 1
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'new'
|
assert_template 'new'
|
||||||
|
|
||||||
|
assert_tag :tag => 'input', :attributes => { :name => 'custom_fields[2]',
|
||||||
|
:value => 'Default string' }
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_get_new_without_tracker_id
|
def test_get_new_without_tracker_id
|
||||||
|
@ -162,9 +168,16 @@ class IssuesControllerTest < Test::Unit::TestCase
|
||||||
:issue => {:tracker_id => 1,
|
:issue => {:tracker_id => 1,
|
||||||
:subject => 'This is the test_new issue',
|
:subject => 'This is the test_new issue',
|
||||||
:description => 'This is the description',
|
:description => 'This is the description',
|
||||||
:priority_id => 5}
|
:priority_id => 5},
|
||||||
|
:custom_fields => {'2' => 'Value for field 2'}
|
||||||
assert_redirected_to 'projects/ecookbook/issues'
|
assert_redirected_to 'projects/ecookbook/issues'
|
||||||
assert Issue.find_by_subject('This is the test_new issue')
|
|
||||||
|
issue = Issue.find_by_subject('This is the test_new issue')
|
||||||
|
assert_not_nil issue
|
||||||
|
assert_equal 2, issue.author_id
|
||||||
|
v = issue.custom_values.find_by_custom_field_id(2)
|
||||||
|
assert_not_nil v
|
||||||
|
assert_equal 'Value for field 2', v.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_copy_issue
|
def test_copy_issue
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||||
|
|
||||||
class IssuesTest < ActionController::IntegrationTest
|
class IssuesTest < ActionController::IntegrationTest
|
||||||
fixtures :projects, :users, :trackers, :issue_statuses, :issues, :enumerations
|
fixtures :projects,
|
||||||
|
:users,
|
||||||
|
:trackers,
|
||||||
|
:projects_trackers,
|
||||||
|
:issue_statuses,
|
||||||
|
:issues,
|
||||||
|
:enumerations,
|
||||||
|
:custom_fields,
|
||||||
|
:custom_values,
|
||||||
|
:custom_fields_trackers
|
||||||
|
|
||||||
# create an issue
|
# create an issue
|
||||||
def test_add_issue
|
def test_add_issue
|
||||||
|
@ -18,7 +27,8 @@ class IssuesTest < ActionController::IntegrationTest
|
||||||
:description => "new issue",
|
:description => "new issue",
|
||||||
:done_ratio => "0",
|
:done_ratio => "0",
|
||||||
:due_date => "",
|
:due_date => "",
|
||||||
:assigned_to_id => "" }
|
:assigned_to_id => "" },
|
||||||
|
:custom_fields => {'2' => 'Value for field 2'}
|
||||||
# find created issue
|
# find created issue
|
||||||
issue = Issue.find_by_subject("new test issue")
|
issue = Issue.find_by_subject("new test issue")
|
||||||
assert_kind_of Issue, issue
|
assert_kind_of Issue, issue
|
||||||
|
|
|
@ -31,4 +31,15 @@ class CustomValueTest < Test::Unit::TestCase
|
||||||
v.value = '6a'
|
v.value = '6a'
|
||||||
assert !v.save
|
assert !v.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_default_value
|
||||||
|
field = CustomField.find_by_default_value('Default string')
|
||||||
|
assert_not_nil field
|
||||||
|
|
||||||
|
v = CustomValue.new(:custom_field => field)
|
||||||
|
assert_equal 'Default string', v.value
|
||||||
|
|
||||||
|
v = CustomValue.new(:custom_field => field, :value => 'Not empty')
|
||||||
|
assert_equal 'Not empty', v.value
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue