diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-04-23 15:48:26 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-04-23 15:48:26 +0000 |
commit | ab286656b22dd686a659afe908daade6e5a54ff3 (patch) | |
tree | 538fb10cb2979c616754e492d8fe44500e760a37 /spec/factories | |
parent | 3d12ce95b1307f9b8439aab9ac5fe9d406ab9b01 (diff) | |
download | gitlab-ce-ab286656b22dd686a659afe908daade6e5a54ff3.tar.gz |
Resolve "Namespace factory is problematic"
Diffstat (limited to 'spec/factories')
-rw-r--r-- | spec/factories/groups.rb | 8 | ||||
-rw-r--r-- | spec/factories/namespaces.rb | 18 |
2 files changed, 25 insertions, 1 deletions
diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb index 8c531cf5909..3b354c0d96b 100644 --- a/spec/factories/groups.rb +++ b/spec/factories/groups.rb @@ -5,6 +5,14 @@ FactoryBot.define do type 'Group' owner nil + after(:create) do |group| + if group.owner + # We could remove this after we have proper constraint: + # https://gitlab.com/gitlab-org/gitlab-ce/issues/43292 + raise "Don't set owner for groups, use `group.add_owner(user)` instead" + end + end + trait :public do visibility_level Gitlab::VisibilityLevel::PUBLIC end diff --git a/spec/factories/namespaces.rb b/spec/factories/namespaces.rb index f94b09cff15..6feafa5ece9 100644 --- a/spec/factories/namespaces.rb +++ b/spec/factories/namespaces.rb @@ -2,6 +2,22 @@ FactoryBot.define do factory :namespace do sequence(:name) { |n| "namespace#{n}" } path { name.downcase.gsub(/\s/, '_') } - owner + + # This is a workaround to avoid the user creating another namespace via + # User#ensure_namespace_correct. We should try to remove it and then + # we could remove this workaround + association :owner, factory: :user, strategy: :build + before(:create) do |namespace| + owner = namespace.owner + + if owner + # We're changing the username here because we want to keep our path, + # and User#ensure_namespace_correct would change the path based on + # username, so we're forced to do this otherwise we'll need to change + # a lot of existing tests. + owner.username = namespace.path + owner.namespace = namespace + end + end end end |