Skip to content

Commit

Permalink
if not found should return 404 code
Browse files Browse the repository at this point in the history
  • Loading branch information
kozhevnikov-peter committed Mar 18, 2019
1 parent 68cc61c commit f4842d7
Show file tree
Hide file tree
Showing 13 changed files with 59 additions and 74 deletions.
13 changes: 8 additions & 5 deletions src/endpoints/_common/one.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,14 @@ const createGetMiddleware = (url, service) => {
value: x,
});

if (x) {
ctx.state.returnValue = x;
} else {
ctx.status = 404;
}
x.matchWith({
Just: ({ value }) => {
ctx.state.returnValue = value;
},
Nothing: () => {
ctx.status = 404;
},
});
});
};

Expand Down
12 changes: 6 additions & 6 deletions src/services/_common/createResolver/__test__/get.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { of as taskOf } from 'folktale/concurrency/task';
import { of as maybeOf, Maybe } from 'folktale/maybe';
import { of as maybeOf } from 'folktale/maybe';
import { Ok, Error as error, Result } from 'folktale/result';
import { identity } from 'ramda';
import {
Expand Down Expand Up @@ -27,20 +27,20 @@ afterEach(() => jest.clearAllMocks());
describe('Resolver', () => {
const commonConfig = {
transformInput: identity,
transformResult: (m: Maybe<string>) => m.getOrElse(null),
transformResult: identity,
dbQuery: (driver: PgDriver) => (id: string) =>
driver.one<string>(id).map(maybeOf),
};

const mockPgDriver: PgDriver = {
one: (s: string) => taskOf<DbError, string | null>(s),
one: (s: string) => taskOf<DbError, string>(s),
} as PgDriver;

const createMockResolver = (
validateInput: (s: string) => Result<ValidationError, string>,
validateResult: (s: string) => Result<ResolverError, string>
) =>
get<string, string, string, string | null>({
get<string, string, string, string>({
...commonConfig,
validateInput,
validateResult,
Expand All @@ -53,7 +53,7 @@ describe('Resolver', () => {
.run()
.listen({
onResolved: data => {
expect(data).toEqual(assetId);
expect(data.getOrElse(null)).toEqual(assetId);
done();
},
});
Expand Down Expand Up @@ -114,7 +114,7 @@ describe('Resolver', () => {
],
[
'TRANSFORM_RESULT_OK',
'G8VbM7B6Zu8cYMwpfRsaoKvuLVsy8p1kYP4VvSdwxWfH',
maybeOf('G8VbM7B6Zu8cYMwpfRsaoKvuLVsy8p1kYP4VvSdwxWfH'),
],
]);

Expand Down
2 changes: 1 addition & 1 deletion src/services/_common/createResolver/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const getResolver = <
RequestRaw,
RequestTransformed,
Maybe<ResponseRaw>,
ResponseTransformed
Maybe<ResponseTransformed>
>(
dependencies.validateInput,
dependencies.transformInput,
Expand Down
5 changes: 4 additions & 1 deletion src/services/_common/createResolver/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ export type GetResolverDependencies<
dbQuery: (
db: PgDriver
) => (r: ReqTransformed) => Task<DbError, Maybe<ResRaw>>;
transformResult: (result: Maybe<ResRaw>, request: ReqRaw) => ResTransformed;
transformResult: (
result: Maybe<ResRaw>,
request: ReqRaw
) => Maybe<ResTransformed>;
};

export type MgetResolverDependencies<
Expand Down
7 changes: 2 additions & 5 deletions src/services/aliases/data/__test__/aliases.test.int.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ describe('Aliases', () => {
.run()
.listen({
onResolved: maybeX => {
expect(maybeX).toMatchSnapshot();
expect(maybeX.getOrElse(null)).toMatchSnapshot();
done();
},
});
Expand All @@ -30,10 +30,7 @@ describe('Aliases', () => {
.run()
.listen({
onResolved: maybeX => {
expect(maybeX).toEqual({
__type: 'alias',
data: null,
});
expect(maybeX.getOrElse(null)).toEqual(null);
done();
},
});
Expand Down
7 changes: 2 additions & 5 deletions src/services/assets/__test__/assets.test.int.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ describe('Assets service', () => {
.run()
.promise()
.then(x => {
expect(x).toMatchSnapshot();
expect(x.getOrElse(null)).toMatchSnapshot();
done();
})
.catch(e => done(JSON.stringify(e)));
Expand All @@ -36,10 +36,7 @@ describe('Assets service', () => {
.run()
.promise();

expect(tx).toMatchObject({
__type: 'asset',
data: null,
});
expect(tx.getOrElse(null)).toEqual(null);
});
});

Expand Down
15 changes: 6 additions & 9 deletions src/services/pairs/__test__/pairs.test.int.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ describe('Pairs', () => {

describe('get one pair', () => {
it('should return Pair for one correctly', async () => {
const result = await service
const result = (await service
.get({
amountAsset: pair.amount_asset_id,
priceAsset: pair.price_asset_id,
})
.run()
.promise();
.promise()).getOrElse(null);

expect(result.data).toHaveProperty('firstPrice', pair.first_price);
expect(result.data).toHaveProperty('lastPrice', pair.last_price);
Expand All @@ -57,13 +57,10 @@ describe('Pairs', () => {
})
.run()
.listen({
onResolved: pair => {
expect(pair).toEqual({
__type: 'pair',
data: null,
});
done();
},
onResolved: pair =>
pair.matchWith({
Nothing: () => done(),
}),
});
});
});
Expand Down
20 changes: 12 additions & 8 deletions src/services/presets/pg/getById/__test__/validation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@ import { PgDriver } from '../../../../../db/driver';
import { Serializable } from '../../../../../types';

const createService = (resultSchema: SchemaLike) =>
getByIdPreset<string, string, Serializable<'test', string | undefined>>({
getByIdPreset<string, string, Serializable<'test', string>>({
name: 'some_name',
sql: identity,
inputSchema: input,
resultSchema,
transformResult: identity,
resultTypeFactory: (
s?: string
): Serializable<'test', string | undefined> => ({
resultTypeFactory: (s: string): Serializable<'test', string> => ({
data: s,
__type: 'test',
}),
Expand All @@ -36,10 +34,16 @@ describe('getById', () => {
service('someidgoeshere2942415')
.run()
.listen({
onResolved: x => {
expect(x.__type).toBe('test');
done();
},
onResolved: x =>
x.matchWith({
Just: ({ value }) => {
expect(value.__type).toBe('test');
done();
},
Nothing: () => {
throw `Can't get response from Maybe`;
},
}),
}));
});

Expand Down
2 changes: 1 addition & 1 deletion src/services/presets/pg/getById/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const getByIdPreset = <
inputSchema: SchemaLike;
resultSchema: SchemaLike;
resultTypeFactory: (
t?: FromSerializable<ResponseTransformed>
t: FromSerializable<ResponseTransformed>
) => ResponseTransformed;
transformResult: (
response: ResponseRaw,
Expand Down
14 changes: 6 additions & 8 deletions src/services/presets/pg/getById/transformResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,14 @@ export const transformResults = <
ResponseRaw,
ResponseTransformed extends Serializable<string, any>
>(
typeFactory: (
d?: FromSerializable<ResponseTransformed>
) => ResponseTransformed
typeFactory: (d: FromSerializable<ResponseTransformed>) => ResponseTransformed
) => (
transformDbResponse: (
results: ResponseRaw,
request?: Id
) => FromSerializable<ResponseTransformed>
) => (maybeResponse: Maybe<ResponseRaw>, request?: Id): ResponseTransformed =>
maybeResponse.map(transformDbResponse).matchWith({
Just: ({ value }) => typeFactory(value),
Nothing: () => typeFactory(),
});
) => (
maybeResponse: Maybe<ResponseRaw>,
request?: Id
): Maybe<ResponseTransformed> =>
maybeResponse.map(transformDbResponse).map(typeFactory);
7 changes: 2 additions & 5 deletions src/services/transactions/__test__/integration/presets.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const get = (service, txId) =>
.run()
.promise()
.then(x => {
expect(x).toMatchSnapshot();
expect(x.getOrElse(null)).toMatchSnapshot();
done();
})
.catch(e => done(JSON.stringify(e)));
Expand All @@ -27,10 +27,7 @@ const get = (service, txId) =>
.get('UNREAL')
.run()
.promise();
expect(tx).toMatchObject({
__type: 'transaction',
data: null,
});
expect(tx.getOrElse(null)).toEqual(null);
},
TIMEOUT
);
Expand Down
27 changes: 8 additions & 19 deletions src/services/transactions/all/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const Task = require('folktale/concurrency/task');
const Maybe = require('folktale/maybe');
const {
pipe,
map,
Expand All @@ -13,11 +14,9 @@ const {
indexBy,
identity,
evolve,
compose,
} = require('ramda');

const commonData = require('./commonData');
const { transaction } = require('../../../types');

const createServices = {
1: require('../genesis'),
Expand Down Expand Up @@ -87,25 +86,15 @@ module.exports = deps => {
commonTxData
.get(id) //Task tx
.chain(
ifElse(
compose(
isNil,
getData
),
Task.of,
pipe(
getData,
t => {
if (t) {
return txsServices[t.type].get(t.id);
} else {
return Task.of(transaction());
}
}
)
pipe(
map(getData),
m =>
m.matchWith({
Just: ({ value }) => txsServices[value.type].get(value.id),
Nothing: () => Task.of(Maybe.Nothing()),
})
)
),

mget: ids =>
commonTxData
.mget(ids) // Task tx[]. tx can have data: null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ describe('Genesis transaction service', () => {
expect(tx.data).toHaveLength(6);
}, 10000);

describe('Pagination ', async () => {
describe('Pagination ', () => {
const createCursor = sort => ({ id, timestamp }) =>
encode({ sort, id, timestamp });

Expand Down

0 comments on commit f4842d7

Please sign in to comment.