From 75dd892664929413f98dd63e2f99a53f1506cb63 Mon Sep 17 00:00:00 2001 From: Leonardo Rossi Date: Wed, 23 Feb 2022 15:33:48 +0100 Subject: [PATCH] totalSize handles Long values from stats --- packages/shell-api/src/collection.spec.ts | 15 ++++++++------- packages/shell-api/src/collection.ts | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/shell-api/src/collection.spec.ts b/packages/shell-api/src/collection.spec.ts index 2e00f389ce..0a78615dfe 100644 --- a/packages/shell-api/src/collection.spec.ts +++ b/packages/shell-api/src/collection.spec.ts @@ -1202,17 +1202,18 @@ describe('Collection', () => { }); describe('totalSize', () => { - let result; - - beforeEach(() => { - result = { storageSize: 1000, totalIndexSize: 1000 }; - serviceProvider.stats.resolves(result); - }); - it('returns sum of storageSize and totalIndexSize', async() => { + const result = { storageSize: 1000, totalIndexSize: 1000 }; + serviceProvider.stats.resolves(result); expect(await collection.totalSize()).to.equal(2000); expect(serviceProvider.stats).to.have.been.calledOnceWith('db1', 'coll1'); }); + it('should handle Long numbers correctly', async() => { + const result = { storageSize: bson.Long.fromNumber(1732749910016), totalIndexSize: 10559533056 }; + serviceProvider.stats.resolves(result); + expect(await collection.totalSize()).to.equal(1743309443072); + expect(serviceProvider.stats).to.have.been.calledOnceWith('db1', 'coll1'); + }); }); describe('drop', () => { diff --git a/packages/shell-api/src/collection.ts b/packages/shell-api/src/collection.ts index 2ee3da8e81..baaed87579 100644 --- a/packages/shell-api/src/collection.ts +++ b/packages/shell-api/src/collection.ts @@ -1306,7 +1306,7 @@ export default class Collection extends ShellApiWithMongoClass { async totalSize(): Promise { this._emitCollectionApiCall('totalSize'); const stats = await this._mongo._serviceProvider.stats(this._database._name, this._name, await this._database._baseOptions()); - return (stats.storageSize || 0) + (stats.totalIndexSize || 0); + return (Number(stats.storageSize) || 0) + (Number(stats.totalIndexSize) || 0); } /**