I'm currently extracting a plugin used in a Spina CMS site into a reusable module. And since it relies on a relation to an existing class in Spina, fixtures become a nightmare (since it relies on the users, and there's no easy way to set password digests using fixtures).
Unfortunately, even after following all the steps to install it, I kept getting the following error:
ArgumentError: Factory not registered: post
No luck searching for an answer. Plenty for it not working with RSpec or some other setup, but nothing with Minitest.
Thankfully, you can load
FactoryBot in the console... (I've replaced the full path to the gem to
... here readability.)
> FactoryBot.find_definitions => [".../test/dummy/factories", ".../test/dummy/test/factories", ".../test/dummy/spec/factories"]
Wait. That's not right. Except it sort of is. If you run
Rails.root in your console, you'll see that it is actually
test/dummy from your gem. So our factories simply aren't where
FactoryBot is expecting them.
Add the following line into
test_helper.rb, just above the
FactoryBot.definition_file_paths << File.expand_path('../factories', __FILE__)
That puts the
test/factories directory of your gem into the load path. Suddenly everything is working. Well, the tests are failing in the expected manner, at least.