Merge branch 'ce-7471-extract-ee-specific-models-from-all_models-yml' into 'master'
[CE] Make spec/lib/gitlab/import_export/all_models.yml EE-ready Closes gitlab-ee#7471 See merge request gitlab-org/gitlab-ce!21544
This commit is contained in:
commit
1cdab683bd
1 changed files with 26 additions and 16 deletions
|
@ -16,14 +16,30 @@ describe 'Import/Export model configuration' do
|
||||||
# - User, Author... Models we do not care about for checking models
|
# - User, Author... Models we do not care about for checking models
|
||||||
names.flatten.uniq - %w(milestones labels user author) + ['project']
|
names.flatten.uniq - %w(milestones labels user author) + ['project']
|
||||||
end
|
end
|
||||||
|
let(:ce_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
|
||||||
|
let(:ce_models_hash) { YAML.load_file(ce_models_yml) }
|
||||||
|
|
||||||
|
let(:ee_models_yml) { 'ee/spec/lib/gitlab/import_export/all_models.yml' }
|
||||||
|
let(:ee_models_hash) { File.exist?(ee_models_yml) ? YAML.load_file(ee_models_yml) : {} }
|
||||||
|
|
||||||
let(:all_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
|
|
||||||
let(:all_models) { YAML.load_file(all_models_yml) }
|
|
||||||
let(:current_models) { setup_models }
|
let(:current_models) { setup_models }
|
||||||
|
let(:all_models_hash) do
|
||||||
|
all_models_hash = ce_models_hash.dup
|
||||||
|
|
||||||
|
all_models_hash.each do |model, associations|
|
||||||
|
associations.concat(ee_models_hash[model] || [])
|
||||||
|
end
|
||||||
|
|
||||||
|
ee_models_hash.each do |model, associations|
|
||||||
|
all_models_hash[model] ||= associations
|
||||||
|
end
|
||||||
|
|
||||||
|
all_models_hash
|
||||||
|
end
|
||||||
|
|
||||||
it 'has no new models' do
|
it 'has no new models' do
|
||||||
model_names.each do |model_name|
|
model_names.each do |model_name|
|
||||||
new_models = Array(current_models[model_name]) - Array(all_models[model_name])
|
new_models = Array(current_models[model_name]) - Array(all_models_hash[model_name])
|
||||||
expect(new_models).to be_empty, failure_message(model_name.classify, new_models)
|
expect(new_models).to be_empty, failure_message(model_name.classify, new_models)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -31,27 +47,21 @@ describe 'Import/Export model configuration' do
|
||||||
# List of current models between models, in the format of
|
# List of current models between models, in the format of
|
||||||
# {model: [model_2, model3], ...}
|
# {model: [model_2, model3], ...}
|
||||||
def setup_models
|
def setup_models
|
||||||
all_models_hash = {}
|
model_names.each_with_object({}) do |model_name, hash|
|
||||||
|
hash[model_name] = associations_for(relation_class_for_name(model_name)) - ['project']
|
||||||
model_names.each do |model_name|
|
|
||||||
model_class = relation_class_for_name(model_name)
|
|
||||||
|
|
||||||
all_models_hash[model_name] = associations_for(model_class) - ['project']
|
|
||||||
end
|
end
|
||||||
|
|
||||||
all_models_hash
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def failure_message(parent_model_name, new_models)
|
def failure_message(parent_model_name, new_models)
|
||||||
<<-MSG
|
<<~MSG
|
||||||
New model(s) <#{new_models.join(',')}> have been added, related to #{parent_model_name}, which is exported by
|
New model(s) <#{new_models.join(',')}> have been added, related to #{parent_model_name}, which is exported by
|
||||||
the Import/Export feature.
|
the Import/Export feature.
|
||||||
|
|
||||||
If you think this model should be included in the export, please add it to IMPORT_EXPORT_CONFIG.
|
If you think this model should be included in the export, please add it to `#{Gitlab::ImportExport.config_file}`.
|
||||||
Definitely add it to MODELS_JSON to signal that you've handled this error and to prevent it from showing up in the future.
|
|
||||||
|
|
||||||
MODELS_JSON: #{File.expand_path(all_models_yml)}
|
Definitely add it to `#{File.expand_path(ce_models_yml)}`
|
||||||
IMPORT_EXPORT_CONFIG: #{Gitlab::ImportExport.config_file}
|
#{"or `#{File.expand_path(ee_models_yml)}` if the model/associations are EE-specific\n" if ee_models_hash.any?}
|
||||||
|
to signal that you've handled this error and to prevent it from showing up in the future.
|
||||||
MSG
|
MSG
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue