From d915f31bcb9fffc09ffc84c32bad1ffe19bf8a58 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Wed, 5 Dec 2018 13:24:42 -0800 Subject: [PATCH] Add tests for createTypeAnnotationBasedOnTypeof --- .../createTypeAnnotationBasedOnTypeof.js.snap | 58 +++++++++++++++++++ .../flow/createTypeAnnotationBasedOnTypeof.js | 31 ++++++++++ 2 files changed, 89 insertions(+) create mode 100644 packages/babel-types/test/builders/flow/__snapshots__/createTypeAnnotationBasedOnTypeof.js.snap create mode 100644 packages/babel-types/test/builders/flow/createTypeAnnotationBasedOnTypeof.js diff --git a/packages/babel-types/test/builders/flow/__snapshots__/createTypeAnnotationBasedOnTypeof.js.snap b/packages/babel-types/test/builders/flow/__snapshots__/createTypeAnnotationBasedOnTypeof.js.snap new file mode 100644 index 0000000000..ee98fe3b5e --- /dev/null +++ b/packages/babel-types/test/builders/flow/__snapshots__/createTypeAnnotationBasedOnTypeof.js.snap @@ -0,0 +1,58 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`builders flow createTypeAnnotationBasedOnTypeof function 1`] = ` +Object { + "id": Object { + "name": "Function", + "type": "Identifier", + }, + "type": "GenericTypeAnnotation", + "typeParameters": null, +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof number 1`] = ` +Object { + "type": "NumberTypeAnnotation", +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof object 1`] = ` +Object { + "id": Object { + "name": "Object", + "type": "Identifier", + }, + "type": "GenericTypeAnnotation", + "typeParameters": null, +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof string 1`] = ` +Object { + "type": "StringTypeAnnotation", +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof symbol 1`] = ` +Object { + "id": Object { + "name": "Symbol", + "type": "Identifier", + }, + "type": "GenericTypeAnnotation", + "typeParameters": null, +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof true 1`] = ` +Object { + "type": "BooleanTypeAnnotation", +} +`; + +exports[`builders flow createTypeAnnotationBasedOnTypeof undefined 1`] = ` +Object { + "type": "VoidTypeAnnotation", +} +`; diff --git a/packages/babel-types/test/builders/flow/createTypeAnnotationBasedOnTypeof.js b/packages/babel-types/test/builders/flow/createTypeAnnotationBasedOnTypeof.js new file mode 100644 index 0000000000..3604433a0f --- /dev/null +++ b/packages/babel-types/test/builders/flow/createTypeAnnotationBasedOnTypeof.js @@ -0,0 +1,31 @@ +import { createTypeAnnotationBasedOnTypeof } from "@babel/types"; + +describe("builders", function() { + describe("flow", function() { + describe("createTypeAnnotationBasedOnTypeof", function() { + const values = { + string: typeof "string", + number: typeof 123, + true: typeof true, + object: typeof {}, + undefined: typeof undefined, + function: typeof function() {}, + symbol: typeof Symbol(), + }; + + for (const name in values) { + const value = values[name]; + it(name, function() { + const result = createTypeAnnotationBasedOnTypeof(value); + expect(result).toMatchSnapshot(); + }); + } + + it("invalid", function() { + expect(() => + createTypeAnnotationBasedOnTypeof("thisdoesnotexist"), + ).toThrow(Error); + }); + }); + }); +});