mirror of
https://github.com/diaspora/diaspora.git
synced 2026-04-29 03:01:03 -04:00
Rails relies on ar_internal_metadata to track schema environment and protect database tasks since rails 5. Keeping this table in generated test fixtures can overwrite metadata and trigger environment mismatch/no-environment errors when cucumber invokes db:test:load. Excluding ar_internal_metadata from fixture_builder output keeps test metadata managed by Rails tasks and avoids intermittent schema environment failures in the Rails test workflow. This was also added as default, but is not released yet: https://github.com/rdy/fixture_builder/pull/60 closes #8478
52 lines
1.8 KiB
Ruby
52 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
def create_basic_users
|
|
# Users
|
|
alice = FactoryBot.create(:user_with_aspect, username: "alice")
|
|
alices_aspect = alice.aspects.where(name: "generic").first
|
|
|
|
eve = FactoryBot.create(:user_with_aspect, username: "eve")
|
|
eves_aspect = eve.aspects.where(name: "generic").first
|
|
|
|
bob = FactoryBot.create(:user_with_aspect, username: "bob")
|
|
bobs_aspect = bob.aspects.where(name: "generic").first
|
|
FactoryBot.create(:aspect, name: "empty", user: bob)
|
|
|
|
connect_users(bob, bobs_aspect, alice, alices_aspect)
|
|
connect_users(bob, bobs_aspect, eve, eves_aspect)
|
|
|
|
# Set up friends - 2 local, 1 remote
|
|
local_luke = FactoryBot.create(:user_with_aspect, username: "luke")
|
|
lukes_aspect = local_luke.aspects.where(name: "generic").first
|
|
|
|
local_leia = FactoryBot.create(:user_with_aspect, username: "leia")
|
|
leias_aspect = local_leia.aspects.where(name: "generic").first
|
|
|
|
remote_raphael = FactoryBot.create(:person, diaspora_handle: "raphael@remote.net")
|
|
|
|
connect_users_with_aspects(local_luke, local_leia)
|
|
|
|
local_leia.contacts.create(person: remote_raphael, aspects: [leias_aspect])
|
|
local_luke.contacts.create(person: remote_raphael, aspects: [lukes_aspect])
|
|
|
|
# Set up a follower
|
|
peter = FactoryBot.create(:user_with_aspect, username: "peter")
|
|
peters_aspect = peter.aspects.where(name: "generic").first
|
|
|
|
peter.contacts.create!(person: alice.person, aspects: [peters_aspect], sharing: false, receiving: true)
|
|
end
|
|
|
|
FixtureBuilder.configure do |fbuilder|
|
|
fbuilder.skip_tables += %w[ar_internal_metadata]
|
|
|
|
# rebuild fixtures automatically when these files change:
|
|
fbuilder.files_to_check += Dir[
|
|
"app/models/*.rb", "lib/**/*.rb", "spec/factories/*.rb", "spec/support/fixture_builder.rb"
|
|
] - ["lib/diaspora/exporter.rb"]
|
|
|
|
# now declare objects
|
|
fbuilder.factory do
|
|
create_basic_users
|
|
end
|
|
end
|