@wix/metro-common-builders 1.0.1078

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/__tests__/merge-deep.spec.d.ts +2 -0
  2. package/dist/__tests__/merge-deep.spec.d.ts.map +1 -0
  3. package/dist/__tests__/merge-deep.spec.js +75 -0
  4. package/dist/__tests__/merge-deep.spec.js.map +1 -0
  5. package/dist/__tests__/value-generator.spec.d.ts +2 -0
  6. package/dist/__tests__/value-generator.spec.d.ts.map +1 -0
  7. package/dist/__tests__/value-generator.spec.js +571 -0
  8. package/dist/__tests__/value-generator.spec.js.map +1 -0
  9. package/dist/es/__tests__/merge-deep.spec.d.ts +2 -0
  10. package/dist/es/__tests__/merge-deep.spec.d.ts.map +1 -0
  11. package/dist/es/__tests__/merge-deep.spec.js +73 -0
  12. package/dist/es/__tests__/merge-deep.spec.js.map +1 -0
  13. package/dist/es/__tests__/value-generator.spec.d.ts +2 -0
  14. package/dist/es/__tests__/value-generator.spec.d.ts.map +1 -0
  15. package/dist/es/__tests__/value-generator.spec.js +569 -0
  16. package/dist/es/__tests__/value-generator.spec.js.map +1 -0
  17. package/dist/es/src/domain.d.ts +20 -0
  18. package/dist/es/src/domain.d.ts.map +1 -0
  19. package/dist/es/src/domain.js +6 -0
  20. package/dist/es/src/domain.js.map +1 -0
  21. package/dist/es/src/index.d.ts +6 -0
  22. package/dist/es/src/index.d.ts.map +1 -0
  23. package/dist/es/src/index.js +6 -0
  24. package/dist/es/src/index.js.map +1 -0
  25. package/dist/es/src/merge-deep.d.ts +2 -0
  26. package/dist/es/src/merge-deep.d.ts.map +1 -0
  27. package/dist/es/src/merge-deep.js +24 -0
  28. package/dist/es/src/merge-deep.js.map +1 -0
  29. package/dist/es/src/proto/client/index.d.ts +5264 -0
  30. package/dist/es/src/proto/client/index.js +2 -0
  31. package/dist/es/src/proto/index.d.ts +2632 -0
  32. package/dist/es/src/proto/index.js +36419 -0
  33. package/dist/es/src/proto/server/index.d.ts +5255 -0
  34. package/dist/es/src/proto/server/index.js +2 -0
  35. package/dist/es/src/utils.d.ts +2 -0
  36. package/dist/es/src/utils.d.ts.map +1 -0
  37. package/dist/es/src/utils.js +5 -0
  38. package/dist/es/src/utils.js.map +1 -0
  39. package/dist/es/src/value-generator/constant-values.d.ts +3 -0
  40. package/dist/es/src/value-generator/constant-values.d.ts.map +1 -0
  41. package/dist/es/src/value-generator/constant-values.js +39 -0
  42. package/dist/es/src/value-generator/constant-values.js.map +1 -0
  43. package/dist/es/src/value-generator/constants.d.ts +26 -0
  44. package/dist/es/src/value-generator/constants.d.ts.map +1 -0
  45. package/dist/es/src/value-generator/constants.js +28 -0
  46. package/dist/es/src/value-generator/constants.js.map +1 -0
  47. package/dist/es/src/value-generator/validation-extractor.d.ts +30 -0
  48. package/dist/es/src/value-generator/validation-extractor.d.ts.map +1 -0
  49. package/dist/es/src/value-generator/validation-extractor.js +42 -0
  50. package/dist/es/src/value-generator/validation-extractor.js.map +1 -0
  51. package/dist/es/src/value-generator/value-generator-utils.d.ts +12 -0
  52. package/dist/es/src/value-generator/value-generator-utils.d.ts.map +1 -0
  53. package/dist/es/src/value-generator/value-generator-utils.js +87 -0
  54. package/dist/es/src/value-generator/value-generator-utils.js.map +1 -0
  55. package/dist/es/src/value-generator/value-generator.d.ts +23 -0
  56. package/dist/es/src/value-generator/value-generator.d.ts.map +1 -0
  57. package/dist/es/src/value-generator/value-generator.js +138 -0
  58. package/dist/es/src/value-generator/value-generator.js.map +1 -0
  59. package/dist/src/domain.d.ts +20 -0
  60. package/dist/src/domain.d.ts.map +1 -0
  61. package/dist/src/domain.js +12 -0
  62. package/dist/src/domain.js.map +1 -0
  63. package/dist/src/index.d.ts +6 -0
  64. package/dist/src/index.d.ts.map +1 -0
  65. package/dist/src/index.js +12 -0
  66. package/dist/src/index.js.map +1 -0
  67. package/dist/src/merge-deep.d.ts +2 -0
  68. package/dist/src/merge-deep.d.ts.map +1 -0
  69. package/dist/src/merge-deep.js +28 -0
  70. package/dist/src/merge-deep.js.map +1 -0
  71. package/dist/src/proto/client/index.d.ts +5264 -0
  72. package/dist/src/proto/client/index.js +2 -0
  73. package/dist/src/proto/index.d.ts +2632 -0
  74. package/dist/src/proto/index.js +36419 -0
  75. package/dist/src/proto/server/index.d.ts +5255 -0
  76. package/dist/src/proto/server/index.js +2 -0
  77. package/dist/src/utils.d.ts +2 -0
  78. package/dist/src/utils.d.ts.map +1 -0
  79. package/dist/src/utils.js +9 -0
  80. package/dist/src/utils.js.map +1 -0
  81. package/dist/src/value-generator/constant-values.d.ts +3 -0
  82. package/dist/src/value-generator/constant-values.d.ts.map +1 -0
  83. package/dist/src/value-generator/constant-values.js +42 -0
  84. package/dist/src/value-generator/constant-values.js.map +1 -0
  85. package/dist/src/value-generator/constants.d.ts +26 -0
  86. package/dist/src/value-generator/constants.d.ts.map +1 -0
  87. package/dist/src/value-generator/constants.js +31 -0
  88. package/dist/src/value-generator/constants.js.map +1 -0
  89. package/dist/src/value-generator/validation-extractor.d.ts +30 -0
  90. package/dist/src/value-generator/validation-extractor.d.ts.map +1 -0
  91. package/dist/src/value-generator/validation-extractor.js +45 -0
  92. package/dist/src/value-generator/validation-extractor.js.map +1 -0
  93. package/dist/src/value-generator/value-generator-utils.d.ts +12 -0
  94. package/dist/src/value-generator/value-generator-utils.d.ts.map +1 -0
  95. package/dist/src/value-generator/value-generator-utils.js +99 -0
  96. package/dist/src/value-generator/value-generator-utils.js.map +1 -0
  97. package/dist/src/value-generator/value-generator.d.ts +23 -0
  98. package/dist/src/value-generator/value-generator.d.ts.map +1 -0
  99. package/dist/src/value-generator/value-generator.js +154 -0
  100. package/dist/src/value-generator/value-generator.js.map +1 -0
  101. package/package.json +72 -0
  102. package/readme.md +4 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=merge-deep.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-deep.spec.d.ts","sourceRoot":"","sources":["../../__tests__/merge-deep.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var src_1 = require("../src");
4
+ describe('Merge deep', function () {
5
+ it('should merge two object', function () {
6
+ var firstPerson = {
7
+ name: 'eli',
8
+ address: {
9
+ city: 'jerusalem',
10
+ building: {
11
+ apt: 10,
12
+ floor: 3,
13
+ entrance: 'a',
14
+ some: {
15
+ nested: true,
16
+ array: [1, 2],
17
+ },
18
+ },
19
+ },
20
+ age: 35,
21
+ };
22
+ var secondPerson = {
23
+ name: 'moshe',
24
+ address: {
25
+ building: {
26
+ apt: 11,
27
+ some: {
28
+ nested: false,
29
+ array: [3, 2],
30
+ },
31
+ },
32
+ },
33
+ };
34
+ var expectedPerson = {
35
+ name: 'moshe',
36
+ address: {
37
+ city: 'jerusalem',
38
+ building: {
39
+ apt: 11,
40
+ floor: 3,
41
+ entrance: 'a',
42
+ some: {
43
+ nested: false,
44
+ array: [3, 2],
45
+ },
46
+ },
47
+ },
48
+ age: 35,
49
+ };
50
+ var actualPerson = (0, src_1.mergeDeep)(firstPerson, secondPerson);
51
+ expect(actualPerson).toEqual(expectedPerson);
52
+ });
53
+ it('should merge objects with date properly', function () {
54
+ var overrideDate = new Date(12345);
55
+ var initialObject = {
56
+ some: {
57
+ date: new Date(),
58
+ type: 'a',
59
+ extraField: true,
60
+ },
61
+ };
62
+ var overrideObject = {
63
+ some: {
64
+ date: overrideDate,
65
+ type: 'a',
66
+ },
67
+ };
68
+ var mergeResult = (0, src_1.mergeDeep)(initialObject, overrideObject);
69
+ expect(mergeResult.some.date instanceof Date).toBe(true);
70
+ expect(mergeResult.some.date).toEqual(overrideDate);
71
+ expect(mergeResult.some.type).toEqual(overrideObject.some.type);
72
+ expect(mergeResult.some.extraField).toBe(true);
73
+ });
74
+ });
75
+ //# sourceMappingURL=merge-deep.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-deep.spec.js","sourceRoot":"","sources":["../../__tests__/merge-deep.spec.ts"],"names":[],"mappings":";;AAAA,8BAAmC;AAEnC,QAAQ,CAAC,YAAY,EAAE;IACrB,EAAE,CAAC,yBAAyB,EAAE;QAC5B,IAAM,WAAW,GAAG;YAClB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE;oBACR,GAAG,EAAE,EAAE;oBACP,KAAK,EAAE,CAAC;oBACR,QAAQ,EAAE,GAAG;oBACb,IAAI,EAAE;wBACJ,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBACd;iBACF;aACF;YACD,GAAG,EAAE,EAAE;SACR,CAAC;QAEF,IAAM,YAAY,GAAG;YACnB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,QAAQ,EAAE;oBACR,GAAG,EAAE,EAAE;oBACP,IAAI,EAAE;wBACJ,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBACd;iBACF;aACF;SACF,CAAC;QAEF,IAAM,cAAc,GAAG;YACrB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE;oBACR,GAAG,EAAE,EAAE;oBACP,KAAK,EAAE,CAAC;oBACR,QAAQ,EAAE,GAAG;oBACb,IAAI,EAAE;wBACJ,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBACd;iBACF;aACF;YACD,GAAG,EAAE,EAAE;SACR,CAAC;QAEF,IAAM,YAAY,GAAG,IAAA,eAAS,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE1D,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE;QAC5C,IAAM,YAAY,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAM,aAAa,GAAG;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,IAAI;aACjB;SACF,CAAC;QAEF,IAAM,cAAc,GAAG;YACrB,IAAI,EAAE;gBACJ,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,GAAG;aACV;SACF,CAAC;QAEF,IAAM,WAAW,GAAG,IAAA,eAAS,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAE7D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=value-generator.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-generator.spec.d.ts","sourceRoot":"","sources":["../../__tests__/value-generator.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,571 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var long_1 = (0, tslib_1.__importDefault)(require("long"));
5
+ var domain_1 = require("../src/domain");
6
+ var src_1 = require("../src");
7
+ var constant_values_1 = require("../src/value-generator/constant-values");
8
+ var constants_1 = require("../src/value-generator/constants");
9
+ describe('Value generator', function () {
10
+ describe('Get generator type', function () {
11
+ it('should return string', function () {
12
+ expect((0, src_1.getGeneratorTypeForField)(getSimpleField(domain_1.Type.STRING))).toEqual(constants_1.GeneratorType.STRING);
13
+ });
14
+ it('should return number', function () {
15
+ var types = [domain_1.Type.INT32, domain_1.Type.SINT32, domain_1.Type.DOUBLE];
16
+ types.forEach(function (type) {
17
+ return expect((0, src_1.getGeneratorTypeForField)(getSimpleField(type))).toEqual(constants_1.GeneratorType.NUMBER);
18
+ });
19
+ });
20
+ it('should return string (int 64 numbers represented as string number)', function () {
21
+ var types = [domain_1.Type.INT64, domain_1.Type.SINT64, domain_1.Type.FIXED64, domain_1.Type.SFIXED64];
22
+ types.forEach(function (type) {
23
+ return expect((0, src_1.getGeneratorTypeForField)(getSimpleField(type))).toEqual(constants_1.GeneratorType.STRING);
24
+ });
25
+ });
26
+ it('should return float', function () {
27
+ var types = [domain_1.Type.FLOAT, domain_1.Type.FIXED32, domain_1.Type.SFIXED32];
28
+ types.forEach(function (type) {
29
+ return expect((0, src_1.getGeneratorTypeForField)(getSimpleField(type))).toEqual(constants_1.GeneratorType.FLOAT);
30
+ });
31
+ });
32
+ it('should return repeated', function () {
33
+ var types = ['google.protobuf.ListValue', 'google.protobuf.FieldMask'];
34
+ types.forEach(function (type) {
35
+ return expect((0, src_1.getGeneratorTypeForField)(getComplexField(type))).toEqual(constants_1.GeneratorType.REPEATED);
36
+ });
37
+ });
38
+ it('should return duration', function () {
39
+ expect((0, src_1.getGeneratorTypeForField)(getComplexField('google.protobuf.Duration'))).toEqual(constants_1.GeneratorType.DURATION);
40
+ });
41
+ it('should return date', function () {
42
+ expect((0, src_1.getGeneratorTypeForField)(getComplexField('google.protobuf.Timestamp'))).toEqual(constants_1.GeneratorType.DATE);
43
+ });
44
+ it('should return bytes', function () {
45
+ var bytesProtoType = 'google.protobuf.BytesValue';
46
+ var bytesBusinessSchemaType = domain_1.Type.BYTES;
47
+ expect((0, src_1.getGeneratorTypeForField)(getSimpleField(bytesBusinessSchemaType))).toEqual(constants_1.GeneratorType.BYTES);
48
+ expect((0, src_1.getGeneratorTypeForField)(getComplexField(bytesProtoType))).toEqual(constants_1.GeneratorType.BYTES);
49
+ });
50
+ it('should return other', function () {
51
+ var types = ['google.protobuf.BoolValue', 'google.protobuf.NullValue'];
52
+ types.forEach(function (type) {
53
+ return expect((0, src_1.getGeneratorTypeForField)(getComplexField(type))).toEqual(constants_1.GeneratorType.OTHER);
54
+ });
55
+ });
56
+ it('should return any', function () {
57
+ var types = [
58
+ 'google.protobuf.Struct',
59
+ 'google.protobuf.Value',
60
+ 'wix.rich_content.v1.Struct',
61
+ 'wix.rich_content.v1.Value', // TODO - remove when rich content create V2 without copy/paste google types
62
+ ];
63
+ types.forEach(function (type) {
64
+ return expect((0, src_1.getGeneratorTypeForField)(getComplexField(type))).toEqual(constants_1.GeneratorType.ANY);
65
+ });
66
+ });
67
+ function getSimpleField(type, validations) {
68
+ if (validations === void 0) { validations = []; }
69
+ return {
70
+ name: 'field_name',
71
+ type: type,
72
+ validations: validations,
73
+ };
74
+ }
75
+ function getComplexField(type, validations) {
76
+ if (validations === void 0) { validations = []; }
77
+ return {
78
+ name: 'field_name',
79
+ type: domain_1.Type.OBJECT,
80
+ schemaName: type,
81
+ validations: validations,
82
+ };
83
+ }
84
+ });
85
+ describe('Get function name by generator type', function () {
86
+ it('should return someString', function () {
87
+ expect((0, src_1.getGeneratorFunctionNameForGeneratorType)(constants_1.GeneratorType.STRING)).toEqual(constants_1.FunctionNames.SOME_STRING);
88
+ });
89
+ it('should return someBytes', function () {
90
+ expect((0, src_1.getGeneratorFunctionNameForGeneratorType)(constants_1.GeneratorType.BYTES)).toEqual(constants_1.FunctionNames.SOME_BYTES);
91
+ });
92
+ it('should return someAny', function () {
93
+ expect((0, src_1.getGeneratorFunctionNameForGeneratorType)(constants_1.GeneratorType.ANY)).toEqual(constants_1.FunctionNames.SOME_ANY);
94
+ });
95
+ });
96
+ describe('Generation functions', function () {
97
+ var min = 2;
98
+ var max = 20;
99
+ var minNumberValidation = {
100
+ type: domain_1.ValidationType.MIN,
101
+ value: min,
102
+ };
103
+ var maxNumberValidation = {
104
+ type: domain_1.ValidationType.MAX,
105
+ value: max,
106
+ };
107
+ describe('Strings', function () {
108
+ it('should generate strings', function () {
109
+ expect((0, src_1.someString)()).toEqual(constant_values_1.CONSTANT_VALUES.STRING);
110
+ });
111
+ it('should return a constant string if it satisfies the validations', function () {
112
+ var minLengthValidation = [
113
+ { value: 10, type: domain_1.ValidationType.MIN_LENGTH },
114
+ { value: 30, type: domain_1.ValidationType.MAX_LENGTH },
115
+ ];
116
+ var value = (0, src_1.someString)({ validations: minLengthValidation });
117
+ expect(value).toEqual(constant_values_1.CONSTANT_VALUES.STRING);
118
+ expect(value.length).toEqual(constant_values_1.CONSTANT_VALUES.STRING.length);
119
+ });
120
+ it('should repeat the string until desired min length', function () {
121
+ var minLength = 30;
122
+ var minLengthValidation = [
123
+ { value: minLength, type: domain_1.ValidationType.MIN_LENGTH },
124
+ ];
125
+ var expectedValue = constant_values_1.CONSTANT_VALUES.STRING.padEnd(minLength, constant_values_1.CONSTANT_VALUES.STRING);
126
+ var value = (0, src_1.someString)({ validations: minLengthValidation });
127
+ expect(value).toEqual(expectedValue);
128
+ expect(value.length).toEqual(minLength);
129
+ });
130
+ it('should trim the string if default is larger than max length', function () {
131
+ var maxLength = 10;
132
+ var maxLengthValidation = [
133
+ { value: maxLength, type: domain_1.ValidationType.MAX_LENGTH },
134
+ ];
135
+ var expectedValue = constant_values_1.CONSTANT_VALUES.STRING.substring(0, maxLength);
136
+ var value = (0, src_1.someString)({ validations: maxLengthValidation });
137
+ expect(value).toEqual(expectedValue);
138
+ expect(value.length).toEqual(maxLength);
139
+ });
140
+ describe('Format', function () {
141
+ it('generates all formats', function () {
142
+ var allFormats = Object.keys(constant_values_1.FORMAT_VALUES);
143
+ allFormats.forEach(function (format) {
144
+ var value = (0, src_1.someString)({
145
+ validations: [{ type: domain_1.ValidationType.FORMAT, value: format }],
146
+ });
147
+ expect(value).toEqual(constant_values_1.FORMAT_VALUES[format]);
148
+ });
149
+ });
150
+ });
151
+ describe('with Decimal Value', function () {
152
+ var getDecimalValueValidation = function (value) { return ({
153
+ type: domain_1.ValidationType.DECIMAL_VALUE,
154
+ value: value,
155
+ }); };
156
+ it('should use gte (greater then equal) as value for number', function () {
157
+ var decimalValueGreaterThanEqual = { gte: 1 };
158
+ var value = (0, src_1.someString)({
159
+ validations: [
160
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
161
+ ],
162
+ });
163
+ expect(value).toEqual(decimalValueGreaterThanEqual.gte.toString());
164
+ });
165
+ it('should use incremented gt (greater than) as value for number', function () {
166
+ var decimalValueGreaterThan = { gt: 1 };
167
+ var expected = (decimalValueGreaterThan.gt + 1).toString();
168
+ var value = (0, src_1.someString)({
169
+ validations: [getDecimalValueValidation(decimalValueGreaterThan)],
170
+ });
171
+ expect(value).toEqual(expected);
172
+ });
173
+ it('should use incremented gt (greater than) as value even when lt and lte exist', function () {
174
+ var decimalValueGreaterThanLowerThan = { gt: 1, lte: 3, lt: 3 };
175
+ var expected = (decimalValueGreaterThanLowerThan.gt + 1).toString();
176
+ var value = (0, src_1.someString)({
177
+ validations: [
178
+ getDecimalValueValidation(decimalValueGreaterThanLowerThan),
179
+ ],
180
+ });
181
+ expect(value).toEqual(expected);
182
+ });
183
+ it('should use lte (lower than equal) as value', function () {
184
+ var decimalValueGreaterThanEqual = { lte: 2 };
185
+ var value = (0, src_1.someString)({
186
+ validations: [
187
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
188
+ ],
189
+ });
190
+ expect(value).toEqual(decimalValueGreaterThanEqual.lte.toString());
191
+ });
192
+ it('should use lt (lower than) decremented as value', function () {
193
+ var decimalValueGreaterThanEqual = { lt: 2 };
194
+ var expected = (decimalValueGreaterThanEqual.lt - 1).toString();
195
+ var value = (0, src_1.someString)({
196
+ validations: [
197
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
198
+ ],
199
+ });
200
+ expect(value).toEqual(expected);
201
+ });
202
+ it('should return float when maxScale is present with gte', function () {
203
+ var decimalValueGreaterThanEqual = { gte: 2, maxScale: 2 };
204
+ var value = (0, src_1.someString)({
205
+ validations: [
206
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
207
+ ],
208
+ });
209
+ expect(value).toEqual("".concat(decimalValueGreaterThanEqual.gte, ".00"));
210
+ });
211
+ it('should return float when maxScale is present with lte', function () {
212
+ var decimalValueGreaterThanEqual = { lte: 2, maxScale: 2 };
213
+ var value = (0, src_1.someString)({
214
+ validations: [
215
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
216
+ ],
217
+ });
218
+ expect(value).toEqual("".concat(decimalValueGreaterThanEqual.lte, ".00"));
219
+ });
220
+ it('should increment according to maxScale', function () {
221
+ var decimalValueGreaterThanEqual = {
222
+ gt: 0.11,
223
+ lte: 9.99,
224
+ maxScale: 2,
225
+ };
226
+ var expectedValue = (decimalValueGreaterThanEqual.gt + 0.01).toString();
227
+ var value = (0, src_1.someString)({
228
+ validations: [
229
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
230
+ ],
231
+ });
232
+ expect(value).toEqual(expectedValue);
233
+ });
234
+ it('should decrement according to maxScale', function () {
235
+ var decimalValueLowerThan = { lt: 2, maxScale: 2 };
236
+ var expected = (decimalValueLowerThan.lt - 0.01).toString();
237
+ var value = (0, src_1.someString)({
238
+ validations: [getDecimalValueValidation(decimalValueLowerThan)],
239
+ });
240
+ expect(value).toEqual(expected);
241
+ });
242
+ it('should support having only max scale', function () {
243
+ var decimalValueMaxScale = { maxScale: 2 };
244
+ var value = (0, src_1.someString)({
245
+ validations: [getDecimalValueValidation(decimalValueMaxScale)],
246
+ });
247
+ expect(value).toEqual('-1337.00');
248
+ });
249
+ it('should handle string values', function () {
250
+ var decimalValueGreaterThanEqual = {
251
+ gt: '0.11',
252
+ lte: '9.99',
253
+ maxScale: 2,
254
+ };
255
+ var expectedValue = (parseFloat(decimalValueGreaterThanEqual.gt) + 0.01).toString();
256
+ var value = (0, src_1.someString)({
257
+ validations: [
258
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
259
+ ],
260
+ });
261
+ expect(value).toEqual(expectedValue);
262
+ });
263
+ it('should return a string number when decimal value validation is present', function () {
264
+ var stringNumber = (0, src_1.someString)({
265
+ validations: [{ type: domain_1.ValidationType.DECIMAL_VALUE }],
266
+ });
267
+ expect(stringNumber).toEqual('-1337');
268
+ });
269
+ it('should return an unsigned string number when decimal value validation is present', function () {
270
+ var stringNumber = (0, src_1.someString)({
271
+ validations: [{ type: domain_1.ValidationType.DECIMAL_VALUE }],
272
+ isUnsigned: true,
273
+ });
274
+ expect(stringNumber).toEqual('1337');
275
+ });
276
+ // todo: handle {gte: "0.11" lte: "9.99" maxScale: 2}
277
+ });
278
+ });
279
+ describe('Numbers', function () {
280
+ it('should return constant number as a string', function () {
281
+ var value = (0, src_1.someNumber)();
282
+ expect(value).toEqual(constant_values_1.CONSTANT_VALUES.INT);
283
+ });
284
+ it('should use the maximum validation as number value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
285
+ var value;
286
+ return (0, tslib_1.__generator)(this, function (_a) {
287
+ value = (0, src_1.someNumber)({ validations: [maxNumberValidation] });
288
+ expect(value).toEqual(max);
289
+ return [2 /*return*/];
290
+ });
291
+ }); });
292
+ it('should use the minimum validation as number value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
293
+ var value;
294
+ return (0, tslib_1.__generator)(this, function (_a) {
295
+ value = (0, src_1.someNumber)({ validations: [minNumberValidation] });
296
+ expect(value).toEqual(min);
297
+ return [2 /*return*/];
298
+ });
299
+ }); });
300
+ it('should use the minimum validation as number value when having both min and max', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
301
+ var value;
302
+ return (0, tslib_1.__generator)(this, function (_a) {
303
+ value = (0, src_1.someNumber)({
304
+ validations: [minNumberValidation, maxNumberValidation],
305
+ });
306
+ expect(value).toEqual(min);
307
+ return [2 /*return*/];
308
+ });
309
+ }); });
310
+ // todo: move to params object with validations, defaultValue and isUnsigned
311
+ it('should use unsigned int when needed', function () {
312
+ var value = (0, src_1.someNumber)({ isUnsigned: true });
313
+ expect(value).toEqual(constant_values_1.CONSTANT_VALUES.UINT);
314
+ });
315
+ describe('with Decimal Value', function () {
316
+ var getDecimalValueValidation = function (value) { return ({
317
+ type: domain_1.ValidationType.DECIMAL_VALUE,
318
+ value: value,
319
+ }); };
320
+ it('should use gte (greater then equal) as value for number', function () {
321
+ var decimalValueGreaterThanEqual = { gte: 1 };
322
+ var value = (0, src_1.someNumber)({
323
+ validations: [
324
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
325
+ ],
326
+ });
327
+ expect(value).toEqual(decimalValueGreaterThanEqual.gte);
328
+ });
329
+ it('should use incremented gt (greater than) as value for number', function () {
330
+ var decimalValueGreaterThan = { gt: 1 };
331
+ var value = (0, src_1.someNumber)({
332
+ validations: [getDecimalValueValidation(decimalValueGreaterThan)],
333
+ });
334
+ expect(value).toEqual(decimalValueGreaterThan.gt + 1);
335
+ });
336
+ it('should use incremented gt (greater than) as value even when lt and lte exist', function () {
337
+ var decimalValueGreaterThanLowerThan = { gt: 1, lte: 3, lt: 3 };
338
+ var value = (0, src_1.someNumber)({
339
+ validations: [
340
+ getDecimalValueValidation(decimalValueGreaterThanLowerThan),
341
+ ],
342
+ });
343
+ expect(value).toEqual(decimalValueGreaterThanLowerThan.gt + 1);
344
+ });
345
+ it('should use lte (lower than equal) as value', function () {
346
+ var decimalValueGreaterThanEqual = { lte: 2 };
347
+ var value = (0, src_1.someNumber)({
348
+ validations: [
349
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
350
+ ],
351
+ });
352
+ expect(value).toEqual(decimalValueGreaterThanEqual.lte);
353
+ });
354
+ it('should use lt (lower than) decremented as value', function () {
355
+ var decimalValueGreaterThanEqual = { lt: 2 };
356
+ var value = (0, src_1.someNumber)({
357
+ validations: [
358
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
359
+ ],
360
+ });
361
+ expect(value).toEqual(decimalValueGreaterThanEqual.lt - 1);
362
+ });
363
+ it('should return float when maxScale is present with gte', function () {
364
+ var decimalValueGreaterThanEqual = { gte: 2, maxScale: 2 };
365
+ var value = (0, src_1.someNumber)({
366
+ validations: [
367
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
368
+ ],
369
+ });
370
+ expect(value).toEqual(parseFloat("".concat(decimalValueGreaterThanEqual.gte, ".00")));
371
+ });
372
+ it('should return float when maxScale is present with lte', function () {
373
+ var decimalValueGreaterThanEqual = { lte: 2, maxScale: 2 };
374
+ var value = (0, src_1.someNumber)({
375
+ validations: [
376
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
377
+ ],
378
+ });
379
+ expect(value).toEqual(parseFloat("".concat(decimalValueGreaterThanEqual.lte, ".00")));
380
+ });
381
+ it('should increment according to maxScale', function () {
382
+ var decimalValueGreaterThanEqual = {
383
+ gt: 0.11,
384
+ lte: 9.99,
385
+ maxScale: 2,
386
+ };
387
+ var expectedValue = decimalValueGreaterThanEqual.gt + 0.01;
388
+ var value = (0, src_1.someNumber)({
389
+ validations: [
390
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
391
+ ],
392
+ });
393
+ expect(value).toEqual(expectedValue);
394
+ });
395
+ it('should decrement according to maxScale', function () {
396
+ var decimalValueLowerThan = { lt: 2, maxScale: 2 };
397
+ var value = (0, src_1.someNumber)({
398
+ validations: [getDecimalValueValidation(decimalValueLowerThan)],
399
+ });
400
+ expect(value).toEqual(decimalValueLowerThan.lt - 0.01);
401
+ });
402
+ it('should support having only max scale', function () {
403
+ var decimalValueMaxScale = { maxScale: 2 };
404
+ var value = (0, src_1.someNumber)({
405
+ validations: [getDecimalValueValidation(decimalValueMaxScale)],
406
+ });
407
+ expect(value).toEqual(-1337.0);
408
+ });
409
+ it('should handle string values', function () {
410
+ var decimalValueGreaterThanEqual = {
411
+ gt: '0.11',
412
+ lte: '9.99',
413
+ maxScale: 2,
414
+ };
415
+ var expectedValue = parseFloat(decimalValueGreaterThanEqual.gt) + 0.01;
416
+ var value = (0, src_1.someNumber)({
417
+ validations: [
418
+ getDecimalValueValidation(decimalValueGreaterThanEqual),
419
+ ],
420
+ });
421
+ expect(value).toEqual(expectedValue);
422
+ });
423
+ // todo: handle {gte: "0.11" lte: "9.99" maxScale: 2}
424
+ });
425
+ });
426
+ describe('Long', function () {
427
+ var isUnsigned = true;
428
+ it('should use minimum validation number as long value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
429
+ var value;
430
+ return (0, tslib_1.__generator)(this, function (_a) {
431
+ value = (0, src_1.someLong)({ validations: [minNumberValidation] });
432
+ expect(value).toEqual(new long_1.default(min, 0));
433
+ return [2 /*return*/];
434
+ });
435
+ }); });
436
+ it('should use maximum validation number as long value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
437
+ var value;
438
+ return (0, tslib_1.__generator)(this, function (_a) {
439
+ value = (0, src_1.someLong)({ validations: [maxNumberValidation] });
440
+ expect(value).toEqual(new long_1.default(max, 0));
441
+ return [2 /*return*/];
442
+ });
443
+ }); });
444
+ it('should use default long as an unsigned long value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
445
+ var value;
446
+ return (0, tslib_1.__generator)(this, function (_a) {
447
+ value = (0, src_1.someLong)({ isUnsigned: isUnsigned });
448
+ expect(value).toEqual(new long_1.default(constant_values_1.CONSTANT_VALUES.UINT, 0, true));
449
+ return [2 /*return*/];
450
+ });
451
+ }); });
452
+ it('should use minimum validation number as an unsigned long value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
453
+ var value;
454
+ return (0, tslib_1.__generator)(this, function (_a) {
455
+ value = (0, src_1.someLong)({
456
+ validations: [minNumberValidation],
457
+ isUnsigned: isUnsigned,
458
+ });
459
+ expect(value).toEqual(new long_1.default(min, 0, true));
460
+ return [2 /*return*/];
461
+ });
462
+ }); });
463
+ it('should use maximum validation number as an unsigned long value', function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
464
+ var value;
465
+ return (0, tslib_1.__generator)(this, function (_a) {
466
+ value = (0, src_1.someLong)({
467
+ validations: [maxNumberValidation],
468
+ isUnsigned: isUnsigned,
469
+ });
470
+ expect(value).toEqual(new long_1.default(max, 0, true));
471
+ return [2 /*return*/];
472
+ });
473
+ }); });
474
+ });
475
+ describe('Float', function () {
476
+ var floatMin = 2.1;
477
+ var floatMax = 4.6;
478
+ var minFloatValidation = {
479
+ type: domain_1.ValidationType.MIN,
480
+ value: floatMin,
481
+ };
482
+ var maxFloatValidation = {
483
+ type: domain_1.ValidationType.MAX,
484
+ value: floatMax,
485
+ };
486
+ it('should return the default float', function () {
487
+ expect((0, src_1.someFloat)()).toEqual(constant_values_1.CONSTANT_VALUES.FLOAT);
488
+ });
489
+ it('should return a float according to min value', function () {
490
+ expect((0, src_1.someFloat)({ validations: [minFloatValidation] })).toEqual(floatMin);
491
+ });
492
+ it('should return a float according to max value', function () {
493
+ expect((0, src_1.someFloat)({ validations: [maxFloatValidation] })).toEqual(floatMax);
494
+ });
495
+ });
496
+ describe('Repeated', function () {
497
+ it('should handle list value', function () {
498
+ var expectedArrayValue = [
499
+ constant_values_1.CONSTANT_VALUES.EMPTY_OBJECT,
500
+ constant_values_1.CONSTANT_VALUES.STRING,
501
+ constant_values_1.CONSTANT_VALUES.INT,
502
+ ];
503
+ expect((0, src_1.someRepeated)()).toEqual(expectedArrayValue);
504
+ });
505
+ it('should generate list value with min length filled with empty objects', function () {
506
+ var value = (0, src_1.someRepeated)({
507
+ validations: [{ type: domain_1.ValidationType.MIN_SIZE, value: 6 }],
508
+ });
509
+ var expectedArrayValue = [
510
+ constant_values_1.CONSTANT_VALUES.EMPTY_OBJECT,
511
+ constant_values_1.CONSTANT_VALUES.STRING,
512
+ constant_values_1.CONSTANT_VALUES.INT,
513
+ constant_values_1.CONSTANT_VALUES.STRING,
514
+ constant_values_1.CONSTANT_VALUES.STRING,
515
+ constant_values_1.CONSTANT_VALUES.STRING,
516
+ ];
517
+ expect(value).toEqual(expectedArrayValue);
518
+ });
519
+ it('should generate list value with max size', function () {
520
+ var value = (0, src_1.someRepeated)({
521
+ validations: [{ type: domain_1.ValidationType.MAX_SIZE, value: 2 }],
522
+ });
523
+ var expectedArrayValue = [
524
+ constant_values_1.CONSTANT_VALUES.EMPTY_OBJECT,
525
+ constant_values_1.CONSTANT_VALUES.STRING,
526
+ ];
527
+ expect(value).toEqual(expectedArrayValue);
528
+ });
529
+ it('should generate list value when constant value satisfies array size validations', function () {
530
+ var value = (0, src_1.someRepeated)({
531
+ validations: [
532
+ { type: domain_1.ValidationType.MIN_SIZE, value: 1 },
533
+ { type: domain_1.ValidationType.MAX_SIZE, value: 4 },
534
+ ],
535
+ });
536
+ var expectedArrayValue = [
537
+ constant_values_1.CONSTANT_VALUES.EMPTY_OBJECT,
538
+ constant_values_1.CONSTANT_VALUES.STRING,
539
+ constant_values_1.CONSTANT_VALUES.INT,
540
+ ];
541
+ expect(value).toEqual(expectedArrayValue);
542
+ });
543
+ it('should work for field mask', function () {
544
+ var fillWithOnlyStrings = true;
545
+ var value = (0, src_1.someRepeated)({ validations: [{ type: domain_1.ValidationType.MIN_SIZE, value: 2 }] }, fillWithOnlyStrings);
546
+ var expectedArrayValue = [
547
+ constant_values_1.CONSTANT_VALUES.STRING,
548
+ constant_values_1.CONSTANT_VALUES.STRING,
549
+ ];
550
+ expect(value).toEqual(expectedArrayValue);
551
+ });
552
+ });
553
+ describe('Date and Duration', function () {
554
+ it('should return constant date', function () {
555
+ expect((0, src_1.someDate)()).toEqual(constant_values_1.CONSTANT_VALUES.DATE);
556
+ });
557
+ it('should return constant duration', function () {
558
+ var duration = (0, src_1.someDuration)();
559
+ expect(duration).toEqual(constant_values_1.CONSTANT_VALUES.DURATION);
560
+ expect(typeof duration.seconds).toEqual('string');
561
+ expect(typeof duration.nanos).toEqual('number');
562
+ });
563
+ });
564
+ describe('Any', function () {
565
+ it('should return empty object', function () {
566
+ expect((0, src_1.someAny)()).toEqual(constant_values_1.CONSTANT_VALUES.EMPTY_OBJECT);
567
+ });
568
+ });
569
+ });
570
+ });
571
+ //# sourceMappingURL=value-generator.spec.js.map