Skip to content

Commit 1e783ec

Browse files
committed
patch: transform rework
1 parent dd7c467 commit 1e783ec

File tree

2 files changed

+95
-1
lines changed

2 files changed

+95
-1
lines changed

src/mapper.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const mapper = ({
4444

4545
const renamed = {
4646
...decrypted,
47+
...transformed,
4748
...Object.keys(rename).reduce((a, k) => {
4849
if (transformed[k]) a[rename[k]] = transformed[k];
4950
return a;

test/unit/mapper.test.js

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,100 @@ describe('mapper.js', () => {
7171
f9: true,
7272
});
7373
});
74-
74+
it('should transform default if present in call', async () => {
75+
const mappings = mapper({
76+
defaults: { f9: true },
77+
omit: [...DEFAULT_OMIT_FIELDS, 'f1'],
78+
rename: {
79+
pk: 'id',
80+
data: 'name',
81+
f1: 'f2',
82+
x1: 'else-coverage',
83+
},
84+
transform: {
85+
f1: async (v) => v.toUpperCase(),
86+
f3: (v) => v.toUpperCase(),
87+
f9: (v) => 'else-coverage',
88+
},
89+
});
90+
const mapData = await mappings({
91+
pk: '1',
92+
sk: 'thing',
93+
data: 'thing0',
94+
f3: 'test',
95+
f1: 'v1',
96+
f9: true,
97+
});
98+
expect(mapData).to.deep.equal({
99+
id: '1',
100+
name: 'thing0',
101+
f2: 'V1',
102+
f3: 'TEST',
103+
f9: 'else-coverage',
104+
});
105+
});
106+
it('should transform if not present in defaults', async () => {
107+
const mappings = mapper({
108+
omit: [...DEFAULT_OMIT_FIELDS, 'f1'],
109+
rename: {
110+
pk: 'id',
111+
data: 'name',
112+
f1: 'f2',
113+
x1: 'else-coverage',
114+
},
115+
transform: {
116+
f1: async (v) => v.toUpperCase(),
117+
f3: (v) => v.toUpperCase(),
118+
f9: (v) => 'will-transform',
119+
},
120+
});
121+
const mapData = await mappings({
122+
pk: '1',
123+
sk: 'thing',
124+
data: 'thing0',
125+
f3: 'test',
126+
f1: 'v1',
127+
f9: true,
128+
});
129+
expect(mapData).to.deep.equal({
130+
id: '1',
131+
name: 'thing0',
132+
f2: 'V1',
133+
f3: 'TEST',
134+
f9: 'will-transform',
135+
});
136+
});
137+
it('should not transform default values', async () => {
138+
const mappings = mapper({
139+
defaults: { f9: true },
140+
omit: [...DEFAULT_OMIT_FIELDS, 'f1'],
141+
rename: {
142+
pk: 'id',
143+
data: 'name',
144+
f1: 'f2',
145+
x1: 'else-coverage',
146+
},
147+
transform: {
148+
f1: async (v) => v.toUpperCase(),
149+
f3: (v) => v.toUpperCase(),
150+
f9: (v) => 'will-transform',
151+
},
152+
});
153+
const mapData = await mappings({
154+
pk: '1',
155+
sk: 'thing',
156+
data: 'thing0',
157+
f3: 'test',
158+
f1: 'v1',
159+
});
160+
expect(mapData).to.deep.equal({
161+
id: '1',
162+
name: 'thing0',
163+
f2: 'V1',
164+
f3: 'TEST',
165+
f9: true,
166+
});
167+
});
75168
it('should map an aggregate object', async () => {
76169
const mapper1 = mapper({
77170
rename: {

0 commit comments

Comments
 (0)