mongo_browser 0.2.0.rc2 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. data/.gitignore +3 -1
  2. data/.rspec +1 -1
  3. data/.travis.yml +6 -1
  4. data/CHANGELOG.md +15 -0
  5. data/{grunt.js → Gruntfile.js} +10 -8
  6. data/Procfile +1 -0
  7. data/README.md +44 -2
  8. data/Rakefile +1 -12
  9. data/app/assets/images/ajax-loader.gif +0 -0
  10. data/app/assets/javascripts/app/controllers/{breadcrumbs.js.coffee → breadcrumbs_controller.js.coffee} +4 -7
  11. data/app/assets/javascripts/app/controllers/collections/index_controller.js.coffee +38 -0
  12. data/app/assets/javascripts/app/controllers/collections/stats_controller.js.coffee +17 -0
  13. data/app/assets/javascripts/app/controllers/{databases.js.coffee → databases/index_controller.js.coffee} +11 -15
  14. data/app/assets/javascripts/app/controllers/databases/stats_controller.js.coffee +15 -0
  15. data/app/assets/javascripts/app/controllers/documents/index_controller.js.coffee +54 -0
  16. data/app/assets/javascripts/app/controllers/documents/show_controller.js.coffee +38 -0
  17. data/app/assets/javascripts/app/controllers/main_controller.js.coffee +15 -0
  18. data/app/assets/javascripts/app/controllers/servers/show_controller.js.coffee +17 -0
  19. data/app/assets/javascripts/app/directives.js.coffee +23 -0
  20. data/app/assets/javascripts/app/filters.js.coffee +14 -1
  21. data/app/assets/javascripts/app/modules/alerts.js.coffee +58 -0
  22. data/app/assets/javascripts/app/modules/pager.js.coffee +2 -2
  23. data/app/assets/javascripts/app/modules/spinner.js.coffee +29 -0
  24. data/app/assets/javascripts/app/modules/table_filter.js.coffee +4 -4
  25. data/app/assets/javascripts/app/resources.js.coffee +14 -8
  26. data/app/assets/javascripts/app/services.js.coffee +11 -33
  27. data/app/assets/javascripts/application.js.coffee +62 -34
  28. data/app/assets/javascripts/application.test.js.coffee +5 -0
  29. data/app/assets/javascripts/compiled_templates.js.coffee +1 -0
  30. data/app/assets/javascripts/vendor.js.coffee +0 -1
  31. data/app/assets/stylesheets/application.css.scss +36 -18
  32. data/{public/index.html → app/views/index.erb} +8 -8
  33. data/bin/mongo_browser +2 -13
  34. data/config.ru +3 -1
  35. data/lib/mongo_browser.rb +1 -0
  36. data/lib/mongo_browser/api.rb +11 -0
  37. data/lib/mongo_browser/api/collections.rb +34 -0
  38. data/lib/mongo_browser/api/databases.rb +32 -0
  39. data/lib/mongo_browser/api/documents.rb +37 -0
  40. data/lib/mongo_browser/api/mongo.rb +41 -0
  41. data/lib/mongo_browser/application.rb +8 -174
  42. data/lib/mongo_browser/application/development.rb +32 -0
  43. data/lib/mongo_browser/cli.rb +48 -0
  44. data/lib/mongo_browser/entities.rb +43 -0
  45. data/lib/mongo_browser/models/collection.rb +7 -12
  46. data/lib/mongo_browser/models/document.rb +5 -1
  47. data/lib/mongo_browser/models/pager.rb +22 -9
  48. data/lib/mongo_browser/version.rb +1 -1
  49. data/mongo_browser.gemspec +22 -15
  50. data/package.json +30 -0
  51. data/public/ng/templates/alerts.html +6 -0
  52. data/public/ng/templates/collections/index.html +39 -0
  53. data/public/ng/templates/collections/stats.html +18 -0
  54. data/public/ng/templates/databases/index.html +35 -0
  55. data/public/ng/templates/databases/stats.html +18 -0
  56. data/public/ng/templates/documents/index.html +40 -0
  57. data/public/ng/templates/documents/show.html +17 -0
  58. data/{app/assets → public/ng}/templates/pager.html +0 -0
  59. data/{app/assets/templates/server_info.html → public/ng/templates/server/show.html} +1 -1
  60. data/{app/assets → public/ng}/templates/table_filter.html +0 -0
  61. data/script/ci_all +5 -1
  62. data/script/ci_e2e +5 -2
  63. data/script/ci_javascripts +1 -1
  64. data/script/ci_rspec +1 -1
  65. data/spec/javascripts/app/controllers/{breadcrumbs_spec.js.coffee → breadcrumbs_controller_spec.js.coffee} +1 -1
  66. data/spec/javascripts/app/controllers/collections/index_controller_spec.js.coffee +95 -0
  67. data/spec/javascripts/app/controllers/collections/stats_controller_spec.js.coffee +34 -0
  68. data/spec/javascripts/app/controllers/databases/index_controller_spec.js.coffee +93 -0
  69. data/spec/javascripts/app/controllers/databases/stats_controller_spec.js.coffee +30 -0
  70. data/spec/javascripts/app/controllers/documents/index_controller_spec.js.coffee +108 -0
  71. data/spec/javascripts/app/controllers/documents/show_controller_spec.js.coffee +94 -0
  72. data/spec/javascripts/app/controllers/{main_spec.js.coffee → main_controller_spec.js.coffee} +2 -2
  73. data/spec/javascripts/app/controllers/{server_info_spec.js.coffee → server/show_controller_spec.js.coffee} +5 -6
  74. data/spec/javascripts/app/directives_spec.js.coffee +108 -24
  75. data/spec/javascripts/app/filters_spec.js.coffee +31 -5
  76. data/spec/javascripts/app/modules/alerts_spec.js.coffee +138 -0
  77. data/spec/javascripts/app/modules/dialogs_spec.js.coffee +1 -2
  78. data/spec/javascripts/app/modules/pager_spec.js.coffee +0 -1
  79. data/spec/javascripts/app/modules/spinner_spec.js.coffee +65 -0
  80. data/spec/javascripts/app/modules/table_filter_spec.js.coffee +9 -9
  81. data/spec/javascripts/app/resources_spec.js.coffee +99 -0
  82. data/spec/javascripts/app/services_spec.js.coffee +31 -71
  83. data/spec/javascripts/config/{testacular-e2e.conf.js → karma-e2e.conf.js} +1 -1
  84. data/spec/javascripts/config/{testacular.conf.js → karma.conf.js} +2 -3
  85. data/spec/javascripts/e2e/collection_stats_scenario.js.coffee +12 -0
  86. data/spec/javascripts/e2e/collections_scenario.js.coffee +59 -20
  87. data/spec/javascripts/e2e/database_stats_scenario.js.coffee +11 -0
  88. data/spec/javascripts/e2e/databases_scenario.js.coffee +37 -36
  89. data/spec/javascripts/e2e/document_show_scenario.js.coffee +31 -0
  90. data/spec/javascripts/e2e/documents_pagination_scenario.js.coffee +33 -0
  91. data/spec/javascripts/e2e/documents_scenario.js.coffee +43 -4
  92. data/spec/javascripts/e2e/server_info_scenario.js.coffee +8 -2
  93. data/spec/javascripts/helpers/mocks.js.coffee +2 -0
  94. data/spec/javascripts/helpers_e2e/dsl.js.coffee +20 -0
  95. data/spec/javascripts/lib/angular-mocks.js +64 -16
  96. data/spec/javascripts/lib/angular-scenario.js +724 -561
  97. data/spec/javascripts/runner.html +5 -5
  98. data/spec/lib/api/collections_spec.rb +62 -0
  99. data/spec/lib/api/databases_spec.rb +58 -0
  100. data/spec/lib/api/documents_spec.rb +135 -0
  101. data/spec/lib/api/mongo_spec.rb +27 -0
  102. data/spec/lib/cli_spec.rb +19 -0
  103. data/spec/lib/entities_spec.rb +39 -0
  104. data/spec/lib/models/collection_spec.rb +16 -10
  105. data/spec/lib/models/database_spec.rb +4 -4
  106. data/spec/lib/models/document_spec.rb +5 -5
  107. data/spec/lib/models/pager_spec.rb +20 -11
  108. data/spec/spec_helper.rb +7 -15
  109. data/spec/support/api_example_group.rb +45 -0
  110. data/spec/support/fixtures.rb +10 -6
  111. data/spec/support/matchers/expose.rb +18 -0
  112. data/vendor/assets/javascripts/angular/angular-bootstrap.js +1 -1
  113. data/vendor/assets/javascripts/angular/angular-resource.js +78 -56
  114. data/vendor/assets/javascripts/angular/angular-sanitize.js +3 -1
  115. data/vendor/assets/javascripts/angular/angular.js +720 -404
  116. metadata +323 -183
  117. data/app/assets/javascripts/app.js.coffee +0 -8
  118. data/app/assets/javascripts/app/controllers.js.coffee +0 -2
  119. data/app/assets/javascripts/app/controllers/alerts.js.coffee +0 -12
  120. data/app/assets/javascripts/app/controllers/collections.js.coffee +0 -40
  121. data/app/assets/javascripts/app/controllers/documents.js.coffee +0 -49
  122. data/app/assets/javascripts/app/controllers/main.js.coffee +0 -10
  123. data/app/assets/javascripts/app/controllers/server_info.js.coffee +0 -14
  124. data/app/assets/javascripts/templates.js.coffee +0 -1
  125. data/app/assets/javascripts/templates/.gitkeep +0 -0
  126. data/app/assets/templates/collections.html +0 -53
  127. data/app/assets/templates/databases.html +0 -32
  128. data/app/assets/templates/documents.html +0 -45
  129. data/config-e2e.ru +0 -20
  130. data/spec/features/collections_list_spec.rb +0 -64
  131. data/spec/features/documents_list_spec.rb +0 -139
  132. data/spec/features/server_info_spec.rb +0 -23
  133. data/spec/javascripts/app/controllers/alerts_spec.js.coffee +0 -36
  134. data/spec/javascripts/app/controllers/collections_spec.js.coffee +0 -78
  135. data/spec/javascripts/app/controllers/databases_spec.js.coffee +0 -55
  136. data/spec/javascripts/app/controllers/documents_spec.js.coffee +0 -62
  137. data/spec/javascripts/helpers_e2e/app_element.js.coffee +0 -6
  138. data/spec/support/feature_example_group.rb +0 -53
  139. data/spec/support/matchers/have_flash_message.rb +0 -16
  140. data/spec/support/mongod.rb +0 -91
  141. data/spec/support/mongodb.conf +0 -47
@@ -15,11 +15,11 @@
15
15
  <script type="text/javascript" src="/assets/app.js"></script>
16
16
 
17
17
  <!-- Load specs -->
18
- <script type="text/javascript" src="/assets/templates.js"></script>
18
+ <script type="text/javascript" src="/assets/compiled_templates.js"></script>
19
19
  <script type="text/javascript" src="/_specs/spec.js"></script>
20
20
 
21
21
  <script type="text/javascript">
22
- (function () {
22
+ (function() {
23
23
  var jasmineEnv = jasmine.getEnv();
24
24
  jasmineEnv.updateInterval = 1000;
25
25
 
@@ -27,14 +27,14 @@
27
27
 
28
28
  jasmineEnv.addReporter(trivialReporter);
29
29
 
30
- jasmineEnv.specFilter = function (spec) {
30
+ jasmineEnv.specFilter = function(spec) {
31
31
  return trivialReporter.specFilter(spec);
32
32
  };
33
33
 
34
34
  var currentWindowOnload = window.onload;
35
35
 
36
- window.onload = function () {
37
- if (currentWindowOnload) {
36
+ window.onload = function() {
37
+ if(currentWindowOnload) {
38
38
  currentWindowOnload();
39
39
  }
40
40
  execJasmine();
@@ -0,0 +1,62 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser::API::Collections do
4
+ include ApiExampleGroup
5
+
6
+ def app
7
+ described_class
8
+ end
9
+
10
+ describe "collections" do
11
+ let(:db_name) { "first_database" }
12
+
13
+ describe_endpoint :get, "/databases/:db_name/collections" do
14
+ it { should be_successful }
15
+
16
+ describe "returned collections" do
17
+ subject(:collections) { JSON.parse(response.body) }
18
+
19
+ it { should_not be_empty }
20
+ it("contains all collections") { expect(collections).to have(4).items }
21
+
22
+ describe "a collection" do
23
+ subject(:collection) { collections.find { |collection| collection["name"] == "first_collection" } }
24
+
25
+ it { should_not be_nil }
26
+ it("contains database name") { expect(collection["dbName"]).to eq("first_database") }
27
+ it("contains collection name") { expect(collection["name"]).to eq("first_collection") }
28
+ it("contains number of documents") { expect(collection["size"]).to eq(2) }
29
+ end
30
+ end
31
+ end
32
+
33
+ describe_endpoint :get, "/databases/:db_name/collections/:collection_name/stats" do
34
+ let(:collection_name) { "first_collection" }
35
+
36
+ it { should be_successful }
37
+
38
+ it "returns stats for the collection with the given name" do
39
+ stats = JSON.parse(response.body)
40
+ expect(stats).not_to be_empty
41
+ end
42
+ end
43
+
44
+ describe_endpoint :delete, "/databases/:db_name/collections/:collection_name" do
45
+ let(:collection_name) { "first_collection" }
46
+
47
+ before do
48
+ expect { do_request }.to \
49
+ change { server.database(db_name).collections.count }.by(-1)
50
+ end
51
+
52
+ it { should be_successful }
53
+
54
+ it "deletes a collection with the given name" do
55
+ data = JSON.parse(response.body)
56
+ expect(data["success"]).to be_true
57
+ end
58
+ end
59
+ end
60
+
61
+
62
+ end
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser::API::Databases do
4
+ include ApiExampleGroup
5
+
6
+ def app
7
+ described_class
8
+ end
9
+
10
+ describe "databases" do
11
+ describe_endpoint :get, "/databases" do
12
+ it { should be_successful }
13
+
14
+ describe "returned databases" do
15
+ subject(:data) { JSON.parse(response.body) }
16
+
17
+ it { should_not be_empty }
18
+ it("contains all databases") { should have_at_least(3).items }
19
+
20
+ describe "a database" do
21
+ subject(:database) { data.find { |db| db["name"] == "first_database" } }
22
+
23
+ it { should_not be_nil }
24
+ it("contains name") { expect(database["name"]).to eq("first_database") }
25
+ it("contains number of collections") { expect(database["count"]).to eq(4) }
26
+ end
27
+ end
28
+ end
29
+
30
+ describe_endpoint :delete, "/databases/:db_name" do
31
+ let(:db_name) { "first_database" }
32
+
33
+ before do
34
+ expect { do_request }.to \
35
+ change { server.databases.count }.by(-1)
36
+ end
37
+
38
+ it { should be_successful }
39
+
40
+ it "deletes a database with the given name" do
41
+ data = JSON.parse(response.body)
42
+ expect(data["success"]).to be_true
43
+ end
44
+ end
45
+
46
+ describe_endpoint :get, "/databases/:db_name/stats" do
47
+ let(:db_name) { "first_database" }
48
+
49
+ it { should be_successful }
50
+
51
+ it "gets stats for the given database" do
52
+ stats = JSON.parse(response.body)
53
+ expect(stats).to_not be_empty
54
+ end
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,135 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser::API::Documents do
4
+ include ApiExampleGroup
5
+
6
+ def app
7
+ described_class
8
+ end
9
+
10
+ describe "documents" do
11
+ let(:db_name) { "first_database" }
12
+ let(:collection_name) { "first_collection" }
13
+
14
+ describe "paged documents list" do
15
+ shared_examples :returned_documents do
16
+ it("contains all documents") do
17
+ expect(data["documents"]).not_to be_nil
18
+ expect(data["documents"]).to have_at_least(1).item
19
+ end
20
+
21
+ describe "a document" do
22
+ subject(:document) { data["documents"].first }
23
+
24
+ it { should_not be_nil }
25
+ it("contains id") { expect(document["id"]).to_not be_nil }
26
+ it("contains document data") { expect(document["data"]).to_not be_nil }
27
+ end
28
+ end
29
+
30
+ describe_endpoint :get, "/databases/:db_name/collections/:collection_name/documents" do
31
+ it { should be_successful }
32
+
33
+ describe "returned documents" do
34
+ subject(:data) { JSON.parse(response.body) }
35
+
36
+ it("contains the current page") { expect(data["page"]).to equal(1) }
37
+ it("contains size") { expect(data["size"]).to equal(2) }
38
+ it("contains total pages") { expect(data["totalPages"]).to equal(1) }
39
+
40
+ include_examples :returned_documents
41
+ end
42
+ end
43
+
44
+ describe "for a large set of documents" do
45
+ before { Fixtures.instance.load_documents! }
46
+ let(:collection_name) { "second_collection" }
47
+
48
+ describe_endpoint :get, "/databases/:db_name/collections/:collection_name/documents?page=:page" do
49
+ let(:page) { 3 }
50
+
51
+ it { should be_successful }
52
+
53
+ describe "returned documents" do
54
+ subject(:data) { JSON.parse(response.body) }
55
+
56
+ it("contains the current page") { expect(data["page"]).to equal(3) }
57
+ it("contains size") { expect(data["size"]).to equal(70) }
58
+ it("contains total pages") { expect(data["totalPages"]).to equal(3) }
59
+
60
+ include_examples :returned_documents
61
+ end
62
+
63
+ context "when the page number is invalid" do
64
+ let(:page) { "invalid" }
65
+
66
+ it { should_not be_successful }
67
+ it("responds with 403") { expect(response.status).to eq(403) }
68
+
69
+ it("should notify about invalid param") do
70
+ error = JSON.parse(response.body)["error"]
71
+ expect(error).not_to be_nil
72
+ expect(error).to eq("invalid parameter: page")
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ describe_endpoint :get, "/databases/:db_name/collections/:collection_name/documents/:id" do
80
+ let(:id) do
81
+ document = server.database(db_name).collection(collection_name).mongo_collection.find({}, limit: 1).first
82
+ document["_id"]
83
+ end
84
+
85
+ context "whe the document has been found" do
86
+ it { should be_successful }
87
+
88
+ it "returns the document" do
89
+ data = JSON.parse(response.body)
90
+ expect(data["id"]).to eq(id.to_s)
91
+ expect(data["dbName"]).to eq(db_name)
92
+ expect(data["collectionName"]).to eq(collection_name)
93
+ end
94
+ end
95
+
96
+ context "when the documents has not been found" do
97
+ before do
98
+ collection = server.database(db_name).collection(collection_name)
99
+ document = collection.find(id)
100
+ collection.remove!(document)
101
+ end
102
+
103
+ it { should_not be_successful }
104
+ its(:status) { should == 404 }
105
+
106
+ it("should notify about not found document") do
107
+ error = JSON.parse(response.body)["error"]
108
+ expect(error).not_to be_nil
109
+ expect(error).to eq("Document not found")
110
+ end
111
+ end
112
+ end
113
+
114
+ describe_endpoint :delete, "/databases/:db_name/collections/:collection_name/documents/:id" do
115
+ let(:id) do
116
+ document = server.database(db_name).collection(collection_name).mongo_collection.find({}, limit: 1).first
117
+ document["_id"]
118
+ end
119
+
120
+ before do
121
+ expect { do_request }.to \
122
+ change { server.database(db_name).collection(collection_name).size }.by(-1)
123
+ end
124
+
125
+ it { should be_successful }
126
+
127
+ it "deletes a document with the given id" do
128
+ data = JSON.parse(response.body)
129
+ expect(data["success"]).to be_true
130
+ end
131
+ end
132
+ end
133
+
134
+
135
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser::API::Mongo do
4
+ include ApiExampleGroup
5
+
6
+ def app
7
+ described_class
8
+ end
9
+
10
+ describe_endpoint :get, "/server_info" do
11
+ it { should be_successful }
12
+
13
+ it "returns info about the server" do
14
+ server_info = JSON.parse(response.body)
15
+ expect(server_info).to_not be_empty
16
+ end
17
+ end
18
+
19
+ describe_endpoint :get, "/version" do
20
+ it { should be_successful }
21
+
22
+ it "returns application version" do
23
+ data = JSON.parse(response.body)
24
+ expect(data["version"]).to eq(MongoBrowser::VERSION)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+ require "mongo_browser/cli"
3
+
4
+ describe MongoBrowser::CLI do
5
+
6
+ describe "#start" do
7
+ let(:runner) { double("runer", run!: true) }
8
+ before { Thin::Runner.stub(:new).and_return(runner) }
9
+
10
+ it "starts the application" do
11
+ args = ["start", "--port=1234"]
12
+ MongoBrowser::CLI.start(args)
13
+
14
+ expect(Thin::Runner).to have_received(:new).with(kind_of(Array))
15
+ expect(runner).to have_received(:run!)
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser::Entities::Database do
4
+ let(:database) { double }
5
+ subject(:database_entity) { described_class.new(database) }
6
+
7
+ it { should expose :name }
8
+ it { should expose :size }
9
+ it { should expose :count }
10
+ end
11
+
12
+ describe MongoBrowser::Entities::Collection do
13
+ let(:collection) { double }
14
+ subject(:database_entity) { described_class.new(collection) }
15
+
16
+ it { should expose :dbName }
17
+ it { should expose :name }
18
+ it { should expose :size }
19
+ end
20
+
21
+ describe MongoBrowser::Entities::Document do
22
+ let(:document) { double }
23
+ subject(:database_entity) { described_class.new(document) }
24
+
25
+ it { should expose :id }
26
+ it { should expose :dbName }
27
+ it { should expose :collectionName }
28
+ it { should expose :data }
29
+ end
30
+
31
+ describe MongoBrowser::Entities::PagedDocuments do
32
+ let(:pager) { double }
33
+ subject(:database_entity) { described_class.new(pager) }
34
+
35
+ it { should expose :page }
36
+ it { should expose :size }
37
+ it { should expose :totalPages }
38
+ it { should expose :documents }
39
+ end
@@ -1,14 +1,14 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe MongoBrowser::Models::Collection do
4
- let(:mongo_db_name) { "first_database" }
5
- let(:mongo_collection_name) { "first_collection" }
4
+ let(:db_name) { "first_database" }
5
+ let(:collection_name) { "first_collection" }
6
6
 
7
7
  let(:server) { MongoBrowser::Models::Server.current }
8
8
 
9
9
  let(:mongo_collection) do
10
- server.connection[mongo_db_name]
11
- .collection(mongo_collection_name)
10
+ server.connection[db_name]
11
+ .collection(collection_name)
12
12
  end
13
13
 
14
14
  let(:collection) { described_class.new(mongo_collection) }
@@ -18,8 +18,8 @@ describe MongoBrowser::Models::Collection do
18
18
  collection.mongo_collection.should == mongo_collection
19
19
  end
20
20
 
21
- its(:db_name) { should == mongo_db_name }
22
- its(:name) { should == mongo_collection_name }
21
+ its(:db_name) { should == db_name }
22
+ its(:name) { should == collection_name }
23
23
  its(:size) { should == 2 }
24
24
 
25
25
  describe "#stats" do
@@ -32,7 +32,7 @@ describe MongoBrowser::Models::Collection do
32
32
  end
33
33
 
34
34
  describe "#drop!" do
35
- let(:database) { server.database(mongo_db_name) }
35
+ let(:database) { server.database(db_name) }
36
36
 
37
37
  it "drops the collection" do
38
38
  collection.drop!
@@ -41,9 +41,15 @@ describe MongoBrowser::Models::Collection do
41
41
  end
42
42
 
43
43
  describe "#documents_with_pagination" do
44
- it "returns a collection of documents"
44
+ subject { collection.documents_with_pagination }
45
45
 
46
- it "returns a pager"
46
+ it { should be_an_instance_of(OpenStruct) }
47
+ its(:size) { should == 2 }
48
+ its(:page) { should == 1 }
49
+ its(:total_pages) { should == 1 }
50
+
51
+ its(:documents) { should be_an_instance_of(Array) }
52
+ its(:documents) { should have(2).items }
47
53
  end
48
54
 
49
55
  describe "#find" do
@@ -70,7 +76,7 @@ describe MongoBrowser::Models::Collection do
70
76
  end
71
77
 
72
78
  describe "#remove!" do
73
- let(:document) { MongoBrowser::Models::Document.new(mongo_collection.find.first) }
79
+ let(:document) { MongoBrowser::Models::Document.new(db_name, collection_name, mongo_collection.find.first) }
74
80
 
75
81
  it "removes a document from the collection" do
76
82
  expect(collection.remove!(document)).to be_true
@@ -2,8 +2,8 @@ require "spec_helper"
2
2
 
3
3
  describe MongoBrowser::Models::Database do
4
4
  let(:connection) { MongoBrowser::Models::Server.current.connection }
5
- let(:mongo_db_name) { "first_database" }
6
- let(:mongo_db) { connection[mongo_db_name] }
5
+ let(:db_name) { "first_database" }
6
+ let(:mongo_db) { connection[db_name] }
7
7
 
8
8
  let(:database) { described_class.new(mongo_db) }
9
9
  subject { database }
@@ -12,8 +12,8 @@ describe MongoBrowser::Models::Database do
12
12
  database.mongo_db.should == mongo_db
13
13
  end
14
14
 
15
- its(:id) { should == mongo_db_name }
16
- its(:name) { should == mongo_db_name }
15
+ its(:id) { should == db_name }
16
+ its(:name) { should == db_name }
17
17
 
18
18
  its(:size) { should be_an_instance_of(Fixnum) }
19
19