From d84b5ed315c718a3c9d968c7013b26c4495ca2e1 Mon Sep 17 00:00:00 2001 From: Moritz Wolf Date: Thu, 31 May 2018 15:31:14 +0200 Subject: [PATCH] moved makeStruct added Test --- src/makeStruct.js | 10 ++++++++++ src/makeStruct.test.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/makeStruct.js create mode 100644 src/makeStruct.test.js diff --git a/src/makeStruct.js b/src/makeStruct.js new file mode 100644 index 0000000..b184ae0 --- /dev/null +++ b/src/makeStruct.js @@ -0,0 +1,10 @@ +export const makeStruct = (names) => { + var names = names.split(' '); + var count = names.length; + function constructor() { + for (var i = 0; i < count; i++) { + this[names[i]] = arguments[i]; + } + } + return constructor; +} diff --git a/src/makeStruct.test.js b/src/makeStruct.test.js new file mode 100644 index 0000000..69f9432 --- /dev/null +++ b/src/makeStruct.test.js @@ -0,0 +1,31 @@ +import { makeStruct } from './makeStruct'; + +describe( 'makeStruct', () => { + + it( 'should be function', () => { + expect( typeof makeStruct ).toBe( 'function' ); + } ); + + it( 'should return a constructor', () => { + let mockedInput = "key1 key2 key3"; + + let result = makeStruct( mockedInput ); + expect( typeof result ).toBe( 'function' ); + + } ); + + it( 'should create all keys', () => { + let mockedInput = "key1 key2 key3"; + let mockedData1 = 1; + let mockedData2 = "lala"; + let mockedData3 = ["a","a"]; + + let Item = makeStruct( mockedInput ); + let result = new Item(mockedData1, mockedData2, mockedData3) + expect( result.key1 ).toBe( mockedData1 ); + expect( result.key2 ).toBe( mockedData2 ); + expect( result.key3 ).toBe( mockedData3 ); + } ); + + +} );