ontology_factory.rb revision 22f8827cd8892a298f9764ce862db6867307828d
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo SirainenFactoryGirl.define do
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen sequence :iri do |n|
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen "gopher://host/object/#{n}"
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen end
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen sequence :name do |n|
146240408e677e99e579d1feed92689585cc25d4Timo Sirainen "#{Faker::Lorem.word}_#{n}"
b1dd6be436e887774b94965ebe9af6d04179c227Timo Sirainen end
9844b5359f5cab77e4c31a7ac9e4a60a0073929eTimo Sirainen
4073f0dbf3277f981a8fcee3b89ea15aaf380a7fTimo Sirainen factory :ontology do |ontology|
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi association :repository
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi name { FactoryGirl.generate :name }
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen basepath { SecureRandom.hex(10) }
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi file_extension { '.owl' }
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi description { Faker::Lorem.paragraph }
0aac625db5e6e179c8ee7420a12ab300d6b178edTimo Sirainen logic { FactoryGirl.create :logic }
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen state { 'pending' }
e5224c0589916fb22f95f959326cf4b6221715b0Timo Sirainen present { true }
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen factory :done_ontology do
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen state { 'done' }
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen ontology.after(:build) do |ontology|
419cf63077e755935ce105747d6ebc67b7d38a7fTimo Sirainen version = build :ontology_version,
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen ontology: ontology,
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi basepath: ontology.basepath,
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen file_extension: ontology.file_extension,
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen state: 'done'
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen ontology.versions << version
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen end
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen
146240408e677e99e579d1feed92689585cc25d4Timo Sirainen ontology.after(:create) do |ontology|
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen ontology.ontology_version = ontology.versions.last
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen ontology.save!
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen end
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen end
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen
cbe49ba128638e63395aedaa2144087c89835633Timo Sirainen ontology.after(:build) do |ontology|
cbe49ba128638e63395aedaa2144087c89835633Timo Sirainen version = build :ontology_version,
ontology: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension
ontology.versions << version
end
trait :with_version do
after(:build) do |ontology|
version = build :ontology_version,
ontology: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension,
state: 'pending'
ontology.versions << version
end
end
factory :single_unparsed_ontology do |ontology|
ontology.after(:build) do |ontology|
version = build :ontology_version,
ontology: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension
version.fast_parse = true
ontology.versions << version
end
end
factory :single_ontology, class: SingleOntology do
end
factory :distributed_ontology, class: DistributedOntology do
logic { nil }
# Should always be fully linked, so every child should
# have a linked (defined by the DO) pointing or sourcing
# to/from it.
factory :linked_distributed_ontology do |ontology|
ontology.after(:build) do |ontology|
logic = FactoryGirl.create(:logic)
child_one = FactoryGirl.create(:ontology,
logic: logic,
repository: ontology.repository)
child_two = FactoryGirl.create(:ontology,
logic: logic,
repository: ontology.repository)
FactoryGirl.create(:mapping,
source: child_one,
target: child_two,
ontology: ontology)
ontology.children.push(child_one, child_two)
end
end
trait :with_children do
after(:build) do |built_ontology|
built_ontology.children << FactoryGirl.build(:ontology,
parent: built_ontology,
repository: built_ontology.repository,
basepath: built_ontology.basepath,
file_extension: built_ontology.file_extension)
built_ontology.children << FactoryGirl.build(:ontology,
parent: built_ontology,
repository: built_ontology.repository,
basepath: built_ontology.basepath,
file_extension: built_ontology.file_extension)
end
end
trait :with_versioned_children do
after(:build) do |ontology|
version = build :ontology_version,
ontology: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension
version.fast_parse = true
ontology.versions << version
logic = FactoryGirl.create(:logic)
child_one = FactoryGirl.build(:ontology, :with_version,
parent: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension,
logic: logic,
repository: ontology.repository)
child_one.versions.first.parent = version
child_two = FactoryGirl.build(:ontology, :with_version,
parent: ontology,
basepath: ontology.basepath,
file_extension: ontology.file_extension,
logic: logic,
repository: ontology.repository)
child_two.versions.first.parent = version
FactoryGirl.create(:mapping,
source: child_one,
target: child_two,
ontology: ontology)
end
end
factory :heterogeneous_ontology do |ontology|
ontology.after(:build) do |ontology|
logic_one = FactoryGirl.create(:logic)
logic_two = FactoryGirl.create(:logic)
ontology.children << FactoryGirl.build(:ontology,
logic: logic_one,
parent: ontology,
repository: ontology.repository)
ontology.children << FactoryGirl.build(:ontology,
logic: logic_two,
parent: ontology,
repository: ontology.repository)
end
end
factory :homogeneous_ontology do |ontology|
ontology.after(:build) do |ontology|
logic_one = FactoryGirl.create(:logic)
ontology.children << FactoryGirl.create(:ontology,
logic: logic_one,
repository: ontology.repository)
ontology.children << FactoryGirl.create(:ontology,
logic: logic_one,
repository: ontology.repository)
end
end
end
end
end