From 3ef98cb5bedaa3220c71bb977f3db0814ce48804 Mon Sep 17 00:00:00 2001 From: Stefan-Gabriel Muscalu Date: Wed, 15 Jun 2016 13:34:41 +0300 Subject: [PATCH] Fix #82 - Added Record.has(key) Added: had method of Record to check if a value exists before using it Added: tests for the has method --- src/v1/record.js | 16 ++++++++++++++++ test/v1/record.test.js | 11 +++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/v1/record.js b/src/v1/record.js index 7cdd3fc60..9edb55826 100644 --- a/src/v1/record.js +++ b/src/v1/record.js @@ -100,6 +100,22 @@ class Record { return this._fields[index]; } + + /** + * Check if a value from this record, either by index or by field key, exists. + * + * @param {string|Number} key Field key, or the index of the field. + * @returns {boolean} + */ + has( key ) { + // if key is a number, we check if it is in the _fields array + if( typeof key === "number" ) { + return ( key >= 0 && key < this._fields.length ); + } + + // if it's not a number, we check _fieldLookup dictionary directly + return this._fieldLookup[key] !== undefined; + } } export {Record} diff --git a/test/v1/record.test.js b/test/v1/record.test.js index 1fcab0963..debc56328 100644 --- a/test/v1/record.test.js +++ b/test/v1/record.test.js @@ -30,6 +30,17 @@ describe('Record', function() { expect(record.get("name")).toEqual("Bob"); }); + it('should allow checking if fields exist', function() { + // Given + var record = new Record( ["name"], ["Bob"] ); + + // When & Then + expect(record.has("name")).toEqual(true); + expect(record.has("invalid key")).toEqual(false); + expect(record.has(0)).toEqual(true); + expect(record.has(1)).toEqual(false); + }); + it('should give helpful error on no such key', function() { // Given var record = new Record( ["name"], ["Bob"] );