From 2f2f3ff7319e77f2e924eea675d5fef4e9822cef Mon Sep 17 00:00:00 2001 From: "ryan.waskiewicz" Date: Sat, 12 Aug 2017 14:27:51 -0400 Subject: [PATCH] Add additional tests of Objects for PVGenerator Updated files in tsconifg, index.ts Added NPM-debug.log to gitingore --- .gitignore | 3 +- .../generators/ProvidedValueGenerator.spec.ts | 47 +++++++++++++++++++ .../generators/test-fixtures/SampleItem.ts | 9 ++++ src/index.ts | 1 + tsconfig.json | 6 ++- 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/factoryMate/generators/test-fixtures/SampleItem.ts diff --git a/.gitignore b/.gitignore index 169d2ef..7132af9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ coverage/ node_modules/ -dist/ \ No newline at end of file +dist/ +npm-debug.log diff --git a/src/factoryMate/generators/ProvidedValueGenerator.spec.ts b/src/factoryMate/generators/ProvidedValueGenerator.spec.ts index ca07fc2..17934c8 100644 --- a/src/factoryMate/generators/ProvidedValueGenerator.spec.ts +++ b/src/factoryMate/generators/ProvidedValueGenerator.spec.ts @@ -1,4 +1,5 @@ import { ProvidedValueGenerator } from './ProvidedValueGenerator'; +import { SampleItem } from './test-fixtures/SampleItem'; describe('ProvidedValueGenerator', () => { describe('nextValue(): string', () => { @@ -76,4 +77,50 @@ describe('ProvidedValueGenerator', () => { expect(() => providedValueGenerator.nextValue()).toThrowError('Out of bounds!'); }); }); + + describe('nextValue(): SampleItem', () => { + let providedValueGenerator: ProvidedValueGenerator; + let providedSampleItems: SampleItem[]; + + beforeEach(() => { + const providedSampleItemOne = new SampleItem(1, 'Sample Item 1'); + const providedSampleItemTwo = new SampleItem(2, 'Sample Item 2'); + const providedSampleItemThree = new SampleItem(3, 'Sample Item 3'); + providedSampleItems = [providedSampleItemOne, providedSampleItemTwo, providedSampleItemThree]; + + providedValueGenerator = new ProvidedValueGenerator(providedSampleItems); + }); + + it('returns the first value correctly', () => { + const firstValue = providedValueGenerator.nextValue(); + + expect(firstValue.id).toBe(1); + expect(firstValue.name).toBe('Sample Item 1'); + }); + + it('returns the second value correctly', () => { + providedValueGenerator.nextValue(); + const secondValue = providedValueGenerator.nextValue(); + + expect(secondValue.id).toBe(2); + expect(secondValue.name).toBe('Sample Item 2'); + }); + + it('returns the third value correctly', () => { + providedValueGenerator.nextValue(); + providedValueGenerator.nextValue(); + const thirdValue = providedValueGenerator.nextValue(); + + expect(thirdValue.id).toBe(3); + expect(thirdValue.name).toBe('Sample Item 3'); + }); + + it('throws an error when no more provided values exist', () => { + providedValueGenerator.nextValue(); + providedValueGenerator.nextValue(); + providedValueGenerator.nextValue(); + + expect(() => providedValueGenerator.nextValue()).toThrowError('Out of bounds!'); + }); + }); }); diff --git a/src/factoryMate/generators/test-fixtures/SampleItem.ts b/src/factoryMate/generators/test-fixtures/SampleItem.ts new file mode 100644 index 0000000..20ffb1e --- /dev/null +++ b/src/factoryMate/generators/test-fixtures/SampleItem.ts @@ -0,0 +1,9 @@ +export class SampleItem { + public id: number; + public name: string; + + constructor(id: number, name: string) { + this.id = id; + this.name = name; + } +} diff --git a/src/index.ts b/src/index.ts index e5e59db..2bcf06c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ export * from './factoryMate/FactoryMateAware'; export * from './factoryMate/FactoryMate'; export * from './factoryMate/generators/NumberGenerator'; +export * from './factoryMate/generators/ProvidedValueGenerator'; diff --git a/tsconfig.json b/tsconfig.json index abef5dd..2b3313a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,10 @@ "files": [ "src/index.ts", "src/factoryMate/FactoryMate.ts", - "src/factoryMate/FactoryMateAware.ts" + "src/factoryMate/FactoryMateAware.ts", + "src/factoryMate/generators/Generator.ts", + "src/factoryMate/generators/NumberGenerator.ts", + "src/factoryMate/generators/ProvidedValueGenerator.ts", + "src/factoryMate/generators/test-fixtures/SampleItem.ts" ] } \ No newline at end of file