From f3f625276b514415c22e6382257e310e0739553c Mon Sep 17 00:00:00 2001 From: eliot-akira Date: Sat, 14 Aug 2021 10:13:17 +0200 Subject: [PATCH] Restore original tests for non-streaming method treatRawData --- test/persistence.test.js | 111 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 7 deletions(-) diff --git a/test/persistence.test.js b/test/persistence.test.js index 5131f14..df0dcda 100755 --- a/test/persistence.test.js +++ b/test/persistence.test.js @@ -42,7 +42,21 @@ describe('Persistence', function () { ], done) }) - it('Every line represents a document', function (done) { + it('Every line represents a document', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ _id: '2', hello: 'world' }) + '\n' + + model.serialize({ _id: '3', nested: { today: now } }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(3) + assert.deepStrictEqual(treatedData[0], { _id: '1', a: 2, ages: [1, 5, 12] }) + assert.deepStrictEqual(treatedData[1], { _id: '2', hello: 'world' }) + assert.deepStrictEqual(treatedData[2], { _id: '3', nested: { today: now } }) + }) + + it('Every line represents a document (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ _id: '2', hello: 'world' }) + '\n' + @@ -63,7 +77,20 @@ describe('Persistence', function () { }) }) - it('Badly formatted lines have no impact on the treated data', function (done) { + it('Badly formatted lines have no impact on the treated data', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + 'garbage\n' + + model.serialize({ _id: '3', nested: { today: now } }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '1', a: 2, ages: [1, 5, 12] }) + assert.deepStrictEqual(treatedData[1], { _id: '3', nested: { today: now } }) + }) + + it('Badly formatted lines have no impact on the treated data (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + 'garbage\n' + @@ -84,7 +111,20 @@ describe('Persistence', function () { }) }) - it('Well formatted lines that have no _id are not included in the data', function (done) { + it('Well formatted lines that have no _id are not included in the data', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ _id: '2', hello: 'world' }) + '\n' + + model.serialize({ nested: { today: now } }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '1', a: 2, ages: [1, 5, 12] }) + assert.deepStrictEqual(treatedData[1], { _id: '2', hello: 'world' }) + }) + + it('Well formatted lines that have no _id are not included in the data (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ _id: '2', hello: 'world' }) + '\n' + @@ -104,7 +144,20 @@ describe('Persistence', function () { }) }) - it('If two lines concern the same doc (= same _id), the last one is the good version', function (done) { + it('If two lines concern the same doc (= same _id), the last one is the good version', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ _id: '2', hello: 'world' }) + '\n' + + model.serialize({ _id: '1', nested: { today: now } }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '1', nested: { today: now } }) + assert.deepStrictEqual(treatedData[1], { _id: '2', hello: 'world' }) + }) + + it('If two lines concern the same doc (= same _id), the last one is the good version (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ _id: '2', hello: 'world' }) + '\n' + @@ -124,7 +177,21 @@ describe('Persistence', function () { }) }) - it('If a doc contains $$deleted: true, that means we need to remove it from the data', function (done) { + it('If a doc contains $$deleted: true, that means we need to remove it from the data', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ _id: '2', hello: 'world' }) + '\n' + + model.serialize({ _id: '1', $$deleted: true }) + '\n' + + model.serialize({ _id: '3', today: now }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '2', hello: 'world' }) + assert.deepStrictEqual(treatedData[1], { _id: '3', today: now }) + }) + + it('If a doc contains $$deleted: true, that means we need to remove it from the data (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ _id: '2', hello: 'world' }) + '\n' + @@ -145,7 +212,20 @@ describe('Persistence', function () { }) }) - it('If a doc contains $$deleted: true, no error is thrown if the doc wasnt in the list before', function (done) { + it('If a doc contains $$deleted: true, no error is thrown if the doc wasnt in the list before', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ _id: '2', $$deleted: true }) + '\n' + + model.serialize({ _id: '3', today: now }) + const treatedData = d.persistence.treatRawData(rawData).data + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '1', a: 2, ages: [1, 5, 12] }) + assert.deepStrictEqual(treatedData[1], { _id: '3', today: now }) + }) + + it('If a doc contains $$deleted: true, no error is thrown if the doc wasnt in the list before (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ _id: '2', $$deleted: true }) + '\n' + @@ -165,7 +245,24 @@ describe('Persistence', function () { }) }) - it('If a doc contains $$indexCreated, no error is thrown during treatRawData and we can get the index options', function (done) { + it('If a doc contains $$indexCreated, no error is thrown during treatRawData and we can get the index options', function () { + const now = new Date() + const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + + model.serialize({ $$indexCreated: { fieldName: 'test', unique: true } }) + '\n' + + model.serialize({ _id: '3', today: now }) + const treatedData = d.persistence.treatRawData(rawData).data + const indexes = d.persistence.treatRawData(rawData).indexes + + Object.keys(indexes).length.should.equal(1) + assert.deepStrictEqual(indexes.test, { fieldName: 'test', unique: true }) + + treatedData.sort(function (a, b) { return a._id - b._id }) + treatedData.length.should.equal(2) + assert.deepStrictEqual(treatedData[0], { _id: '1', a: 2, ages: [1, 5, 12] }) + assert.deepStrictEqual(treatedData[1], { _id: '3', today: now }) + }) + + it('If a doc contains $$indexCreated, no error is thrown during treatRawData and we can get the index options (with stream)', function (done) { const now = new Date() const rawData = model.serialize({ _id: '1', a: 2, ages: [1, 5, 12] }) + '\n' + model.serialize({ $$indexCreated: { fieldName: 'test', unique: true } }) + '\n' +