FactoryBot.define do factory :broadcast do association :project name "My Live Stream" transient do skip_create_callback false end trait :with_stream do stream_uid "mux_stream" stream_key "mux_key" stream_playback_uid "mux_playback_id" full_live_stream_playback_uid "full_live_stream_playback_uid" status "created" streamer_status "idle" end trait :with_overriden_stream do stream_uid "mux_stream" stream_key "mux_key" stream_playback_uid "mux_playback_id" full_live_stream_playback_uid "full_live_stream_playback_uid" status "created" streamer_status "idle" stream_url_override "overriden_stream_url" stream_key_override "overriden_stream_key" end trait :with_files do files do [ Rack::Test::UploadedFile.new('spec/fixtures/files/contract.pdf', 'application/pdf'), Rack::Test::UploadedFile.new('spec/fixtures/files/audio.mp3', 'audio/mpeg'), Rack::Test::UploadedFile.new('spec/fixtures/files/video_file.mp4', 'video/mp4') ] end end after(:build) do |broadcast, evaluator| if evaluator.skip_create_callback broadcast.class.skip_callback(:create, :after, :create_mux_live_stream, raise: false) end end end end