164 lines
4.1 KiB
Ruby
164 lines
4.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe Gitlab::ImportExport::Config do
|
|
let(:yaml_file) { described_class.new }
|
|
|
|
describe '#to_h' do
|
|
context 'when using CE' do
|
|
before do
|
|
allow(yaml_file)
|
|
.to receive(:merge?)
|
|
.and_return(false)
|
|
end
|
|
|
|
it 'just returns the parsed Hash without the EE section' do
|
|
expected = YAML.load_file(Gitlab::ImportExport.config_file)
|
|
expected.delete('ee')
|
|
|
|
expect(yaml_file.to_h).to eq(expected)
|
|
end
|
|
end
|
|
|
|
context 'when using EE' do
|
|
before do
|
|
allow(yaml_file)
|
|
.to receive(:merge?)
|
|
.and_return(true)
|
|
end
|
|
|
|
it 'merges the EE project tree into the CE project tree' do
|
|
allow(yaml_file)
|
|
.to receive(:parse_yaml)
|
|
.and_return({
|
|
'project_tree' => [
|
|
{
|
|
'issues' => [
|
|
:id,
|
|
:title,
|
|
{ 'notes' => [:id, :note, { 'author' => [:name] }] }
|
|
]
|
|
}
|
|
],
|
|
'ee' => {
|
|
'project_tree' => [
|
|
{
|
|
'issues' => [
|
|
:description,
|
|
{ 'notes' => [:date, { 'author' => [:email] }] }
|
|
]
|
|
},
|
|
{ 'foo' => [{ 'bar' => %i[baz] }] }
|
|
]
|
|
}
|
|
})
|
|
|
|
expect(yaml_file.to_h).to eq({
|
|
'project_tree' => [
|
|
{
|
|
'issues' => [
|
|
:id,
|
|
:title,
|
|
{
|
|
'notes' => [
|
|
:id,
|
|
:note,
|
|
{ 'author' => [:name, :email] },
|
|
:date
|
|
]
|
|
},
|
|
:description
|
|
]
|
|
},
|
|
{ 'foo' => [{ 'bar' => %i[baz] }] }
|
|
]
|
|
})
|
|
end
|
|
|
|
it 'merges the excluded attributes list' do
|
|
allow(yaml_file)
|
|
.to receive(:parse_yaml)
|
|
.and_return({
|
|
'project_tree' => [],
|
|
'excluded_attributes' => {
|
|
'project' => %i[id title],
|
|
'notes' => %i[id]
|
|
},
|
|
'ee' => {
|
|
'project_tree' => [],
|
|
'excluded_attributes' => {
|
|
'project' => %i[date],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
}
|
|
})
|
|
|
|
expect(yaml_file.to_h).to eq({
|
|
'project_tree' => [],
|
|
'excluded_attributes' => {
|
|
'project' => %i[id title date],
|
|
'notes' => %i[id],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
})
|
|
end
|
|
|
|
it 'merges the included attributes list' do
|
|
allow(yaml_file)
|
|
.to receive(:parse_yaml)
|
|
.and_return({
|
|
'project_tree' => [],
|
|
'included_attributes' => {
|
|
'project' => %i[id title],
|
|
'notes' => %i[id]
|
|
},
|
|
'ee' => {
|
|
'project_tree' => [],
|
|
'included_attributes' => {
|
|
'project' => %i[date],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
}
|
|
})
|
|
|
|
expect(yaml_file.to_h).to eq({
|
|
'project_tree' => [],
|
|
'included_attributes' => {
|
|
'project' => %i[id title date],
|
|
'notes' => %i[id],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
})
|
|
end
|
|
|
|
it 'merges the methods list' do
|
|
allow(yaml_file)
|
|
.to receive(:parse_yaml)
|
|
.and_return({
|
|
'project_tree' => [],
|
|
'methods' => {
|
|
'project' => %i[id title],
|
|
'notes' => %i[id]
|
|
},
|
|
'ee' => {
|
|
'project_tree' => [],
|
|
'methods' => {
|
|
'project' => %i[date],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
}
|
|
})
|
|
|
|
expect(yaml_file.to_h).to eq({
|
|
'project_tree' => [],
|
|
'methods' => {
|
|
'project' => %i[id title date],
|
|
'notes' => %i[id],
|
|
'foo' => %i[bar baz]
|
|
}
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|