Skip to content

Commit

Permalink
adds flatten function and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanoFrontini committed Jan 24, 2024
1 parent ebf3f61 commit 8b70f7d
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 1 deletion.
19 changes: 19 additions & 0 deletions src/types/__tests__/flatten.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import * as E from "fp-ts/Either";
import { FlattenMapping } from "../flatten";

describe("FlattenMapping", () => {
it("should decode if config is a valid FlattenMapping", () => {
const validData = {
mapper: "FLATTEN"
};
const result = FlattenMapping.decode(validData);
expect(E.isRight(result)).toBeTruthy();
});
it("should not validate if config is not a valid input", () => {
const invalidData = {
mapper: "INVALID_MAPPER"
};
const result = FlattenMapping.decode(invalidData);
expect(E.isRight(result)).toBeFalsy();
});
});
20 changes: 20 additions & 0 deletions src/types/__tests__/singleInput.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,18 @@ const invalidConvertFormatMapping = {
output: "invalid output string"
};

const flattenMapping = {
type: "SINGLE_INPUT",
inputFieldName: "foo",
mapper: "FLATTEN"
};

const invalidFlattenMapping = {
type: "SINGLE_INPUT",
inputFieldName: "foo",
mapper: "INVALID"
};

describe("SingleInputMapping", () => {
it("should decode a correct numberCaseMapping type properly", () => {
const res = SingleInputMapping.decode(numberCaseMapping);
Expand Down Expand Up @@ -163,4 +175,12 @@ describe("SingleInputMapping", () => {
const res = SingleInputMapping.decode(invalidConvertFormatMapping);
expect(E.isLeft(res)).toBeTruthy();
});
it("should decode a correct flattenMapping type properly", () => {
const res = SingleInputMapping.decode(flattenMapping);
expect(E.isRight(res)).toBeTruthy();
});
it("should not decode an invalid flattenMapping type properly", () => {
const res = SingleInputMapping.decode(invalidFlattenMapping);
expect(E.isLeft(res)).toBeTruthy();
});
});
7 changes: 7 additions & 0 deletions src/types/flatten.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as t from "io-ts";

export const FlattenMapping = t.type({
mapper: t.literal("FLATTEN")
});

type FlattenMapping = t.TypeOf<typeof FlattenMapping>;
9 changes: 8 additions & 1 deletion src/types/singleInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import * as t from "io-ts";
import { BooleanMapping } from "./boolean";
import { SwitchCaseMapping } from "./case";
import { DateMapping } from "./date";
import { FlattenMapping } from "./flatten";
import { NumberMapping } from "./number";
import { RenameFieldMapping } from "./renameField";
import { StringMapping } from "./string";
Expand Down Expand Up @@ -55,13 +56,19 @@ export const SingleInputDateMapping = t.intersection([
DateMapping
]);

export const SingleInputFlattenMapping = t.intersection([
SingleInputConfig,
FlattenMapping
]);

export const SingleInputMapping = t.union([
SingleInputNumberMapping,
SingleInputStringMapping,
SingleInputBooleanMapping,
SingleInputRenameFieldMapping,
SingleInputSwitchCaseMapping,
SingleInputDateMapping
SingleInputDateMapping,
SingleInputFlattenMapping
]);

export type SingleInputMapping = t.TypeOf<typeof SingleInputMapping>;

0 comments on commit 8b70f7d

Please sign in to comment.