File: test/tests_bulk.js

Recommend this page to a friend!
  Classes of Arturs Sosins   Countly SDK for Node.js   test/tests_bulk.js   Download  
File: test/tests_bulk.js
Role: Example script
Content type: text/plain
Description: Example script
Class: Countly SDK for Node.js
Report events to be tracked with by Count.ly API
Author: By
Last change:
Date: 29 days ago
Size: 12,543 bytes
 

Contents

Class file image Download
/* eslint-disable no-console */ /* global runthis */ const assert = require("assert"); const CountlyBulk = require("../lib/countly-bulk"); var hp = require("./helpers/helper_functions"); var storage = require("../lib/countly-storage"); var testUtils = require("./helpers/test_utils"); const { StorageTypes } = CountlyBulk; var appKey = "YOUR_APP_KEY"; var serverUrl = "https://tests.url.cly"; function validateCrash(validator, nonfatal) { assert.ok(validator.crash._os); assert.ok(validator.crash._os_version); assert.ok(validator.crash._error); assert.ok(validator.crash._app_version); assert.ok(typeof validator.crash._run !== 'undefined'); assert.ok(typeof validator.crash._custom !== 'undefined'); assert.equal(nonfatal, validator.crash._nonfatal); assert.equal(true, validator.crash._javascript); assert.equal(true, validator.crash._not_os_specific); } // Create bulk data function createBulkData(bulk) { // Add an event var user = bulk.add_user({ device_id: "testUser1" }); user.add_event(testUtils.getEventObj()); // add user details var user2 = bulk.add_user({ device_id: "testUser2" }); user2.user_details(testUtils.getUserDetailsObj()); // add request bulk.add_request({ device_id: "TestUser3" }); // add Crash var user4 = bulk.add_user({ device_id: "TestUser4" }); try { runthis(); } catch (ex) { user4.report_crash({ _os: "Android", _os_version: "7", _error: "Stack trace goes here", _app_version: "1.0", _run: 12345, _custom: {}, _nonfatal: true, _javascript: true, _not_os_specific: true, }, 1500645200); } } // Validate created bulk data function validateCreatedBulkData(bulk) { var events = bulk._getBulkEventQueue(); var reqQueue = bulk._getBulkRequestQueue(); var bulkQueue = bulk._getBulkQueue(); assert.equal(Object.keys(events).length, 1); assert.equal(reqQueue.length, 3); assert.equal(bulkQueue.length, 0); var deviceEvents = events.testUser1; // Access the events for the specific device var recordedEvent = deviceEvents[0]; // Access the first event hp.eventValidator(testUtils.getEventObj(), recordedEvent); var req = reqQueue[0]; // read user details queue const actualUserDetails = req.user_details; // Extract the user_details from the actual request const isValid = hp.validateUserDetails(actualUserDetails, testUtils.getUserDetailsObj()); assert.equal(true, isValid); var testUser3Request = reqQueue.find((request) => request.device_id === "TestUser3"); assert.ok(testUser3Request); assert.strictEqual(testUser3Request.device_id, "TestUser3"); assert.strictEqual(testUser3Request.app_key, "YOUR_APP_KEY"); assert.strictEqual(testUser3Request.sdk_name, "javascript_native_nodejs_bulk"); var testUser4Request = reqQueue.find((request) => request.device_id === "TestUser4"); validateCrash(testUser4Request, true); } function shouldFilesExist(shouldExist, isCustomTest = false) { hp.doesFileStoragePathsExist((exists) => { assert.equal(shouldExist, exists); }, true, isCustomTest); } describe("Bulk Tests", () => { beforeEach(async() => { await hp.clearStorage(); }); // without any config option default bulk storage // bulk mode is memory only by default it("1- CNR", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, }); assert.equal(storage.getStoragePath(), undefined); shouldFilesExist(false); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(false); done(); }, hp.mWait); }); // storage path and storage type provided in bulk // type should be file and path should be correct it("2- CNR_cPath_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_path: "../test/customStorageDirectory/", storage_type: StorageTypes.FILE, }); shouldFilesExist(true, true); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true, true); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); done(); }, hp.sWait); }); // file storage type in config // path should become the default "../bulk_data/" it("3- CNR_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.FILE, }); assert.equal(storage.getStoragePath(), "../bulk_data/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../bulk_data/"); done(); }, hp.mWait); }); // memory storage type in config // path should become undefined and storage files shouldn't exist it("4- CNR_memory", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.MEMORY, }); assert.equal(storage.getStoragePath(), undefined); shouldFilesExist(false); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(false); assert.equal(storage.getStoragePath(), undefined); done(); }, hp.mWait); }); // custom storage path and memory storage type provided in config // path should become undefined, type should be memory storage it("5- CNR_cPath_memory", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_path: "../test/customStorageDirectory/", storage_type: StorageTypes.MEMORY, }); assert.equal(storage.getStoragePath(), undefined); shouldFilesExist(false); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(false); assert.equal(storage.getStoragePath(), undefined); done(); }, hp.mWait); }); // persist_queue is true in bulk config // should switch to file storage and default bulk path it("6- CNR_persistTrue", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, persist_queue: true, }); assert.equal(storage.getStoragePath(), "../bulk_data/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../bulk_data/"); done(); }, hp.mWait); }); // persist_queue is false in bulk config // should result same with default bulk configurations it("7- CNR_persistFalse", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, persist_queue: false, }); assert.equal(storage.getStoragePath(), undefined); shouldFilesExist(false); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(false); assert.equal(storage.getStoragePath(), undefined); done(); }, hp.mWait); }); // custom path is provided and persist_queue is true in config // custom path should become the storage path and switch to file storage it("8- CNR_cPath_persistTrue", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_path: "../test/customStorageDirectory/", persist_queue: true, }); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); done(); }, hp.mWait); }); // custom path is provided and persist_queue is false in config // storage path should become undefined, should stay in memory storage it("9- CNR_cPath_persistFalse", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_path: "../test/customStorageDirectory/", persist_queue: false, }); assert.equal(storage.getStoragePath(), undefined); shouldFilesExist(false); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(false); assert.equal(storage.getStoragePath(), undefined); done(); }, hp.mWait); }); // persist_queue is true and storage type is file // should directly switch to the default file storage for bulk it("10- CNR_persistTrue_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.FILE, persist_queue: true, }); assert.equal(storage.getStoragePath(), "../bulk_data/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../bulk_data/"); done(); }, hp.mWait); }); // persist_queue is false and storage type is file // storage type should overrule and switch into the default bulk file storage it("11- CNR_persistFalse_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.FILE, persist_queue: true, }); assert.equal(storage.getStoragePath(), "../bulk_data/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../bulk_data/"); done(); }, hp.mWait); }); // persist_queue is true and storage type is file and custom path is given // storage type should overrule and switch into the custom path file storage it("12- CNR_cPath_persistTrue_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.FILE, storage_path: "../test/customStorageDirectory/", persist_queue: true, }); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); done(); }, hp.mWait); }); // persist_queue is false and storage type is file and custom path is given // storage type should overrule and switch into the custom path file storage it("13- CNR_cPath_persistFalse_file", (done) => { var bulk = new CountlyBulk({ app_key: appKey, url: serverUrl, storage_type: StorageTypes.FILE, storage_path: "../test/customStorageDirectory/", persist_queue: false, }); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); shouldFilesExist(true); createBulkData(bulk); setTimeout(() => { validateCreatedBulkData(bulk); shouldFilesExist(true); assert.equal(storage.getStoragePath(), "../test/customStorageDirectory/"); done(); }, hp.mWait); }); });