@fintekkers/ledger-models 0.4.15 → 0.4.17
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.
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.d.ts +6 -0
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.js +61 -1
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.d.ts +3 -0
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.js +31 -1
- package/node/fintekkers/requests/price/query_price_request_pb.d.ts +3 -0
- package/node/fintekkers/requests/price/query_price_request_pb.js +31 -1
- package/node/fintekkers/requests/price/query_price_response_pb.d.ts +3 -0
- package/node/fintekkers/requests/price/query_price_response_pb.js +31 -1
- package/node/fintekkers/requests/security/query_security_request_pb.d.ts +6 -0
- package/node/fintekkers/requests/security/query_security_request_pb.js +61 -1
- package/node/fintekkers/requests/security/query_security_response_pb.d.ts +3 -0
- package/node/fintekkers/requests/security/query_security_response_pb.js +31 -1
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.d.ts +3 -0
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.js +31 -1
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.d.ts +3 -0
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.js +31 -1
- package/node/fintekkers/requests/util/errors/error_pb.d.ts +6 -0
- package/node/fintekkers/requests/util/errors/error_pb.js +64 -2
- package/node/fintekkers/requests/util/errors/field_violation_grpc_pb.js +1 -0
- package/node/fintekkers/requests/util/errors/field_violation_pb.d.ts +37 -0
- package/node/fintekkers/requests/util/errors/field_violation_pb.js +259 -0
- package/node/wrappers/requests/query-paging.test.d.ts +1 -0
- package/node/wrappers/requests/query-paging.test.js +121 -0
- package/node/wrappers/requests/query-paging.test.js.map +1 -0
- package/node/wrappers/requests/query-paging.test.ts +163 -0
- package/package.json +1 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Wire tests for the paging fields (limit, page_token, next_page_token) on all
|
|
2
|
+
// four query messages. See docs/adr/query_paging.md.
|
|
3
|
+
import { DateRangeProto } from '../../fintekkers/models/util/date_range_pb';
|
|
4
|
+
import { QueryPortfolioRequestProto } from '../../fintekkers/requests/portfolio/query_portfolio_request_pb';
|
|
5
|
+
import { QueryPortfolioResponseProto } from '../../fintekkers/requests/portfolio/query_portfolio_response_pb';
|
|
6
|
+
import { PriceHorizonProto, QueryPriceRequestProto } from '../../fintekkers/requests/price/query_price_request_pb';
|
|
7
|
+
import { QueryPriceResponseProto } from '../../fintekkers/requests/price/query_price_response_pb';
|
|
8
|
+
import { QuerySecurityRequestProto } from '../../fintekkers/requests/security/query_security_request_pb';
|
|
9
|
+
import { QuerySecurityResponseProto } from '../../fintekkers/requests/security/query_security_response_pb';
|
|
10
|
+
import { QueryTransactionRequestProto } from '../../fintekkers/requests/transaction/query_transaction_request_pb';
|
|
11
|
+
import { QueryTransactionResponseProto } from '../../fintekkers/requests/transaction/query_transaction_response_pb';
|
|
12
|
+
|
|
13
|
+
// Serialized with the bindings on main (0a0c9657), before the paging fields
|
|
14
|
+
// existed. Command: see ledger-models-python/test/requests/test_query_paging.py.
|
|
15
|
+
const OLD_PRICE_REQUEST_HEX = '0a0c5072696365526571756573741205302e302e31c80106';
|
|
16
|
+
const OLD_TRANSACTION_REQUEST_HEX = '0a125472616e73616374696f6e526571756573741205302e302e31c00164';
|
|
17
|
+
|
|
18
|
+
interface PagedRequest {
|
|
19
|
+
setObjectClass(value: string): unknown;
|
|
20
|
+
setVersion(value: string): unknown;
|
|
21
|
+
getLimit(): number;
|
|
22
|
+
setLimit(value: number): unknown;
|
|
23
|
+
getPageToken(): string;
|
|
24
|
+
setPageToken(value: string): unknown;
|
|
25
|
+
serializeBinary(): Uint8Array;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface PagedResponse {
|
|
29
|
+
setVersion(value: string): unknown;
|
|
30
|
+
getNextPageToken(): string;
|
|
31
|
+
setNextPageToken(value: string): unknown;
|
|
32
|
+
serializeBinary(): Uint8Array;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface Entity {
|
|
36
|
+
name: string;
|
|
37
|
+
newRequest: () => PagedRequest;
|
|
38
|
+
parseRequest: (bytes: Uint8Array) => PagedRequest;
|
|
39
|
+
newResponse: () => PagedResponse;
|
|
40
|
+
parseResponse: (bytes: Uint8Array) => PagedResponse;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const ENTITIES: Entity[] = [
|
|
44
|
+
{
|
|
45
|
+
name: 'security',
|
|
46
|
+
newRequest: () => new QuerySecurityRequestProto(),
|
|
47
|
+
parseRequest: (b) => QuerySecurityRequestProto.deserializeBinary(b),
|
|
48
|
+
newResponse: () => new QuerySecurityResponseProto(),
|
|
49
|
+
parseResponse: (b) => QuerySecurityResponseProto.deserializeBinary(b),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'transaction',
|
|
53
|
+
newRequest: () => new QueryTransactionRequestProto(),
|
|
54
|
+
parseRequest: (b) => QueryTransactionRequestProto.deserializeBinary(b),
|
|
55
|
+
newResponse: () => new QueryTransactionResponseProto(),
|
|
56
|
+
parseResponse: (b) => QueryTransactionResponseProto.deserializeBinary(b),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'portfolio',
|
|
60
|
+
newRequest: () => new QueryPortfolioRequestProto(),
|
|
61
|
+
parseRequest: (b) => QueryPortfolioRequestProto.deserializeBinary(b),
|
|
62
|
+
newResponse: () => new QueryPortfolioResponseProto(),
|
|
63
|
+
parseResponse: (b) => QueryPortfolioResponseProto.deserializeBinary(b),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'price',
|
|
67
|
+
newRequest: () => new QueryPriceRequestProto(),
|
|
68
|
+
parseRequest: (b) => QueryPriceRequestProto.deserializeBinary(b),
|
|
69
|
+
newResponse: () => new QueryPriceResponseProto(),
|
|
70
|
+
parseResponse: (b) => QueryPriceResponseProto.deserializeBinary(b),
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
function fromHex(hex: string): Uint8Array {
|
|
75
|
+
return Uint8Array.from(Buffer.from(hex, 'hex'));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
describe('query paging fields', () => {
|
|
79
|
+
test.each(ENTITIES)('$name: old request reads limit 0 and empty page_token', (entity) => {
|
|
80
|
+
const old = entity.newRequest();
|
|
81
|
+
old.setObjectClass('Request');
|
|
82
|
+
old.setVersion('0.0.1');
|
|
83
|
+
|
|
84
|
+
const parsed = entity.parseRequest(old.serializeBinary());
|
|
85
|
+
|
|
86
|
+
expect(parsed.getLimit()).toBe(0);
|
|
87
|
+
expect(parsed.getPageToken()).toBe('');
|
|
88
|
+
expect(entity.parseResponse(new Uint8Array()).getNextPageToken()).toBe('');
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
test('old price request bytes decode', () => {
|
|
92
|
+
const parsed = QueryPriceRequestProto.deserializeBinary(fromHex(OLD_PRICE_REQUEST_HEX));
|
|
93
|
+
|
|
94
|
+
expect(parsed.getObjectClass()).toBe('PriceRequest');
|
|
95
|
+
expect(parsed.getTimeRangeCase()).toBe(QueryPriceRequestProto.TimeRangeCase.HORIZON);
|
|
96
|
+
expect(parsed.getHorizon()).toBe(PriceHorizonProto.PRICE_HORIZON_1_YEAR);
|
|
97
|
+
expect(parsed.getLimit()).toBe(0);
|
|
98
|
+
expect(parsed.getPageToken()).toBe('');
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test('old transaction request bytes decode', () => {
|
|
102
|
+
const parsed = QueryTransactionRequestProto.deserializeBinary(fromHex(OLD_TRANSACTION_REQUEST_HEX));
|
|
103
|
+
|
|
104
|
+
expect(parsed.getObjectClass()).toBe('TransactionRequest');
|
|
105
|
+
expect(parsed.getLimit()).toBe(100);
|
|
106
|
+
expect(parsed.getPageToken()).toBe('');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test.each(ENTITIES)('$name: paging fields round-trip', (entity) => {
|
|
110
|
+
const request = entity.newRequest();
|
|
111
|
+
request.setLimit(25);
|
|
112
|
+
request.setPageToken('opaque-abc');
|
|
113
|
+
const response = entity.newResponse();
|
|
114
|
+
response.setNextPageToken('opaque-def');
|
|
115
|
+
|
|
116
|
+
const parsedRequest = entity.parseRequest(request.serializeBinary());
|
|
117
|
+
const parsedResponse = entity.parseResponse(response.serializeBinary());
|
|
118
|
+
|
|
119
|
+
expect(parsedRequest.getLimit()).toBe(25);
|
|
120
|
+
expect(parsedRequest.getPageToken()).toBe('opaque-abc');
|
|
121
|
+
expect(parsedResponse.getNextPageToken()).toBe('opaque-def');
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test.each(ENTITIES)('$name: empty next_page_token encodes as unset', (entity) => {
|
|
125
|
+
const unset = entity.newResponse();
|
|
126
|
+
unset.setVersion('0.0.1');
|
|
127
|
+
const empty = entity.newResponse();
|
|
128
|
+
empty.setVersion('0.0.1');
|
|
129
|
+
empty.setNextPageToken('');
|
|
130
|
+
|
|
131
|
+
expect(Array.from(empty.serializeBinary())).toEqual(Array.from(unset.serializeBinary()));
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test('price page_token round-trips with horizon', () => {
|
|
135
|
+
const request = new QueryPriceRequestProto();
|
|
136
|
+
request.setHorizon(PriceHorizonProto.PRICE_HORIZON_1_YEAR);
|
|
137
|
+
request.setPageToken('opaque-abc');
|
|
138
|
+
request.setLimit(10);
|
|
139
|
+
|
|
140
|
+
const parsed = QueryPriceRequestProto.deserializeBinary(request.serializeBinary());
|
|
141
|
+
|
|
142
|
+
expect(parsed.getTimeRangeCase()).toBe(QueryPriceRequestProto.TimeRangeCase.HORIZON);
|
|
143
|
+
expect(parsed.getHorizon()).toBe(PriceHorizonProto.PRICE_HORIZON_1_YEAR);
|
|
144
|
+
expect(parsed.getPageToken()).toBe('opaque-abc');
|
|
145
|
+
expect(parsed.getLimit()).toBe(10);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
test('price page_token round-trips with date_range', () => {
|
|
149
|
+
const dateRange = new DateRangeProto();
|
|
150
|
+
dateRange.setVersion('0.0.1');
|
|
151
|
+
const request = new QueryPriceRequestProto();
|
|
152
|
+
request.setDateRange(dateRange);
|
|
153
|
+
request.setPageToken('opaque-abc');
|
|
154
|
+
request.setLimit(10);
|
|
155
|
+
|
|
156
|
+
const parsed = QueryPriceRequestProto.deserializeBinary(request.serializeBinary());
|
|
157
|
+
|
|
158
|
+
expect(parsed.getTimeRangeCase()).toBe(QueryPriceRequestProto.TimeRangeCase.DATE_RANGE);
|
|
159
|
+
expect(parsed.getDateRange()?.getVersion()).toBe('0.0.1');
|
|
160
|
+
expect(parsed.getPageToken()).toBe('opaque-abc');
|
|
161
|
+
expect(parsed.getLimit()).toBe(10);
|
|
162
|
+
});
|
|
163
|
+
});
|