Skip to content

Commit

Permalink
Merge pull request #728 from magieno/2024-11-replace-class-name-with-…
Browse files Browse the repository at this point in the history
…string

2024 11 replace class name with string
  • Loading branch information
etiennenoel authored Nov 18, 2024
2 parents 8572467 + 879ef74 commit b093921
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import "reflect-metadata"
import {AutoDataMappingBuilder} from "./auto-data-mapping.builder";
import {classMetadata, property} from "@pristine-ts/metadata";
import {DataMapper} from "../mappers/data.mapper";
import {StringNormalizer} from "../normalizers/string.normalizer";
import {NumberNormalizer} from "../normalizers/number.normalizer";
import {DateNormalizer} from "../normalizers/date.normalizer";
import {StringNormalizer, StringNormalizerUniqueKey} from "../normalizers/string.normalizer";
import {NumberNormalizer, NumberNormalizerUniqueKey} from "../normalizers/number.normalizer";
import {DateNormalizer, DateNormalizerUniqueKey} from "../normalizers/date.normalizer";
import {type} from "../decorators/type.decorator";
import {DataMappingNode} from "../nodes/data-mapping.node";
import {DataMappingLeaf} from "../nodes/data-mapping.leaf";
Expand Down Expand Up @@ -112,7 +112,7 @@ describe("Auto DataMappingBuilder", () => {
const titleLeaf = dataMappingBuilder.nodes["title"] as DataMappingLeaf;
expect(titleLeaf).toBeInstanceOf(DataMappingLeaf);
expect(titleLeaf.normalizers).toHaveLength(1)
expect(titleLeaf.normalizers[0].key).toBe(StringNormalizer.name)
expect(titleLeaf.normalizers[0].key).toBe(StringNormalizerUniqueKey)

const nestedNode = dataMappingBuilder.nodes["nested"] as DataMappingNode;
expect(nestedNode).toBeInstanceOf(DataMappingNode);
Expand All @@ -135,12 +135,12 @@ describe("Auto DataMappingBuilder", () => {
const nameLeaf = headNode.nodes["name"] as DataMappingLeaf;
expect(nameLeaf).toBeInstanceOf(DataMappingLeaf);
expect(nameLeaf.normalizers).toHaveLength(1)
expect(nameLeaf.normalizers[0].key).toBe(StringNormalizer.name)
expect(nameLeaf.normalizers[0].key).toBe(StringNormalizerUniqueKey)

const dateLeaf = dataMappingBuilder.nodes["date"] as DataMappingLeaf;
expect(dateLeaf).toBeInstanceOf(DataMappingLeaf);
expect(dateLeaf.normalizers).toHaveLength(1)
expect(dateLeaf.normalizers[0].key).toBe(DateNormalizer.name);
expect(dateLeaf.normalizers[0].key).toBe(DateNormalizerUniqueKey);

const arrayNode = dataMappingBuilder.nodes["array"] as DataMappingNode;
expect(arrayNode).toBeInstanceOf(DataMappingNode);
Expand All @@ -149,12 +149,12 @@ describe("Auto DataMappingBuilder", () => {
const rankLeaf = arrayNode.nodes["rank"] as DataMappingLeaf;
expect(rankLeaf).toBeInstanceOf(DataMappingLeaf);
expect(rankLeaf.normalizers).toHaveLength(1)
expect(rankLeaf.normalizers[0].key).toBe(NumberNormalizer.name);
expect(rankLeaf.normalizers[0].key).toBe(NumberNormalizerUniqueKey);

const childrenLeaf = dataMappingBuilder.nodes["children"] as DataMappingLeaf;
expect(childrenLeaf).toBeInstanceOf(DataMappingLeaf);
expect(childrenLeaf.type).toBe(DataMappingNodeTypeEnum.ScalarArray);
expect(childrenLeaf.normalizers).toHaveLength(1)
expect(childrenLeaf.normalizers[0].key).toBe(StringNormalizer.name);
expect(childrenLeaf.normalizers[0].key).toBe(StringNormalizerUniqueKey);
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import {DataMappingBuilder} from "./data-mapping.builder";
import {DataMappingNode} from "../nodes/data-mapping.node";
import {ClassMetadata, PropertyInformationEnum, PropertyMetadata, TypeEnum, TypeUtils} from "@pristine-ts/metadata";
import {DataMappingLeaf} from "../nodes/data-mapping.leaf";
import {NumberNormalizer} from "../normalizers/number.normalizer";
import {StringNormalizer} from "../normalizers/string.normalizer";
import {DateNormalizer} from "../normalizers/date.normalizer";
import {NumberNormalizer, NumberNormalizerUniqueKey} from "../normalizers/number.normalizer";
import {StringNormalizer, StringNormalizerUniqueKey} from "../normalizers/string.normalizer";
import {DateNormalizer, DateNormalizerUniqueKey} from "../normalizers/date.normalizer";
import {DataMappingNodeTypeEnum} from "../enums/data-mapping-node-type.enum";
import {AutoDataMappingBuilderOptions} from "../options/auto-data-mapping-builder.options";
import {MetadataEnum} from "../enums/metadata.enum";
Expand Down Expand Up @@ -102,15 +102,15 @@ export class AutoDataMappingBuilder {
// todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
switch (nestedElementType) {
case TypeEnum.Number:
normalizers.push(NumberNormalizer.name);
normalizers.push(NumberNormalizerUniqueKey);
break;

case TypeEnum.String:
normalizers.push(StringNormalizer.name);
normalizers.push(StringNormalizerUniqueKey);
break;

case TypeEnum.Date:
normalizers.push(DateNormalizer.name);
normalizers.push(DateNormalizerUniqueKey);
break;
}
normalizers.forEach(normalizer => dataMappingLeaf.addNormalizer(normalizer));
Expand Down Expand Up @@ -142,15 +142,15 @@ export class AutoDataMappingBuilder {
// todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
switch (propertyInformation.typeEnum) {
case TypeEnum.Number:
normalizers.push(NumberNormalizer.name);
normalizers.push(NumberNormalizerUniqueKey);
break;

case TypeEnum.String:
normalizers.push(StringNormalizer.name);
normalizers.push(StringNormalizerUniqueKey);
break;

case TypeEnum.Date:
normalizers.push(DateNormalizer.name);
normalizers.push(DateNormalizerUniqueKey);
break;
}

Expand Down
18 changes: 9 additions & 9 deletions packages/data-mapping-common/src/mappers/data.mapper.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {LowercaseNormalizer} from "../normalizers/lowercase.normalizer";
import {LowercaseNormalizer, LowercaseNormalizerUniqueKey} from "../normalizers/lowercase.normalizer";
import {DataMappingInterceptorInterface} from "../interfaces/data-mapping-interceptor.interface";
import {DataMappingInterceptorUniqueKeyType} from "../types/data-mapping-interceptor-unique-key.type";
import {DataMappingInterceptorNotFoundError} from "../errors/data-mapping-interceptor-not-found.error";
Expand Down Expand Up @@ -59,11 +59,11 @@ describe("Data Mapper", () =>{
let dataMappingBuilder = new DataMappingBuilder();

dataMappingBuilder
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.add()
.setSourceProperty("title")
.setDestinationProperty("name")
.excludeNormalizer(LowercaseNormalizer.name)
.excludeNormalizer(LowercaseNormalizerUniqueKey)
.end()
.addNestingLevel()
.setSourceProperty("nested")
Expand Down Expand Up @@ -169,7 +169,7 @@ describe("Data Mapper", () =>{
.end()
.add()
.setSourceProperty("province")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.setDestinationProperty("province")
.end()
.add()
Expand Down Expand Up @@ -202,7 +202,7 @@ describe("Data Mapper", () =>{
.end()
.add()
.setSourceProperty("1")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.setDestinationProperty("province")
.end()
.add()
Expand Down Expand Up @@ -273,7 +273,7 @@ describe("Data Mapper", () =>{
.end()
.add()
.setSourceProperty("1")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.setDestinationProperty("province")
.end()
.add()
Expand Down Expand Up @@ -356,7 +356,7 @@ describe("Data Mapper", () =>{
.add()
.setSourceProperty("title")
.setDestinationProperty("name")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.end()

const destination = await dataMapper.map(dataMappingBuilder, source, Destination);
Expand Down Expand Up @@ -385,7 +385,7 @@ describe("Data Mapper", () =>{
.add()
.setSourceProperty("title")
.setDestinationProperty("name")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.end()

const destination = await dataMapper.map(dataMappingBuilder, source, Destination);
Expand Down Expand Up @@ -559,7 +559,7 @@ describe("Data Mapper", () =>{

const dataMapper = new DataMapper(new AutoDataMappingBuilder(), [new LowercaseNormalizer(), new DateNormalizer(), new StringNormalizer(), new NumberNormalizer()], []);

const mapped = await dataMapper.autoMap(source, Source)
const mapped = await dataMapper.autoMap(source, Source, new AutoDataMappingBuilderOptions({throwOnErrors: true}))

expect(mapped).toBeInstanceOf(Source);
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ import {DateNormalizerOptions} from "../normalizer-options/date-normalizer.optio
import {TypeEnum, TypeUtils} from "@pristine-ts/metadata";
import {BaseNormalizer} from "./base.normalizer";

export const DateNormalizerUniqueKey = "PRISTINE_DATE_NORMALIZER";

export class DateNormalizer extends BaseNormalizer<DateNormalizerOptions> implements DataNormalizerInterface<Date | undefined, DateNormalizerOptions> {
getUniqueKey(): string {
return "PRISTINE_DATE_NORMALIZER";
return DateNormalizerUniqueKey;
}

normalize(source: any, options?: DateNormalizerOptions): Date | undefined {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import {NormalizerInvalidSourceTypeError} from "../errors/normalizer-invalid-sou
import {LowercaseNormalizerOptions} from "../normalizer-options/lowercase-normalizer.options";
import {BaseNormalizer} from "./base.normalizer";

export const LowercaseNormalizerUniqueKey = "PRISTINE_LOWERCASE_NORMALIZER";

export class LowercaseNormalizer extends BaseNormalizer<LowercaseNormalizerOptions> implements DataNormalizerInterface<string, LowercaseNormalizerOptions>{
getUniqueKey(): DataNormalizerUniqueKey {
return "PRISTINE_LOWERCASE_NORMALIZER";
return LowercaseNormalizerUniqueKey;
}

normalize(source: any, options?: LowercaseNormalizerOptions): string {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ import {NumberNormalizerOptions} from "../normalizer-options/number-normalizer.o
import {TypeEnum, TypeUtils} from "@pristine-ts/metadata";
import {BaseNormalizer} from "./base.normalizer";

export const NumberNormalizerUniqueKey = "PRISTINE_NUMBER_NORMALIZER";

export class NumberNormalizer extends BaseNormalizer<NumberNormalizerOptions> implements DataNormalizerInterface<number | undefined, NumberNormalizerOptions> {
getUniqueKey(): string {
return "PRISTINE_NUMBER_NORMALIZER";
return NumberNormalizerUniqueKey;
}

normalize(source: any, options?: NumberNormalizerOptions): number | undefined {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import {StringNormalizerOptions} from "../normalizer-options/string-normalizer.o
import {format} from "date-fns";
import {BaseNormalizer} from "./base.normalizer";

export const StringNormalizerUniqueKey = "PRISTINE_STRING_NORMALIZER";

export class StringNormalizer extends BaseNormalizer<StringNormalizerOptions> implements DataNormalizerInterface<string | undefined, StringNormalizerOptions> {
getUniqueKey(): string {
return "PRISTINE_STRING_NORMALIZER";
return StringNormalizerUniqueKey;
}

normalize(source: any, options?: StringNormalizerOptions): string | undefined {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {classMetadata, property} from "@pristine-ts/metadata";
import {
AutoDataMappingBuilder, DataMapper,
DataMappingBuilder, DateNormalizer,
LowercaseNormalizer, NumberNormalizer,
LowercaseNormalizer, LowercaseNormalizerUniqueKey, NumberNormalizer,
StringNormalizer
} from "@pristine-ts/data-mapping";
import {Route} from "../models/route";
Expand Down Expand Up @@ -120,7 +120,7 @@ describe("Body Mapping Request Interceptor", () => {
.add()
.setSourceProperty("title")
.setDestinationProperty("name")
.addNormalizer(LowercaseNormalizer.name)
.addNormalizer(LowercaseNormalizerUniqueKey)
.end()
.add()
.setSourceProperty("rank")
Expand Down

0 comments on commit b093921

Please sign in to comment.