~ubuntu-branches/ubuntu/utopic/ruby-database-cleaner/utopic-proposed

« back to all changes in this revision

Viewing changes to spec/database_cleaner/mongo/truncation_spec.rb

  • Committer: Package Import Robot
  • Author(s): Pirate Praveen
  • Date: 2014-05-24 01:23:06 UTC
  • Revision ID: package-import@ubuntu.com-20140524012306-1nn3zh7s867f2gn9
Tags: upstream-1.2.0
ImportĀ upstreamĀ versionĀ 1.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
require File.dirname(__FILE__) + '/../../spec_helper'
 
2
require 'mongo'
 
3
require 'database_cleaner/mongo/truncation'
 
4
require File.dirname(__FILE__) + '/mongo_examples'
 
5
 
 
6
module DatabaseCleaner
 
7
  module Mongo
 
8
 
 
9
    describe Truncation do
 
10
      let(:args) {{}}
 
11
      let(:truncation) { described_class.new(args).tap { |t| t.db=@db } }
 
12
      #doing this in the file root breaks autospec, doing it before(:all) just fails the specs
 
13
      before(:all) do
 
14
        @connection = ::Mongo::Connection.new('127.0.0.1')
 
15
        @test_db = 'database_cleaner_specs'
 
16
        @db = @connection.db(@test_db)
 
17
      end
 
18
 
 
19
      after(:each) do
 
20
        @connection.drop_database(@test_db)
 
21
      end
 
22
 
 
23
      def ensure_counts(expected_counts)
 
24
        # I had to add this sanity_check garbage because I was getting non-determinisc results from mongo at times..
 
25
        # very odd and disconcerting...
 
26
        expected_counts.each do |model_class, expected_count|
 
27
          model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
 
28
        end
 
29
      end
 
30
 
 
31
      def create_widget(attrs={})
 
32
        MongoTest::Widget.new({:name => 'some widget'}.merge(attrs)).save!
 
33
      end
 
34
 
 
35
      def create_gadget(attrs={})
 
36
        MongoTest::Gadget.new({:name => 'some gadget'}.merge(attrs)).save!
 
37
      end
 
38
 
 
39
      it "truncates all collections by default" do
 
40
        create_widget
 
41
        create_gadget
 
42
        ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
 
43
        truncation.clean
 
44
        ensure_counts(MongoTest::Widget => 0, MongoTest::Gadget => 0)
 
45
      end
 
46
 
 
47
      context "when collections are provided to the :only option" do
 
48
        let(:args) {{:only => ['MongoTest::Widget']}}
 
49
        it "only truncates the specified collections" do
 
50
          create_widget
 
51
          create_gadget
 
52
          ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
 
53
          truncation.clean
 
54
          ensure_counts(MongoTest::Widget => 0, MongoTest::Gadget => 1)
 
55
        end
 
56
      end
 
57
 
 
58
      context "when collections are provided to the :except option" do
 
59
        let(:args) {{:except => ['MongoTest::Widget']}}
 
60
        it "truncates all but the specified collections" do
 
61
          create_widget
 
62
          create_gadget
 
63
          ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
 
64
          truncation.clean
 
65
          ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 0)
 
66
        end
 
67
      end
 
68
 
 
69
    end
 
70
 
 
71
  end
 
72
end