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

« back to all changes in this revision

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