/**
 * Test cloneCollectionAsCapped
 *
 * @tags: [
 *  requires_non_retryable_commands,
 *  requires_fastcount,
 *  requires_capped,
 *  # capped collections connot be sharded
 *  assumes_unsharded_collection,
 *  # cloneCollectionAsCapped command is not supported on mongos
 *  assumes_against_mongod_not_mongos,
 *  # TODO (SERVER-52727): Synchronize cloneCollectionAsCapped with tenant migrations.
 *  tenant_migration_incompatible,
 * ]
 */

source = db.capped_convertToCapped1;
dest = db.capped_convertToCapped1_clone;

source.drop();
dest.drop();

N = 1000;

for (i = 0; i < N; ++i) {
    source.save({i: i});
}
assert.eq(N, source.count());

// should all fit
res = db.runCommand(
    {cloneCollectionAsCapped: source.getName(), toCollection: dest.getName(), size: 100000});
assert.commandWorked(res);
assert.eq(source.count(), dest.count());
assert.eq(N, source.count());  // didn't delete source

dest.drop();
// should NOT all fit
assert.commandWorked(db.runCommand(
    {cloneCollectionAsCapped: source.getName(), toCollection: dest.getName(), size: 1000}));

assert.eq(N, source.count());  // didn't delete source
assert.gt(source.count(), dest.count());
