Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 53362b6

Browse files
Refactor user service getUsers method for filter
1 parent 708343b commit 53362b6

File tree

2 files changed

+72
-4
lines changed

2 files changed

+72
-4
lines changed

‎src/app/shared/services/users.service.spec.ts‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,76 @@ import { TestBed } from '@angular/core/testing';
22

33
import { UsersService } from './users.service';
44
import { HttpClientTestingModule } from '@angular/common/http/testing';
5+
import { HttpClient, HttpParams } from '@angular/common/http';
6+
import { of, Observable } from 'rxjs';
7+
import { environment } from 'src/environments/environment';
8+
import { User } from '../models/user.model';
59

610
describe('UsersService', () => {
711
let service: UsersService;
12+
let httpClientSpy: jasmine.SpyObj<HttpClient>;
813

914
beforeEach(() => {
15+
//create http spy
16+
const httpSpy = jasmine.createSpyObj('HttpClient', ['get', 'post']);
17+
1018
TestBed.configureTestingModule({
1119
imports: [HttpClientTestingModule],
20+
providers: [{ provide: HttpClient, useValue: httpSpy }],
1221
});
1322
service = TestBed.inject(UsersService);
23+
httpClientSpy = TestBed.inject(HttpClient) as jasmine.SpyObj<HttpClient>;
1424
});
1525

1626
it('should be created', () => {
1727
expect(service).toBeTruthy();
1828
});
29+
30+
describe('getUsers', () => {
31+
it('should send a GET request to the correct URL without pagination parameters', () => {
32+
httpClientSpy.get.and.returnValue(of([]));
33+
34+
service.getUsers().subscribe(() => {});
35+
expect(httpClientSpy.get).toHaveBeenCalledWith(
36+
environment.apiUrl + 'users',
37+
{
38+
params: new HttpParams(),
39+
}
40+
);
41+
});
42+
// @Todo- need to write test case
43+
xit('should send a GET request to the correct URL with pagination parameters', () => {
44+
const pageIndex = 2;
45+
const pageSize = 10;
46+
const params = new HttpParams().append('page', '3').append('limit', '10');
47+
httpClientSpy.get.and.returnValue(of([]));
48+
service.getUsers(pageIndex, pageSize).subscribe(() => {});
49+
expect(httpClientSpy.get).toHaveBeenCalledWith(
50+
environment.apiUrl + 'users',
51+
{
52+
params,
53+
}
54+
);
55+
});
56+
});
57+
58+
describe('addUser', () => {
59+
it('should send a POST request to the correct URL with the provided user', () => {
60+
const user: User = {
61+
id: 1,
62+
name: 'John Doe',
63+
avatar: '',
64+
status: false,
65+
email: '',
66+
createdAt: '',
67+
};
68+
httpClientSpy.post.and.returnValue(of(user));
69+
const result = service.addUser(user);
70+
expect(httpClientSpy.post).toHaveBeenCalledWith(
71+
environment.apiUrl + 'users',
72+
user
73+
);
74+
expect(result).toBeInstanceOf(Observable);
75+
});
76+
});
1977
});

‎src/app/shared/services/users.service.ts‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,21 @@ import { environment } from 'src/environments/environment';
1010
export class UsersService {
1111
constructor(private http: HttpClient) {}
1212

13-
getUsers(pageIndex?: number, pageSize?: number): Observable<User[]> {
13+
getUsers(
14+
pageIndex?: number,
15+
pageSize?: number,
16+
filterStr?: string
17+
): Observable<User[]> {
1418
let params = new HttpParams();
15-
if (pageIndex !== undefined && pageSize !== undefined) {
16-
params = params.append('page', (pageIndex + 1).toString());
17-
params = params.append('limit', pageSize.toString());
19+
if (filterStr && filterStr !== '') {
20+
params = params.append('name', filterStr);
21+
} else if (
22+
pageIndex !== undefined &&
23+
pageSize !== undefined &&
24+
filterStr == undefined
25+
) {
26+
params = params.append('page', pageIndex + 1);
27+
params = params.append('limit', pageSize);
1828
}
1929
return this.http.get<User[]>(environment.apiUrl + 'users', { params });
2030
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /