My thought was that the responsibility of this matcher was to verify that a join table for an association is set up correctly, which includes verifying that 1) the table exists and 2) the table includes the correct columns.

Extracting the check for existence of a join table into it's own matcher seems like overkill, to me. Especially since it would add some additional complexity around [here in AssociationMatcher][am].

[am]: https://github.com/thoughtbot/shoulda-matchers/pull/511