Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 16:49:51 +0300
commit71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch)
tree6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /spec/factories
parenta7253423e3403b8c08f8a161e5937e1488f5f407 (diff)
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'spec/factories')
-rw-r--r--spec/factories/abuse_reports.rb1
-rw-r--r--spec/factories/airflow/dags.rb8
-rw-r--r--spec/factories/analytics/cycle_analytics/project_stages.rb16
-rw-r--r--spec/factories/analytics/cycle_analytics/project_value_streams.rb9
-rw-r--r--spec/factories/analytics/cycle_analytics/stages.rb20
-rw-r--r--spec/factories/analytics/cycle_analytics/value_streams.rb9
-rw-r--r--spec/factories/bulk_import/entities.rb2
-rw-r--r--spec/factories/ci/bridge.rb8
-rw-r--r--spec/factories/ci/builds.rb1
-rw-r--r--spec/factories/ci/pipelines.rb4
-rw-r--r--spec/factories/ci/processable.rb26
-rw-r--r--spec/factories/ci/runner_machines.rb7
-rw-r--r--spec/factories/clusters/applications/helm.rb9
-rw-r--r--spec/factories/clusters/clusters.rb2
-rw-r--r--spec/factories/commit_statuses.rb1
-rw-r--r--spec/factories/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb9
-rw-r--r--spec/factories/lfs_objects.rb7
-rw-r--r--spec/factories/member_roles.rb3
-rw-r--r--spec/factories/packages/debian/distribution.rb10
-rw-r--r--spec/factories/packages/debian/group_architecture.rb2
-rw-r--r--spec/factories/packages/debian/group_component.rb2
-rw-r--r--spec/factories/packages/debian/project_architecture.rb2
-rw-r--r--spec/factories/packages/debian/project_component.rb2
-rw-r--r--spec/factories/packages/packages.rb4
-rw-r--r--spec/factories/projects.rb31
-rw-r--r--spec/factories/projects/data_transfers.rb9
-rw-r--r--spec/factories/protected_tags/create_access_levels.rb9
-rw-r--r--spec/factories/users.rb4
-rw-r--r--spec/factories/work_items/widget_definitions.rb11
29 files changed, 174 insertions, 54 deletions
diff --git a/spec/factories/abuse_reports.rb b/spec/factories/abuse_reports.rb
index 4ae9b4def8e..355fb142994 100644
--- a/spec/factories/abuse_reports.rb
+++ b/spec/factories/abuse_reports.rb
@@ -6,5 +6,6 @@ FactoryBot.define do
user
message { 'User sends spam' }
reported_from_url { 'http://gitlab.com' }
+ links_to_spam { ['https://gitlab.com/issue1', 'https://gitlab.com/issue2'] }
end
end
diff --git a/spec/factories/airflow/dags.rb b/spec/factories/airflow/dags.rb
new file mode 100644
index 00000000000..ca4276e2c8f
--- /dev/null
+++ b/spec/factories/airflow/dags.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+FactoryBot.define do
+ factory :airflow_dags, class: '::Airflow::Dags' do
+ sequence(:dag_name) { |n| "dag_name_#{n}" }
+
+ project
+ end
+end
diff --git a/spec/factories/analytics/cycle_analytics/project_stages.rb b/spec/factories/analytics/cycle_analytics/project_stages.rb
deleted file mode 100644
index e673c4957b0..00000000000
--- a/spec/factories/analytics/cycle_analytics/project_stages.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
- factory :cycle_analytics_project_stage, class: 'Analytics::CycleAnalytics::ProjectStage' do
- project
- sequence(:name) { |n| "Stage ##{n}" }
- hidden { false }
- issue_stage
- value_stream { association(:cycle_analytics_project_value_stream, project: project) }
-
- trait :issue_stage do
- start_event_identifier { Gitlab::Analytics::CycleAnalytics::StageEvents::IssueCreated.identifier }
- end_event_identifier { Gitlab::Analytics::CycleAnalytics::StageEvents::IssueStageEnd.identifier }
- end
- end
-end
diff --git a/spec/factories/analytics/cycle_analytics/project_value_streams.rb b/spec/factories/analytics/cycle_analytics/project_value_streams.rb
deleted file mode 100644
index 45a6470b0aa..00000000000
--- a/spec/factories/analytics/cycle_analytics/project_value_streams.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
- factory :cycle_analytics_project_value_stream, class: 'Analytics::CycleAnalytics::ProjectValueStream' do
- sequence(:name) { |n| "Value Stream ##{n}" }
-
- project
- end
-end
diff --git a/spec/factories/analytics/cycle_analytics/stages.rb b/spec/factories/analytics/cycle_analytics/stages.rb
new file mode 100644
index 00000000000..4f6f38f6f33
--- /dev/null
+++ b/spec/factories/analytics/cycle_analytics/stages.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :cycle_analytics_stage, class: 'Analytics::CycleAnalytics::Stage' do
+ transient do
+ project { nil }
+ end
+
+ sequence(:name) { |n| "Stage ##{n}" }
+ start_event_identifier { Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestCreated.identifier }
+ end_event_identifier { Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestMerged.identifier }
+
+ namespace { association(:group) }
+ value_stream { association(:cycle_analytics_value_stream, namespace: namespace) }
+
+ after(:build) do |stage, evaluator|
+ stage.namespace = evaluator.project.reload.project_namespace if evaluator.project
+ end
+ end
+end
diff --git a/spec/factories/analytics/cycle_analytics/value_streams.rb b/spec/factories/analytics/cycle_analytics/value_streams.rb
new file mode 100644
index 00000000000..fcf8d8339ed
--- /dev/null
+++ b/spec/factories/analytics/cycle_analytics/value_streams.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :cycle_analytics_value_stream, class: 'Analytics::CycleAnalytics::ValueStream' do
+ sequence(:name) { |n| "Value Stream ##{n}" }
+
+ namespace { association(:group) }
+ end
+end
diff --git a/spec/factories/bulk_import/entities.rb b/spec/factories/bulk_import/entities.rb
index 66d212daaae..a662d42c7c9 100644
--- a/spec/factories/bulk_import/entities.rb
+++ b/spec/factories/bulk_import/entities.rb
@@ -8,7 +8,7 @@ FactoryBot.define do
sequence(:source_full_path) { |n| "source-path-#{n}" }
sequence(:destination_namespace) { |n| "destination-path-#{n}" }
- destination_name { 'Imported Entity' }
+ destination_slug { 'imported-entity' }
sequence(:source_xid)
migrate_projects { true }
diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb
index 6cbcabca7ab..49ac74f6f86 100644
--- a/spec/factories/ci/bridge.rb
+++ b/spec/factories/ci/bridge.rb
@@ -33,6 +33,14 @@ FactoryBot.define do
end
end
+ trait :retried do
+ retried { true }
+ end
+
+ trait :retryable do
+ success
+ end
+
trait :created do
status { 'created' }
end
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 78398fd7f20..224f460488b 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -7,7 +7,6 @@ FactoryBot.define do
created_at { 'Di 29. Okt 09:50:00 CET 2013' }
scheduling_type { 'stage' }
pending
- partition_id { pipeline.partition_id }
options do
{
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index eef5c593e0f..d68562c0aa5 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -237,7 +237,9 @@ FactoryBot.define do
trait :with_job do
after(:build) do |pipeline, evaluator|
- pipeline.builds << build(:ci_build, pipeline: pipeline, project: pipeline.project)
+ stage = build(:ci_stage, pipeline: pipeline)
+
+ pipeline.builds << build(:ci_build, pipeline: pipeline, project: pipeline.project, ci_stage: stage)
end
end
diff --git a/spec/factories/ci/processable.rb b/spec/factories/ci/processable.rb
index 76c7376d24a..49e66368f94 100644
--- a/spec/factories/ci/processable.rb
+++ b/spec/factories/ci/processable.rb
@@ -3,13 +3,37 @@
FactoryBot.define do
factory :ci_processable, class: 'Ci::Processable' do
name { 'processable' }
- stage { 'test' }
stage_idx { ci_stage.try(:position) || 0 }
ref { 'master' }
tag { false }
pipeline factory: :ci_pipeline
project { pipeline.project }
scheduling_type { 'stage' }
+ partition_id { pipeline.partition_id }
+
+ # This factory was updated to help with the efforts of the removal of `ci_builds.stage`:
+ # https://gitlab.com/gitlab-org/gitlab/-/issues/364377
+ # These additions can be removed once the specs that use the stage attribute have been updated
+
+ transient do
+ stage { 'test' }
+ end
+
+ after(:build) do |processable, evaluator|
+ processable.stage = evaluator.stage
+ end
+
+ before(:create) do |processable, evaluator|
+ next if processable.ci_stage
+
+ if ci_stage = processable.pipeline.stages.find_by(name: evaluator.stage)
+ processable.ci_stage = ci_stage
+ else
+ processable.ci_stage = create(:ci_stage, pipeline: processable.pipeline,
+ project: processable.project || evaluator.project,
+ name: evaluator.stage, position: evaluator.stage_idx, status: 'created')
+ end
+ end
trait :waiting_for_resource do
status { 'waiting_for_resource' }
diff --git a/spec/factories/ci/runner_machines.rb b/spec/factories/ci/runner_machines.rb
index 09bf5d0844e..9d601caa634 100644
--- a/spec/factories/ci/runner_machines.rb
+++ b/spec/factories/ci/runner_machines.rb
@@ -3,6 +3,11 @@
FactoryBot.define do
factory :ci_runner_machine, class: 'Ci::RunnerMachine' do
runner factory: :ci_runner
- machine_xid { "r_#{SecureRandom.hex.slice(0, 10)}" }
+ system_xid { "r_#{SecureRandom.hex.slice(0, 10)}" }
+
+ trait :stale do
+ created_at { 1.year.ago }
+ contacted_at { Ci::RunnerMachine::STALE_TIMEOUT.ago }
+ end
end
end
diff --git a/spec/factories/clusters/applications/helm.rb b/spec/factories/clusters/applications/helm.rb
index 6a21df943f5..0647058d63a 100644
--- a/spec/factories/clusters/applications/helm.rb
+++ b/spec/factories/clusters/applications/helm.rb
@@ -98,11 +98,6 @@ FactoryBot.define do
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
- factory :clusters_applications_cert_manager, class: 'Clusters::Applications::CertManager' do
- email { 'admin@example.com' }
- cluster factory: %i(cluster with_installed_helm provided_by_gcp)
- end
-
factory :clusters_applications_crossplane, class: 'Clusters::Applications::Crossplane' do
stack { 'gcp' }
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
@@ -125,9 +120,5 @@ FactoryBot.define do
oauth_application factory: :oauth_application
cluster factory: %i(cluster with_installed_helm provided_by_gcp project)
end
-
- factory :clusters_applications_cilium, class: 'Clusters::Applications::Cilium' do
- cluster factory: %i(cluster with_installed_helm provided_by_gcp)
- end
end
end
diff --git a/spec/factories/clusters/clusters.rb b/spec/factories/clusters/clusters.rb
index 72424a3c321..32cd6beb7ea 100644
--- a/spec/factories/clusters/clusters.rb
+++ b/spec/factories/clusters/clusters.rb
@@ -94,13 +94,11 @@ FactoryBot.define do
trait :with_all_applications do
application_helm factory: %i(clusters_applications_helm installed)
application_ingress factory: %i(clusters_applications_ingress installed)
- application_cert_manager factory: %i(clusters_applications_cert_manager installed)
application_crossplane factory: %i(clusters_applications_crossplane installed)
application_prometheus factory: %i(clusters_applications_prometheus installed)
application_runner factory: %i(clusters_applications_runner installed)
application_jupyter factory: %i(clusters_applications_jupyter installed)
application_knative factory: %i(clusters_applications_knative installed)
- application_cilium factory: %i(clusters_applications_cilium installed)
end
trait :with_domain do
diff --git a/spec/factories/commit_statuses.rb b/spec/factories/commit_statuses.rb
index a60f0a3879a..7d0176d0683 100644
--- a/spec/factories/commit_statuses.rb
+++ b/spec/factories/commit_statuses.rb
@@ -10,6 +10,7 @@ FactoryBot.define do
pipeline factory: :ci_pipeline
started_at { 'Tue, 26 Jan 2016 08:21:42 +0100' }
finished_at { 'Tue, 26 Jan 2016 08:23:42 +0100' }
+ partition_id { pipeline&.partition_id }
trait :success do
status { 'success' }
diff --git a/spec/factories/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb b/spec/factories/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb
new file mode 100644
index 00000000000..a61b5cde7a0
--- /dev/null
+++ b/spec/factories/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :postgres_async_foreign_key_validation,
+ class: 'Gitlab::Database::AsyncForeignKeys::PostgresAsyncForeignKeyValidation' do
+ sequence(:name) { |n| "fk_users_id_#{n}" }
+ table_name { "users" }
+ end
+end
diff --git a/spec/factories/lfs_objects.rb b/spec/factories/lfs_objects.rb
index 59c6ea5f55a..630f775d231 100644
--- a/spec/factories/lfs_objects.rb
+++ b/spec/factories/lfs_objects.rb
@@ -20,4 +20,11 @@ FactoryBot.define do
trait :object_storage do
file_store { LfsObjectUploader::Store::REMOTE }
end
+
+ trait :with_lfs_object_dot_iso_file do
+ with_file
+ object_storage
+ oid { '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897' }
+ size { 133 }
+ end
end
diff --git a/spec/factories/member_roles.rb b/spec/factories/member_roles.rb
index 08df45a85f8..503438d2521 100644
--- a/spec/factories/member_roles.rb
+++ b/spec/factories/member_roles.rb
@@ -5,6 +5,7 @@ FactoryBot.define do
namespace { association(:group) }
base_access_level { Gitlab::Access::DEVELOPER }
- trait(:guest) { base_access_level { GroupMember::GUEST } }
+ trait(:developer) { base_access_level { Gitlab::Access::DEVELOPER } }
+ trait(:guest) { base_access_level { Gitlab::Access::GUEST } }
end
end
diff --git a/spec/factories/packages/debian/distribution.rb b/spec/factories/packages/debian/distribution.rb
index 2142dba974b..48892d16efb 100644
--- a/spec/factories/packages/debian/distribution.rb
+++ b/spec/factories/packages/debian/distribution.rb
@@ -4,22 +4,24 @@ FactoryBot.define do
factory :debian_project_distribution, class: 'Packages::Debian::ProjectDistribution' do
container { association(:project) }
- sequence(:codename) { |n| "project-dist-#{n}" }
+ sequence(:codename) { |n| "#{FFaker::Lorem.word}#{n}" }
factory :debian_group_distribution, class: 'Packages::Debian::GroupDistribution' do
container { association(:group) }
+ end
- sequence(:codename) { |n| "group-dist-#{n}" }
+ trait(:with_suite) do
+ sequence(:suite) { |n| "#{FFaker::Lorem.word}#{n}" }
end
trait(:with_file) do
file_signature do
- <<~EOF
+ <<~FILESIGNATURE
-----BEGIN PGP SIGNATURE-----
ABC
-----BEGIN PGP SIGNATURE-----
- EOF
+ FILESIGNATURE
end
after(:build) do |distribution, evaluator|
diff --git a/spec/factories/packages/debian/group_architecture.rb b/spec/factories/packages/debian/group_architecture.rb
index 2582faae4ed..6f5267c7860 100644
--- a/spec/factories/packages/debian/group_architecture.rb
+++ b/spec/factories/packages/debian/group_architecture.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :debian_group_architecture, class: 'Packages::Debian::GroupArchitecture' do
distribution { association(:debian_group_distribution) }
- sequence(:name) { |n| "group-arch-#{n}" }
+ sequence(:name) { |n| "#{FFaker::Lorem.word}#{n}" }
end
end
diff --git a/spec/factories/packages/debian/group_component.rb b/spec/factories/packages/debian/group_component.rb
index 92d438be389..f3605991a32 100644
--- a/spec/factories/packages/debian/group_component.rb
+++ b/spec/factories/packages/debian/group_component.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :debian_group_component, class: 'Packages::Debian::GroupComponent' do
distribution { association(:debian_group_distribution) }
- sequence(:name) { |n| "group-component-#{n}" }
+ sequence(:name) { |n| "#{FFaker::Lorem.word}#{n}" }
end
end
diff --git a/spec/factories/packages/debian/project_architecture.rb b/spec/factories/packages/debian/project_architecture.rb
index d6985da4128..2bba8de2e7d 100644
--- a/spec/factories/packages/debian/project_architecture.rb
+++ b/spec/factories/packages/debian/project_architecture.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :debian_project_architecture, class: 'Packages::Debian::ProjectArchitecture' do
distribution { association(:debian_project_distribution) }
- sequence(:name) { |n| "project-arch-#{n}" }
+ sequence(:name) { |n| "#{FFaker::Lorem.word}#{n}" }
end
end
diff --git a/spec/factories/packages/debian/project_component.rb b/spec/factories/packages/debian/project_component.rb
index a56aec4cef0..cb7501cd9f2 100644
--- a/spec/factories/packages/debian/project_component.rb
+++ b/spec/factories/packages/debian/project_component.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :debian_project_component, class: 'Packages::Debian::ProjectComponent' do
distribution { association(:debian_project_distribution) }
- sequence(:name) { |n| "project-component-#{n}" }
+ sequence(:name) { |n| "#{FFaker::Lorem.word}#{n}" }
end
end
diff --git a/spec/factories/packages/packages.rb b/spec/factories/packages/packages.rb
index 1da4f0cedbc..d0fde0a16cd 100644
--- a/spec/factories/packages/packages.rb
+++ b/spec/factories/packages/packages.rb
@@ -66,13 +66,13 @@ FactoryBot.define do
end
factory :debian_package do
- sequence(:name) { |n| "package-#{n}" }
+ sequence(:name) { |n| "#{FFaker::Lorem.word}#{n}" }
sequence(:version) { |n| "1.0-#{n}" }
package_type { :debian }
transient do
without_package_files { false }
- file_metadatum_trait { :keep }
+ file_metadatum_trait { processing? ? :unknown : :keep }
published_in { :create }
end
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index 6e3a7a3f5ef..f113ca2425f 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -253,9 +253,35 @@ FactoryBot.define do
create_templates { nil }
create_branch { nil }
create_tag { nil }
+ lfs { false }
end
after :create do |project, evaluator|
+ # Specify `lfs: true` to create the LfsObject for the LFS file in the test repo:
+ # https://gitlab.com/gitlab-org/gitlab-test/-/blob/master/files/lfs/lfs_object.iso
+ if evaluator.lfs
+ RSpec::Mocks.with_temporary_scope do
+ # If lfs object store is disabled we need to mock
+ unless Gitlab.config.lfs.object_store.enabled
+ config = Gitlab.config.lfs.object_store.merge('enabled' => true)
+ allow(LfsObjectUploader).to receive(:object_store_options).and_return(config)
+ Fog.mock!
+ Fog::Storage.new(LfsObjectUploader.object_store_credentials).tap do |connection|
+ connection.directories.create(key: config.remote_directory) # rubocop:disable Rails/SaveBang
+
+ # Cleanup remaining files
+ connection.directories.each do |directory|
+ directory.files.map(&:destroy)
+ end
+ rescue Excon::Error::Conflict
+ end
+ end
+
+ lfs_object = create(:lfs_object, :with_lfs_object_dot_iso_file)
+ create(:lfs_objects_project, project: project, lfs_object: lfs_object)
+ end
+ end
+
if evaluator.create_templates
templates_path = "#{evaluator.create_templates}_templates"
@@ -286,7 +312,6 @@ FactoryBot.define do
"README on branch #{evaluator.create_branch}",
message: 'Add README.md',
branch_name: evaluator.create_branch)
-
end
if evaluator.create_tag
@@ -441,7 +466,9 @@ FactoryBot.define do
trait :with_jira_integration do
has_external_issue_tracker { true }
- jira_integration
+ after :create do |project|
+ create(:jira_integration, project: project)
+ end
end
trait :with_prometheus_integration do
diff --git a/spec/factories/projects/data_transfers.rb b/spec/factories/projects/data_transfers.rb
new file mode 100644
index 00000000000..4184f475663
--- /dev/null
+++ b/spec/factories/projects/data_transfers.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :project_data_transfer, class: 'Projects::DataTransfer' do
+ project factory: :project
+ namespace { project.root_namespace }
+ date { Time.current.utc.beginning_of_month }
+ end
+end
diff --git a/spec/factories/protected_tags/create_access_levels.rb b/spec/factories/protected_tags/create_access_levels.rb
new file mode 100644
index 00000000000..07450b2789c
--- /dev/null
+++ b/spec/factories/protected_tags/create_access_levels.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :protected_tag_create_access_level, class: 'ProtectedTag::CreateAccessLevel' do
+ deploy_key { nil }
+ protected_tag
+ access_level { Gitlab::Access::DEVELOPER }
+ end
+end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index 2b53a469841..e641f925758 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -180,6 +180,10 @@ FactoryBot.define do
provider { 'ldapmain' }
end
end
+
+ trait :unconfirmed do
+ confirmed_at { nil }
+ end
end
factory :atlassian_user do
diff --git a/spec/factories/work_items/widget_definitions.rb b/spec/factories/work_items/widget_definitions.rb
new file mode 100644
index 00000000000..bbd7c1e7432
--- /dev/null
+++ b/spec/factories/work_items/widget_definitions.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :widget_definition, class: 'WorkItems::WidgetDefinition' do
+ work_item_type
+ namespace
+
+ name { 'Description' }
+ widget_type { 'description' }
+ end
+end