Skip to content

Commit 2b27ec0

Browse files
johnnyshieldsp
andcommitted
MONGOID-5017 Better specs for #truncate! and #purge! (#5035)
* Better specs for #truncate! and #purge! Fixes MONGOID-5017 * add another assertion Co-authored-by: shields <[email protected]> Co-authored-by: Oleg Pudeyev <[email protected]>
1 parent ca73404 commit 2b27ec0

File tree

1 file changed

+89
-16
lines changed

1 file changed

+89
-16
lines changed

spec/mongoid/config_spec.rb

Lines changed: 89 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@
219219
expect(Mongoid::Config.discriminator_key).to be("test")
220220
end
221221

222-
it 'is set globally' do
222+
it 'is set globally' do
223223
expect(Mongoid.discriminator_key).to be("test")
224224
end
225225
end
@@ -546,34 +546,107 @@ def self.logger
546546
end
547547
end
548548

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)
552556
end
553557

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}"
556599
end
557600

558601
after do
602+
# Ensure the database override is cleared.
559603
Mongoid.override_database(nil)
560604
end
561605

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
564624
House.create!(name: '1', model: 'Big')
565625
expect(House.count).to eq(1)
566-
Mongoid.purge!
567-
expect(House.count).to eq(0)
626+
Mongoid.override_database(database)
568627
end
569-
end
570628

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)
574631
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
577650
end
578651
end
579652
end

0 commit comments

Comments
 (0)