Skip to content

Commit

Permalink
Merge 6fa72a8 into 33f4626
Browse files Browse the repository at this point in the history
  • Loading branch information
ufocoder committed Jan 21, 2020
2 parents 33f4626 + 6fa72a8 commit 0d321f1
Show file tree
Hide file tree
Showing 11 changed files with 196 additions and 165 deletions.
7 changes: 7 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"trailingComma": "es5",
"tabWidth": 4,
"singleQuote": true,
"arrowParens": "always",
"printWidth": 120
}
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ install:
- npm install

script:
- npm run lint
- npm run coverage
61 changes: 30 additions & 31 deletions __tests__/hooks/service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,61 +2,60 @@ import { act, renderHook } from '@testing-library/react-hooks';
import { useService } from '../../hooks/service';
import { success } from '../../libs/remoteData';


describe('Hook `useService`', () => {
const data = { custom: 'data'}
const service = () => Promise.resolve(success(data))
const data = { custom: 'data' };
const service = () => Promise.resolve(success(data));

const remoteDataSuccess = {
status: 'Success',
data
}
data,
};

const remoteDataLoading = {
status: 'Loading'
}
status: 'Loading',
};

test('change `Loading` to `Success` status when service resolved', async () => {
const { result, waitForNextUpdate } = renderHook(() => useService(service))
const { result, waitForNextUpdate } = renderHook(() => useService(service));

expect(result.current[0]).toEqual(remoteDataLoading)
expect(result.current[0]).toEqual(remoteDataLoading);

await waitForNextUpdate()
await waitForNextUpdate();

expect(result.current[0]).toEqual(remoteDataSuccess)
})
expect(result.current[0]).toEqual(remoteDataSuccess);
});

test('method `reload` returns the same data ', async () => {
const { result, waitForNextUpdate } = renderHook(() => useService(service))
const { result, waitForNextUpdate } = renderHook(() => useService(service));

await waitForNextUpdate()
await waitForNextUpdate();

expect(result.current[0]).toEqual(remoteDataSuccess)
expect(result.current[0]).toEqual(remoteDataSuccess);

act(() => {
result.current[1].reload()
})
result.current[1].reload();
});

expect(result.current[0]).toEqual(remoteDataLoading)
expect(result.current[0]).toEqual(remoteDataLoading);

await waitForNextUpdate()
await waitForNextUpdate();

expect(result.current[0]).toEqual(remoteDataSuccess)
})
expect(result.current[0]).toEqual(remoteDataSuccess);
});

test('has `set` data method returns success remote data', async () => {
const { result, waitForNextUpdate } = renderHook(() => useService(service))
const data = { custom: 'data-new' }
const { result, waitForNextUpdate } = renderHook(() => useService(service));
const data = { custom: 'data-new' };

await waitForNextUpdate();

await waitForNextUpdate()

act(() => {
result.current[1].set(data)
})
result.current[1].set(data);
});

expect(result.current[0]).toEqual({
status: 'Success',
data
})
})
})
data,
});
});
});
48 changes: 24 additions & 24 deletions __tests__/services/instance.spec.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
import {
import {
axiosInstance,
buildQueryParams,
setInstanceBaseURL,
setInstanceToken,
resetInstanceToken
} from '../../services/instance'
resetInstanceToken,
} from '../../services/instance';

describe('Service `instance`', () => {
test('method `setInstanceBaseURL`', () => {
const baseURL = 'fakeURL'
const baseURL = 'fakeURL';

setInstanceBaseURL(baseURL)
expect(axiosInstance.defaults.baseURL).toBe(baseURL)
})
setInstanceBaseURL(baseURL);
expect(axiosInstance.defaults.baseURL).toBe(baseURL);
});

test('methods `setInstanceToken` and `resetInstanceToken`', () => {
setInstanceToken({
access_token: 'access_token',
token_type: 'token_type'
})
token_type: 'token_type',
});

expect(axiosInstance.defaults.headers.Authorization).toBe('Bearer access_token')
resetInstanceToken()
expect(axiosInstance.defaults.headers.Authorization).toBeUndefined()
})
expect(axiosInstance.defaults.headers.Authorization).toBe('Bearer access_token');
resetInstanceToken();
expect(axiosInstance.defaults.headers.Authorization).toBeUndefined();
});

describe('method `buildQueryParams`', () => {
[
[{a: 1}, 'a=1'],
[{a: true}, 'a=true'],
[{a: "42"}, 'a=42'],
[{a: [1, 2, 3]}, 'a=1&a=2&a=3'],
[{a: 1, b: 2}, 'a=1&b=2'],
[{a: 1, b: undefined}, 'a=1'],
[{ a: 1 }, 'a=1'],
[{ a: true }, 'a=true'],
[{ a: '42' }, 'a=42'],
[{ a: [1, 2, 3] }, 'a=1&a=2&a=3'],
[{ a: 1, b: 2 }, 'a=1&b=2'],
[{ a: 1, b: undefined }, 'a=1'],
].forEach(([params, query]) => {
test(`use for ${JSON.stringify(params)} 'returns ${query}`, () => {
expect(buildQueryParams(<object>params)).toEqual(query)
})
})
})
})
expect(buildQueryParams(<object>params)).toEqual(query);
});
});
});
});
Loading

0 comments on commit 0d321f1

Please sign in to comment.