To run example:
bundle install
bundle exec ruby mongoid_test.rb
| gem "minitest", "~> 5.11" | |
| gem "mongoid", "~> 7.0" |
| GEM | |
| specs: | |
| activemodel (5.2.0) | |
| activesupport (= 5.2.0) | |
| activesupport (5.2.0) | |
| concurrent-ruby (~> 1.0, >= 1.0.2) | |
| i18n (>= 0.7, < 2) | |
| minitest (~> 5.1) | |
| tzinfo (~> 1.1) | |
| bson (4.3.0) | |
| concurrent-ruby (1.0.5) | |
| i18n (1.0.1) | |
| concurrent-ruby (~> 1.0) | |
| minitest (5.11.3) | |
| mongo (2.5.3) | |
| bson (>= 4.3.0, < 5.0.0) | |
| mongoid (7.0.1) | |
| activemodel (>= 5.1, < 6.0.0) | |
| mongo (>= 2.5.1, < 3.0.0) | |
| thread_safe (0.3.6) | |
| tzinfo (1.2.5) | |
| thread_safe (~> 0.1) | |
| PLATFORMS | |
| ruby | |
| DEPENDENCIES | |
| minitest (~> 5.11) | |
| mongoid (~> 7.0) | |
| BUNDLED WITH | |
| 1.16.3 |
| test: | |
| clients: | |
| default: | |
| database: mongoid_test | |
| hosts: | |
| - dockerhost:27017 |
| require 'rubygems' | |
| require 'bundler/setup' | |
| require 'mongoid' | |
| require 'minitest/autorun' | |
| Mongoid.load!('mongoid.yml', 'test') | |
| class Band | |
| include Mongoid::Document | |
| has_and_belongs_to_many :tags | |
| end | |
| class Tag | |
| include Mongoid::Document | |
| has_and_belongs_to_many :bands | |
| end | |
| class TestHABTM < Minitest::Test | |
| def setup | |
| Band.delete_all | |
| Tag.delete_all | |
| @band = Band.new.save | |
| @tag = Tag.new | |
| end | |
| # This example fails | |
| def test_band_habtm_is_persisted_automatically_after_tag_is_saved | |
| @tag.bands = Band.all | |
| @tag.save! | |
| assert_equal [@tag], Band.first.tags | |
| end | |
| def test_multiple_bands_are_persisted_automatically_after_tag_is_saved | |
| Band.new.save | |
| @tag.bands = Band.all | |
| @tag.save! | |
| assert_equal [@tag], Band.all[0].tags | |
| assert_equal [@tag], Band.all[1].tags | |
| end | |
| def test_band_habtm_is_persisted_after_tag_is_saved | |
| @tag.save! | |
| @tag.bands = Band.all | |
| assert_equal [@tag], Band.first.tags | |
| end | |
| end |