There are likely more JavaScript tests which have been added since
r3.6.9 that still need to be tagged.
(cherry picked from commit 05ec08fa62)
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
/**
|
|
* Tests the behavior of views when its backing collection is dropped, as well as the behavior of
|
|
* system.views when views are dropped.
|
|
* @tags: [
|
|
* assumes_superuser_permissions,
|
|
* requires_find_command,
|
|
* ]
|
|
*/
|
|
(function() {
|
|
"use strict";
|
|
|
|
let viewsDBName = "views_drop";
|
|
let viewsDB = db.getSiblingDB(viewsDBName);
|
|
viewsDB.dropDatabase();
|
|
|
|
// Create collection and a view on it.
|
|
assert.writeOK(viewsDB.coll.insert({x: 1}));
|
|
assert.commandWorked(viewsDB.createView("view", "coll", []));
|
|
assert.eq(
|
|
viewsDB.view.find({}, {_id: 0}).toArray(), [{x: 1}], "couldn't find expected doc in view");
|
|
|
|
// Drop collection, view and system.views in that order, checking along the way.
|
|
assert(viewsDB.coll.drop(), "couldn't drop coll");
|
|
assert.eq(viewsDB.view.find().toArray(), [], "view isn't empty after dropping coll");
|
|
assert(viewsDB.view.drop(), "couldn't drop view");
|
|
assert.eq(
|
|
viewsDB.system.views.find().toArray(), [], "system.views isn't empty after dropping view");
|
|
assert(viewsDB.system.views.drop(), "couldn't drop system.views");
|
|
|
|
// Database should now be empty.
|
|
let res = viewsDB.runCommand({listCollections: 1});
|
|
assert.commandWorked(res);
|
|
assert.eq(res.cursor.firstBatch,
|
|
[],
|
|
viewsDBName + " is not empty after deleting views and system.views");
|
|
})();
|