|
219 | 219 | expect(Mongoid::Config.discriminator_key).to be("test")
|
220 | 220 | end
|
221 | 221 |
|
222 |
| - it 'is set globally' do |
| 222 | + it 'is set globally' do |
223 | 223 | expect(Mongoid.discriminator_key).to be("test")
|
224 | 224 | end
|
225 | 225 | end
|
@@ -546,34 +546,107 @@ def self.logger
|
546 | 546 | end
|
547 | 547 | end
|
548 | 548 |
|
549 |
| - context "with an overridden database" do |
550 |
| - let(:database) do |
551 |
| - "test_purge_#{Time.now.to_i}" |
| 549 | + describe "#purge!" do |
| 550 | + |
| 551 | + it 'deletes models' do |
| 552 | + House.create!(name: '1', model: 'Big') |
| 553 | + expect(House.count).to eq(1) |
| 554 | + Mongoid.purge! |
| 555 | + expect(House.count).to eq(0) |
552 | 556 | end
|
553 | 557 |
|
554 |
| - before do |
555 |
| - Mongoid.override_database(database) |
| 558 | + it 'drops collections' do |
| 559 | + House.create!(name: '1', model: 'Big') |
| 560 | + Band.create!(name: 'Fleet Foxes') |
| 561 | + |
| 562 | + client = Mongoid.default_client |
| 563 | + expect(client.collections.map(&:name).sort).to eq %w[bands houses] |
| 564 | + Mongoid.purge! |
| 565 | + expect(client.collections.map(&:name)).to eq [] |
| 566 | + end |
| 567 | + end |
| 568 | + |
| 569 | + describe "#truncate!" do |
| 570 | + |
| 571 | + it 'deletes models' do |
| 572 | + House.create!(name: '1', model: 'Big') |
| 573 | + expect(House.count).to eq(1) |
| 574 | + Mongoid.truncate! |
| 575 | + expect(House.count).to eq(0) |
| 576 | + end |
| 577 | + |
| 578 | + it 'does not drop collections' do |
| 579 | + House.create!(name: '1', model: 'Big') |
| 580 | + Band.create!(name: 'Fleet Foxes') |
| 581 | + |
| 582 | + client = Mongoid.default_client |
| 583 | + expect(client.collections.map(&:name).sort).to eq %w[bands houses] |
| 584 | + Mongoid.truncate! |
| 585 | + expect(client.collections.map(&:name).sort).to eq %w[bands houses] |
| 586 | + end |
| 587 | + |
| 588 | + it 'does not drop indexes' do |
| 589 | + User.create_indexes |
| 590 | + expect(User.collection.indexes.map {|i| i['name'] }).to eq %w[_id_ name_1] |
| 591 | + Mongoid.truncate! |
| 592 | + expect(User.collection.indexes.map {|i| i['name'] }).to eq %w[_id_ name_1] |
| 593 | + end |
| 594 | + end |
| 595 | + |
| 596 | + describe "#override_database" do |
| 597 | + let(:database) do |
| 598 | + "test_override_#{Time.now.to_i}" |
556 | 599 | end
|
557 | 600 |
|
558 | 601 | after do
|
| 602 | + # Ensure the database override is cleared. |
559 | 603 | Mongoid.override_database(nil)
|
560 | 604 | end
|
561 | 605 |
|
562 |
| - describe "#purge!" do |
563 |
| - it 'respects persistence context overrides' do |
| 606 | + it 'overrides document querying and persistence' do |
| 607 | + House.create!(name: '1', model: 'Big') |
| 608 | + expect(House.count).to eq(1) |
| 609 | + |
| 610 | + Mongoid.override_database(database) |
| 611 | + expect(House.count).to eq(0) |
| 612 | + |
| 613 | + expect(Band.count).to eq(0) |
| 614 | + Band.create!(name: 'Wolf Alice') |
| 615 | + expect(Band.count).to eq(1) |
| 616 | + |
| 617 | + Mongoid.override_database(nil) |
| 618 | + expect(House.count).to eq(1) |
| 619 | + expect(Band.count).to eq(0) |
| 620 | + end |
| 621 | + |
| 622 | + context '#truncate and #purge' do |
| 623 | + before do |
564 | 624 | House.create!(name: '1', model: 'Big')
|
565 | 625 | expect(House.count).to eq(1)
|
566 |
| - Mongoid.purge! |
567 |
| - expect(House.count).to eq(0) |
| 626 | + Mongoid.override_database(database) |
568 | 627 | end
|
569 |
| - end |
570 | 628 |
|
571 |
| - describe "#truncate!" do |
572 |
| - it 'respects persistence context overrides' do |
573 |
| - House.create!(name: '1', model: 'Big') |
| 629 | + after do |
| 630 | + Mongoid.override_database(nil) |
574 | 631 | expect(House.count).to eq(1)
|
575 |
| - Mongoid.truncate! |
576 |
| - expect(House.count).to eq(0) |
| 632 | + end |
| 633 | + |
| 634 | + context '#purge' do |
| 635 | + it 'respects persistence context overrides' do |
| 636 | + House.create!(name: '2', model: 'Tiny') |
| 637 | + expect(House.count).to eq(1) |
| 638 | + Mongoid.purge! |
| 639 | + expect(House.count).to eq(0) |
| 640 | + end |
| 641 | + end |
| 642 | + |
| 643 | + context '#truncate' do |
| 644 | + it '#truncate! respects persistence context overrides' do |
| 645 | + House.create!(name: '2', model: 'Tiny') |
| 646 | + expect(House.count).to eq(1) |
| 647 | + Mongoid.truncate! |
| 648 | + expect(House.count).to eq(0) |
| 649 | + end |
577 | 650 | end
|
578 | 651 | end
|
579 | 652 | end
|
|
0 commit comments