Skip to content

Commit 17c42f1

Browse files
committed
Removed transaction search criteria
Added queryParam tests
1 parent 8b8a3c2 commit 17c42f1

File tree

8 files changed

+90
-85
lines changed

8 files changed

+90
-85
lines changed

e2e/infrastructure/AccountHttp.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { expect } from 'chai';
1818
import { AccountRepository } from '../../src/infrastructure/AccountRepository';
1919
import { MultisigRepository } from '../../src/infrastructure/MultisigRepository';
2020
import { NamespaceRepository } from '../../src/infrastructure/NamespaceRepository';
21-
import { TransactionSearchCriteria } from '../../src/infrastructure/TransactionSearchCriteria';
2221
import { Account } from '../../src/model/account/Account';
2322
import { Address } from '../../src/model/account/Address';
2423
import { PublicAccount } from '../../src/model/account/PublicAccount';
@@ -36,6 +35,7 @@ import { TransactionType } from '../../src/model/transaction/TransactionType';
3635
import { TransferTransaction } from '../../src/model/transaction/TransferTransaction';
3736
import { UInt64 } from '../../src/model/UInt64';
3837
import { IntegrationTestHelper } from './IntegrationTestHelper';
38+
import { QueryParams } from '../../src/infrastructure/QueryParams';
3939

4040
describe('AccountHttp', () => {
4141
const helper = new IntegrationTestHelper();
@@ -227,7 +227,7 @@ describe('AccountHttp', () => {
227227
describe('transactions', () => {
228228
it('should call transactions successfully by type', async () => {
229229
const transactions = await accountRepository.getAccountTransactions(
230-
publicAccount.address, new TransactionSearchCriteria().setTransactionTypes([TransactionType.TRANSFER])).toPromise();
230+
publicAccount.address, new QueryParams().setType([TransactionType.TRANSFER])).toPromise();
231231
expect(transactions.length).to.be.greaterThan(0);
232232
transactions.forEach((t) => {
233233
expect(t.type).to.be.eq(TransactionType.TRANSFER);

src/infrastructure/AccountHttp.ts

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { AccountRepository } from './AccountRepository';
2929
import { Http } from './Http';
3030
import { QueryParams } from './QueryParams';
3131
import { CreateTransactionFromDTO } from './transaction/CreateTransactionFromDTO';
32-
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
3332

3433
/**
3534
* Account http repository.
@@ -118,13 +117,13 @@ export class AccountHttp extends Http implements AccountRepository {
118117
* @param queryParams - (Optional) Query params
119118
* @returns Observable<Transaction[]>
120119
*/
121-
public getAccountTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]> {
120+
public getAccountTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]> {
122121
return observableFrom(
123122
this.accountRoutesApi.getAccountConfirmedTransactions(address.plain(),
124-
this.transactionSearchCriteria(queryParams).pageSize,
125-
this.transactionSearchCriteria(queryParams).id,
126-
this.transactionSearchCriteria(queryParams).ordering,
127-
this.transactionSearchCriteria(queryParams).type)).pipe(
123+
this.queryParams(queryParams).pageSize,
124+
this.queryParams(queryParams).id,
125+
this.queryParams(queryParams).ordering,
126+
this.queryParams(queryParams).type)).pipe(
128127
map(({body}) => body.map((transactionDTO) => {
129128
return CreateTransactionFromDTO(transactionDTO);
130129
})),
@@ -139,13 +138,13 @@ export class AccountHttp extends Http implements AccountRepository {
139138
* @param queryParams - (Optional) Query params
140139
* @returns Observable<Transaction[]>
141140
*/
142-
public getAccountIncomingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
141+
public getAccountIncomingTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
143142
return observableFrom(
144143
this.accountRoutesApi.getAccountIncomingTransactions(address.plain(),
145-
this.transactionSearchCriteria(queryParams).pageSize,
146-
this.transactionSearchCriteria(queryParams).id,
147-
this.transactionSearchCriteria(queryParams).ordering),
148-
this.transactionSearchCriteria(queryParams).type).pipe(
144+
this.queryParams(queryParams).pageSize,
145+
this.queryParams(queryParams).id,
146+
this.queryParams(queryParams).ordering),
147+
this.queryParams(queryParams).type).pipe(
149148
map(({body}) => body.map((transactionDTO) => {
150149
return CreateTransactionFromDTO(transactionDTO);
151150
})),
@@ -160,13 +159,13 @@ export class AccountHttp extends Http implements AccountRepository {
160159
* @param queryParams - (Optional) Query params
161160
* @returns Observable<Transaction[]>
162161
*/
163-
public getAccountOutgoingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
162+
public getAccountOutgoingTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
164163
return observableFrom(
165164
this.accountRoutesApi.getAccountOutgoingTransactions(address.plain(),
166-
this.transactionSearchCriteria(queryParams).pageSize,
167-
this.transactionSearchCriteria(queryParams).id,
168-
this.transactionSearchCriteria(queryParams).ordering),
169-
this.transactionSearchCriteria(queryParams).type).pipe(
165+
this.queryParams(queryParams).pageSize,
166+
this.queryParams(queryParams).id,
167+
this.queryParams(queryParams).ordering),
168+
this.queryParams(queryParams).type).pipe(
170169
map(({body}) => body.map((transactionDTO) => {
171170
return CreateTransactionFromDTO(transactionDTO);
172171
})),
@@ -182,13 +181,13 @@ export class AccountHttp extends Http implements AccountRepository {
182181
* @param queryParams - (Optional) Query params
183182
* @returns Observable<Transaction[]>
184183
*/
185-
public getAccountUnconfirmedTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
184+
public getAccountUnconfirmedTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
186185
return observableFrom(
187186
this.accountRoutesApi.getAccountUnconfirmedTransactions(address.plain(),
188-
this.transactionSearchCriteria(queryParams).pageSize,
189-
this.transactionSearchCriteria(queryParams).id,
190-
this.transactionSearchCriteria(queryParams).ordering),
191-
this.transactionSearchCriteria(queryParams).type).pipe(
187+
this.queryParams(queryParams).pageSize,
188+
this.queryParams(queryParams).id,
189+
this.queryParams(queryParams).ordering),
190+
this.queryParams(queryParams).type).pipe(
192191
map(({body}) => body.map((transactionDTO) => {
193192
return CreateTransactionFromDTO(transactionDTO);
194193
})),
@@ -203,13 +202,13 @@ export class AccountHttp extends Http implements AccountRepository {
203202
* @param queryParams - (Optional) Query params
204203
* @returns Observable<AggregateTransaction[]>
205204
*/
206-
public getAccountPartialTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <AggregateTransaction[]> {
205+
public getAccountPartialTransactions(address: Address, queryParams?: QueryParams): Observable <AggregateTransaction[]> {
207206
return observableFrom(
208207
this.accountRoutesApi.getAccountPartialTransactions(address.plain(),
209-
this.transactionSearchCriteria(queryParams).pageSize,
210-
this.transactionSearchCriteria(queryParams).id,
211-
this.transactionSearchCriteria(queryParams).ordering),
212-
this.transactionSearchCriteria(queryParams).type).pipe(
208+
this.queryParams(queryParams).pageSize,
209+
this.queryParams(queryParams).id,
210+
this.queryParams(queryParams).ordering),
211+
this.queryParams(queryParams).type).pipe(
213212
map(({body}) => body.map((transactionDTO) => {
214213
return CreateTransactionFromDTO(transactionDTO) as AggregateTransaction;
215214
})),

src/infrastructure/AccountRepository.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {AccountInfo} from '../model/account/AccountInfo';
1919
import {Address} from '../model/account/Address';
2020
import {AggregateTransaction} from '../model/transaction/AggregateTransaction';
2121
import {Transaction} from '../model/transaction/Transaction';
22-
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
22+
import { QueryParams } from './QueryParams';
2323

2424
/**
2525
* Account interface repository.
@@ -48,7 +48,7 @@ export interface AccountRepository {
4848
* @param queryParams - (Optional) Query params
4949
* @returns Observable<Transaction[]>
5050
*/
51-
getAccountTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
51+
getAccountTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
5252

5353
/**
5454
* Gets an array of transactions for which an account is the recipient of a transaction.
@@ -57,7 +57,7 @@ export interface AccountRepository {
5757
* @param queryParams - (Optional) Query params
5858
* @returns Observable<Transaction[]>
5959
*/
60-
getAccountIncomingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
60+
getAccountIncomingTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
6161

6262
/**
6363
* Gets an array of transactions for which an account is the sender a transaction.
@@ -66,7 +66,7 @@ export interface AccountRepository {
6666
* @param queryParams - (Optional) Query params
6767
* @returns Observable<Transaction[]>
6868
*/
69-
getAccountOutgoingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
69+
getAccountOutgoingTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
7070

7171
/**
7272
* Gets the array of transactions for which an account is the sender or receiver and which have not yet been included in a block.
@@ -76,7 +76,7 @@ export interface AccountRepository {
7676
* @param queryParams - (Optional) Query params
7777
* @returns Observable<Transaction[]>
7878
*/
79-
getAccountUnconfirmedTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
79+
getAccountUnconfirmedTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
8080

8181
/**
8282
* Gets an array of transactions for which an account is the sender or has sign the transaction.
@@ -85,5 +85,5 @@ export interface AccountRepository {
8585
* @param queryParams - (Optional) Query params
8686
* @returns Observable<AggregateTransaction[]>
8787
*/
88-
getAccountPartialTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<AggregateTransaction[]>;
88+
getAccountPartialTransactions(address: Address, queryParams?: QueryParams): Observable<AggregateTransaction[]>;
8989
}

src/infrastructure/Http.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { from as observableFrom, Observable, of as observableOf, throwError } fr
2020
import { catchError, map, shareReplay } from 'rxjs/operators';
2121
import { NetworkType } from '../model/blockchain/NetworkType';
2222
import { QueryParams } from './QueryParams';
23-
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
2423

2524
/**
2625
* Http extended by all http services
@@ -57,12 +56,12 @@ export abstract class Http {
5756
};
5857
}
5958

60-
transactionSearchCriteria(queryParams?: TransactionSearchCriteria): any {
59+
transactionSearchCriteria(queryParams?: QueryParams): any {
6160
return {
6261
pageSize: queryParams ? queryParams.pageSize : undefined,
6362
id: queryParams ? queryParams.id : undefined,
6463
ordering: queryParams ? queryParams.order : undefined,
65-
type: queryParams ? queryParams.type : undefined,
64+
type: queryParams ? queryParams.convertCSV(queryParams.type) : undefined,
6665
};
6766
}
6867

src/infrastructure/QueryParams.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,13 @@ export class QueryParams {
4444
* ASC. Older to newer.
4545
*/
4646
public order: Order = Order.DESC;
47+
48+
/**
49+
* Transaction type list
50+
*/
51+
public type?: TransactionType[];
4752
/**
4853
* Constructor
49-
* @param pageSize
50-
* @param id
5154
*/
5255
constructor() {
5356
}
@@ -66,4 +69,21 @@ export class QueryParams {
6669
this.order = order;
6770
return this;
6871
}
72+
73+
public setType(type?: TransactionType[]): QueryParams {
74+
this.type = type;
75+
return this;
76+
}
77+
78+
/**
79+
* Return comma seperated list
80+
* @param type Transaction type list
81+
*/
82+
public convertCSV(type?: TransactionType[]): string | undefined {
83+
if (!type || type.length === 0) {
84+
return undefined;
85+
} else {
86+
return type.map((t) => t.valueOf().toString()).join(',');
87+
}
88+
}
6989
}

src/infrastructure/TransactionSearchCriteria.ts

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/infrastructure/infrastructure.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,3 @@ export * from './RepositoryFactory';
4747
export * from './RestrictionAccountRepository';
4848
export * from './RestrictionMosaicRepository';
4949
export * from './TransactionRepository';
50-
export * from './TransactionSearchCriteria';
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright 2020 NEM
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { expect } from 'chai';
18+
import { Order, QueryParams } from '../../src/infrastructure/QueryParams';
19+
import { TransactionType } from '../../src/model/transaction/TransactionType';
20+
21+
describe('QueryParams', () => {
22+
it('should return correct query param', () => {
23+
const param = new QueryParams().setId('0')
24+
.setOrder(Order.ASC)
25+
.setPageSize(10)
26+
.setType([TransactionType.TRANSFER, TransactionType.ACCOUNT_LINK]);
27+
28+
expect(param.id).to.be.equal('0');
29+
expect(param.order.valueOf()).to.be.equal(Order.ASC.valueOf());
30+
expect(param.pageSize).to.be.equal(10);
31+
expect(param.convertCSV(param.type)).to.be.equal('16724,16716');
32+
});
33+
});

0 commit comments

Comments
 (0)