diff --git a/whatsapp-web.js/src/models/entity.js b/whatsapp-web.js/src/models/entity.js index 0bcce8f..38abfcc 100644 --- a/whatsapp-web.js/src/models/entity.js +++ b/whatsapp-web.js/src/models/entity.js @@ -4,12 +4,14 @@ class Entity { constructor(){ this.data = new Map(); + this.selectedData = null; this.count = 0; } addData(key ,value){ if(!this.isData(key)){ this.data.set(key, value); + this.selectedData = key; return true; } return false; @@ -26,16 +28,40 @@ class Entity { deleteData(key){ if(this.isData(key)){ this.data.delete(key); + if(this.selectedData == key){ + this.selectedData = null; + } return true; } return false; } clearData(){ + this.selectedData = null; this.data = new Map(); this.count = 0; } + /** + * Select a specific data with its key + * @param {string} key + * @returns true if a data is selected + * @returns false if data is null + */ + selectData(key){ + if(this.isData(key)) + { + this.selectedData = key; + return true; + } + return false; + } + + /** + * + * @param {string} key + * @returns the value mapped to the key + */ getData(key){ if(this.isData(key)){ return this.data.get(key); @@ -43,6 +69,9 @@ class Entity { return null; } + /** + * @returns a map of all data + */ getAllData(){ return this.data; } diff --git a/whatsapp-web.js/test/test_entity.js b/whatsapp-web.js/test/test_entity.js index 56a3e22..46ea027 100644 --- a/whatsapp-web.js/test/test_entity.js +++ b/whatsapp-web.js/test/test_entity.js @@ -29,13 +29,13 @@ describe('Entity', () => { expect(a.isData('pagol')).to.false; expect(a.isData('hello world')).to.false; }); - + it('Test: getData', () => { let a = new Entity(); a.addData('hello world', new Website('hello world')); a.addData('gada', new Website('gada')); a.addData('pagol', new Website('pagol')); - + expect(a.getData('hello world').companyName).to.equal('hello world'); expect(a.getData('gada').companyName).to.equal('gada'); expect(a.getData('chu chu')).to.null; @@ -51,18 +51,67 @@ describe('Entity', () => { a.deleteData('gada'); expect(a.getData('gada')).to.null; }) - + it('Test: getAllData', () => { let a = new Entity(); a.addData('hello world', new Website('hello world')); a.addData('gada', new Website('gada')); a.addData('pagol', new Website('pagol')); - + let websitegen = a.getAllData().values(); for(let t of websitegen) { console.log(t.companyName); } }) + + it('Test: selectData()', () => { + let a = new Entity(); + a.addData('hello world', new Website('hello world')); + a.addData('gada', new Website('gada')); + a.addData('pagol', new Website('pagol')); + + a.selectData('gada'); + + expect(a.selectedData).to.equals('gada'); + }); + + it.only('Test: selectedData() = false', () => { + let a = new Entity(); + a.addData('hello world', new Website('hello world')); + a.addData('gada', new Website('gada')); + a.addData('pagol', new Website('pagol')); + a.selectData('tara'); + expect(a.selectedData).to.equals('pagol'); + }); + + it('Test: selectedData when addData() is used', () => { + let a = new Entity(); + a.addData('hello world', new Website('hello world')); + a.addData('gada', new Website('gada')); + a.addData('pagol', new Website('pagol')); + + expect(a.selectedData).to.equals('pagol'); + }); + + it('Test : selectedData when clearData()', () => { + let a = new Entity(); + a.addData('hello world', new Website('hello world')); + a.addData('gada', new Website('gada')); + a.addData('pagol', new Website('pagol')); + + a.clearData(); + + expect(a.count).to.equal(0); + expect(a.isData("kruta")).to.false; + expect(a.isData("hello")).to.false; + expect(a.isData('pagol')).to.false; + expect(a.isData('hello world')).to.false; + expect(a.selectedData).to.null; + }); + + + + }) \ No newline at end of file