Skip to content

Commit 4d8db13

Browse files
author
Nir Maoz
authored
Feature/update to/fromJson to return object instead of array & add sources & transformation models (#502)
1 parent c2709bf commit 4d8db13

30 files changed

+884
-607
lines changed

__TESTS_BUNDLE_SIZE__/bundleSizeTestCases.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const bundleSizeTestCases:ITestCase[] = [
5656
},
5757
{
5858
name: 'Tests Overlay imports',
59-
sizeLimitInKB: 23,
59+
sizeLimitInKB: 24,
6060
importsArray: [
6161
importFromDist('assets/CloudinaryImage', 'CloudinaryImage'),
6262
importFromDist('actions/overlay', 'Overlay'),
@@ -74,7 +74,7 @@ const bundleSizeTestCases:ITestCase[] = [
7474
},
7575
{
7676
name: 'Import all of the SDK',
77-
sizeLimitInKB: 118,
77+
sizeLimitInKB: 119,
7878
importsArray: [
7979
importFromPackage('* as CloudinaryURLGEN')
8080
]
@@ -88,7 +88,7 @@ const bundleSizeTestCases:ITestCase[] = [
8888
},
8989
{
9090
name: 'Import All Actions',
91-
sizeLimitInKB: 44,
91+
sizeLimitInKB: 45,
9292
importsArray: [
9393
importFromPackage('Actions')
9494
]

__TESTS__/unit/fromJson/adjust.fromJson.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import {fromJson} from "../../../src/internal/fromJson";
22

33
describe('adjust.fromJson', () => {
44
it('should generate a url with adjust actions from array of models', function () {
5-
const transformation = fromJson([
5+
const transformation = fromJson({actions:[
66
{ actionType: 'improve', mode: 'outdoor', blend: 30},
77
{ actionType: 'unsharpMask', strength: 50},
88
{ actionType: 'saturation', level: 40},
99
{actionType: 'contrast', level: 40},
1010
{actionType: 'brightness', level: 30},
1111
{actionType: 'gamma', level: 30}
12-
]);
12+
]});
1313

1414
expect(transformation.toString()).toStrictEqual([
1515
'e_improve:outdoor:30',

__TESTS__/unit/fromJson/concatenate.fromJson.test.ts

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,92 @@ import {fromJson} from "../../../src/internal/fromJson";
22
import {IConcatenateActionModel} from "../../../src/internal/models/IConcatenateActionModel";
33

44
describe('concatenate.fromJson', () => {
5-
it('Should generate ConcatenateAction from model', ()=>{
5+
it('Should generate ConcatenateAction from model', () => {
66
const concatenateModel: IConcatenateActionModel = {
77
actionType: 'concatenate',
88
source: {
9-
qualifierType: 'VideoSource',
109
sourceType: 'video',
1110
publicId: 'dog'
1211
},
1312
prepend: true,
1413
duration: 1
1514
};
1615

17-
const transformation = fromJson([concatenateModel]);
16+
const transformation = fromJson({actions: [concatenateModel]});
1817

1918
expect(transformation.toString()).toStrictEqual('du_1,fl_splice,l_video:dog/fl_layer_apply,so_0');
2019
});
2120

22-
it('Should generate ConcatenateAction with transition from model', ()=>{
21+
it('Should generate ConcatenateAction with transition from model', () => {
2322
const concatenateModel: IConcatenateActionModel = {
2423
actionType: 'concatenate',
2524
source: {
26-
qualifierType: 'VideoSource',
2725
sourceType: 'video',
28-
publicId: 'dog'
26+
publicId: 'dog',
27+
transformation: {
28+
actions: [
29+
{actionType: 'scale', dimensions: {width: 100, aspectRatio: 7}}
30+
]
31+
}
2932
},
3033
prepend: true,
3134
duration: 1,
3235
transition: {
33-
qualifierType: 'VideoSource',
36+
37+
sourceType: 'video',
38+
publicId: 'cat'
39+
}
40+
};
41+
42+
const transformation = fromJson({actions: [concatenateModel]});
43+
expect(transformation.toString()).toStrictEqual('du_1,l_video:dog/ar_7.0,c_scale,w_100/e_transition,l_video:cat/fl_layer_apply/fl_layer_apply,so_0');
44+
});
45+
46+
it('Should generate ConcatenateAction with ImageSource and transition from model', () => {
47+
const concatenateModel: IConcatenateActionModel = {
48+
actionType: 'concatenate',
49+
source: {
50+
sourceType: 'image',
51+
publicId: 'dog',
52+
transformation: {
53+
actions: [
54+
{actionType: 'scale', dimensions: {width: 100, aspectRatio: 7}}
55+
]
56+
}
57+
},
58+
prepend: true,
59+
duration: 1,
60+
transition: {
61+
62+
sourceType: 'video',
63+
publicId: 'cat'
64+
}
65+
};
66+
67+
const transformation = fromJson({actions: [concatenateModel]});
68+
69+
expect(transformation.toString()).toStrictEqual('du_1,l_dog/ar_7.0,c_scale,w_100/e_transition,l_video:cat/fl_layer_apply/fl_layer_apply,so_0');
70+
});
71+
72+
it('Should generate ConcatenateAction with FetchSource and transition from model', () => {
73+
const concatenateModel: IConcatenateActionModel = {
74+
actionType: 'concatenate',
75+
source: {
76+
sourceType: 'fetch',
77+
url: 'https://example.com',
78+
format: 'jpg'
79+
},
80+
prepend: true,
81+
duration: 1,
82+
transition: {
83+
3484
sourceType: 'video',
3585
publicId: 'cat'
3686
}
3787
};
3888

39-
const transformation = fromJson([concatenateModel]);
89+
const transformation = fromJson({actions: [concatenateModel]});
4090

41-
expect(transformation.toString()).toStrictEqual('du_1,l_video:dog/e_transition,l_video:cat/fl_layer_apply/fl_layer_apply,so_0');
91+
expect(transformation.toString()).toStrictEqual('du_1,l_fetch:aHR0cHM6Ly9leGFtcGxlLmNvbQ==.jpg/e_transition,l_video:cat/fl_layer_apply/fl_layer_apply,so_0');
4292
});
4393
});

__TESTS__/unit/fromJson/delivery.fromJson.test.ts

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,173 +2,173 @@ import {fromJson} from "../../../src/internal/fromJson";
22

33
describe('delivery.fromJson', () => {
44
it('should generate a transformation string from colorSpace action', function () {
5-
const transformation = fromJson([
5+
const transformation = fromJson({actions:[
66
{actionType: 'colorSpace', mode: 'srgbTrueColor'}
7-
]);
7+
]});
88

99
expect(transformation.toString()).toStrictEqual('cs_srgb:truecolor');
1010
});
1111

1212
it('should generate a transformation string from colorSpaceFromIcc action', function () {
13-
const transformation = fromJson([
13+
const transformation = fromJson({actions:[
1414
{actionType: 'colorSpaceFromICC', publicId: 'sample'}
15-
]);
15+
]});
1616

1717
expect(transformation.toString()).toStrictEqual('cs_icc:sample');
1818
});
1919

2020
it('jpg.progressive.semi()', () => {
21-
const transformation = fromJson([
21+
const transformation = fromJson({actions:[
2222
{
2323
progressive: { mode: 'semi' },
2424
actionType: 'format',
2525
formatType: 'jpg'
2626
}
27-
]);
27+
]});
2828

2929
expect(transformation.toString()).toStrictEqual('f_jpg,fl_progressive:semi');
3030
});
3131

3232
it('gif.lossy()', () => {
33-
const transformation = fromJson([
33+
const transformation = fromJson({actions:[
3434
{
3535
actionType: 'format',
3636
formatType: 'gif',
3737
lossy: true
3838
}
39-
]);
39+
]});
4040

4141
expect(transformation.toString()).toStrictEqual('f_gif,fl_lossy');
4242
});
4343

4444
it('quality:80', () => {
45-
const transformation = fromJson([
45+
const transformation = fromJson({actions:[
4646
{
4747
actionType: 'quality',
4848
level: '80'
4949
}
50-
]);
50+
]});
5151

5252
expect(transformation.toString()).toStrictEqual('q_80');
5353
});
5454

5555
it('quality:80.quantization', () => {
56-
const transformation = fromJson([
56+
const transformation = fromJson({actions:[
5757
{
5858
actionType: 'quality',
5959
level: '80',
6060
quantization: 10
6161
}
62-
]);
62+
]});
6363

6464
expect(transformation.toString()).toStrictEqual('q_80:qmax_10');
6565
});
6666

6767
it('quality:auto', () => {
68-
const transformation = fromJson([
68+
const transformation = fromJson({actions:[
6969
{
7070
actionType: 'quality',
7171
level: 'auto'
7272
}
73-
]);
73+
]});
7474

7575
expect(transformation.toString()).toStrictEqual('q_auto');
7676
});
7777

7878
it('quality:auto:best', () => {
79-
const transformation = fromJson([
79+
const transformation = fromJson({actions:[
8080
{
8181
actionType: 'quality',
8282
level: 'autoBest'
8383
}
84-
]);
84+
]});
8585

8686
expect(transformation.toString()).toStrictEqual('q_auto:best');
8787
});
8888

8989
it('quality:auto:eco', () => {
90-
const transformation = fromJson([
90+
const transformation = fromJson({actions:[
9191
{
9292
actionType: 'quality',
9393
level: 'autoEco'
9494
}
95-
]);
95+
]});
9696

9797
expect(transformation.toString()).toStrictEqual('q_auto:eco');
9898
});
9999

100100
it('quality:auto:good', () => {
101-
const transformation = fromJson([
101+
const transformation = fromJson({actions:[
102102
{
103103
actionType: 'quality',
104104
level: 'autoGood'
105105
}
106-
]);
106+
]});
107107

108108
expect(transformation.toString()).toStrictEqual('q_auto:good');
109109
});
110110

111111
it('quality:auto:low', () => {
112-
const transformation = fromJson([
112+
const transformation = fromJson({actions:[
113113
{
114114
actionType: 'quality',
115115
level: 'autoLow'
116116
}
117-
]);
117+
]});
118118

119119
expect(transformation.toString()).toStrictEqual('q_auto:low');
120120
});
121121

122122
it('quality:jpegminiHigh', () => {
123-
const transformation = fromJson([
123+
const transformation = fromJson({actions:[
124124
{
125125
actionType: 'quality',
126126
level: 'jpegminiHigh'
127127
}
128-
]);
128+
]});
129129

130130
expect(transformation.toString()).toStrictEqual('q_jpegmini:1');
131131
});
132132

133133
it('quality:jpegminiMedium', () => {
134-
const transformation = fromJson([
134+
const transformation = fromJson({actions:[
135135
{
136136
actionType: 'quality',
137137
level: 'jpegminiMedium'
138138
}
139-
]);
139+
]});
140140

141141
expect(transformation.toString()).toStrictEqual('q_jpegmini:2');
142142
});
143143

144144
it('quality:jpegminiBest', () => {
145-
const transformation = fromJson([
145+
const transformation = fromJson({actions:[
146146
{
147147
actionType: 'quality',
148148
level: 'jpegminiBest'
149149
}
150-
]);
150+
]});
151151

152152
expect(transformation.toString()).toStrictEqual('q_jpegmini:0');
153153
});
154154

155155
it('chromaSubSampling', () => {
156-
const transformation = fromJson([
156+
const transformation = fromJson({actions:[
157157
{
158158
actionType: 'quality',
159159
level: '75',
160160
chromaSubSampling: 'CHROMA_420'
161161
}
162-
]);
162+
]});
163163

164164
expect(transformation.toString()).toStrictEqual('q_75:420');
165165
});
166166

167167
it('dpr', () => {
168-
const transformation = fromJson([
168+
const transformation = fromJson({actions:[
169169
{ actionType: 'dpr', dpr: 'auto'},
170170
{ actionType: 'dpr', dpr: 2},
171-
]);
171+
]});
172172
expect(transformation.toString()).toStrictEqual('dpr_auto/dpr_2.0');
173173
});
174174
});

__TESTS__/unit/fromJson/effect.fromJson.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {fromJson} from "../../../src/internal/fromJson";
22

33
describe('effect.fromJson', () => {
44
it('should generate a url with resize actions from array of models', function () {
5-
const transformation = fromJson([
5+
const transformation = fromJson({actions:[
66
{ actionType: 'sepia' },
77
{ actionType: 'boomerang' },
88
{ actionType: 'grayscale' },
@@ -31,7 +31,7 @@ describe('effect.fromJson', () => {
3131
{ actionType: 'deshake', pixels: 16 },
3232
{ actionType: 'pixelate', squareSize: 15, region: { RegionType: 'faces' }},
3333
{ actionType: 'blur', strength: 5 }
34-
]);
34+
]});
3535

3636
expect(transformation.toString()).toStrictEqual([
3737
'e_sepia',

__TESTS__/unit/fromJson/fromJson.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import {createUnsupportedError} from "../../../src/internal/utils/unsupportedErr
33

44
describe('fromJson', () => {
55
it('should generate an error for array that includes an unsupported action', function () {
6-
const transformation = fromJson([
6+
const transformation = fromJson({actions:[
77
{actionType: 'unsupported', dimensions: {width: 100}},
88
{actionType: 'scale', dimensions: {height: 200}, relative: true}
9-
]);
9+
]});
1010

1111
expect(transformation).toStrictEqual({error: createUnsupportedError('unsupported action unsupported')});
1212
});

0 commit comments

Comments
 (0)