Commit 87c0e18206d037cb418c3b3140fbfc68b31d2b57
1 parent
4f023483
Exists in
master
and in
1 other branch
Create a method in profile service that change the current profile based on an identifier
Showing
4 changed files
with
27 additions
and
10 deletions
Show diff stats
src/app/profile/profile.component.spec.ts
| ... | ... | @@ -16,22 +16,21 @@ describe("Components", () => { |
| 16 | 16 | |
| 17 | 17 | beforeEach(() => { |
| 18 | 18 | $stateParams = jasmine.createSpyObj("$stateParams", ["profile"]); |
| 19 | - profileServiceMock = jasmine.createSpyObj("profileServiceMock", ["getByIdentifier", "getBoxes", "setCurrentProfile"]); | |
| 19 | + profileServiceMock = jasmine.createSpyObj("profileServiceMock", ["setCurrentProfileByIdentifier", "getBoxes"]); | |
| 20 | 20 | |
| 21 | - let getByIdentifierResponse = $q.defer(); | |
| 22 | - getByIdentifierResponse.resolve({ data: [{ id: 1 }] }); | |
| 21 | + let profileResponse = $q.defer(); | |
| 22 | + profileResponse.resolve({ id: 1 }); | |
| 23 | 23 | let getBoxesResponse = $q.defer(); |
| 24 | 24 | getBoxesResponse.resolve({ data: { boxes: [{ id: 2 }] } }); |
| 25 | 25 | |
| 26 | - profileServiceMock.getByIdentifier = jasmine.createSpy("getByIdentifier").and.returnValue(getByIdentifierResponse.promise); | |
| 26 | + profileServiceMock.setCurrentProfileByIdentifier = jasmine.createSpy("setCurrentProfileByIdentifier").and.returnValue(profileResponse.promise); | |
| 27 | 27 | profileServiceMock.getBoxes = jasmine.createSpy("getBoxes").and.returnValue(getBoxesResponse.promise); |
| 28 | 28 | }); |
| 29 | 29 | |
| 30 | 30 | it("get the profile and store in profile service", done => { |
| 31 | 31 | let component: Profile = new Profile(profileServiceMock, $stateParams); |
| 32 | 32 | $rootScope.$apply(); |
| 33 | - expect(profileServiceMock.getByIdentifier).toHaveBeenCalled(); | |
| 34 | - expect(profileServiceMock.setCurrentProfile).toHaveBeenCalled(); | |
| 33 | + expect(profileServiceMock.setCurrentProfileByIdentifier).toHaveBeenCalled(); | |
| 35 | 34 | expect(component.profile).toEqual({ id: 1 }); |
| 36 | 35 | done(); |
| 37 | 36 | }); | ... | ... |
src/app/profile/profile.component.ts
| ... | ... | @@ -76,10 +76,8 @@ export class Profile { |
| 76 | 76 | profile: noosferoModels.Profile; |
| 77 | 77 | |
| 78 | 78 | constructor(profileService: ProfileService, $stateParams: ng.ui.IStateParamsService) { |
| 79 | - profileService.resetCurrentProfile(); | |
| 80 | - profileService.getByIdentifier($stateParams["profile"]).then((response: restangular.IResponse) => { | |
| 81 | - this.profile = response.data[0]; | |
| 82 | - profileService.setCurrentProfile(this.profile); | |
| 79 | + profileService.setCurrentProfileByIdentifier($stateParams["profile"]).then((profile: noosferoModels.Profile) => { | |
| 80 | + this.profile = profile; | |
| 83 | 81 | return profileService.getBoxes(this.profile.id); |
| 84 | 82 | }).then((response: restangular.IResponse) => { |
| 85 | 83 | this.boxes = response.data.boxes; | ... | ... |
src/lib/ng-noosfero-api/http/profile.service.spec.ts
| ... | ... | @@ -79,6 +79,18 @@ describe("Services", () => { |
| 79 | 79 | $httpBackend.flush(); |
| 80 | 80 | }); |
| 81 | 81 | |
| 82 | + it("should find the profile by identifier, set and resolve the current profile", (done) => { | |
| 83 | + let identifier = 'profile1'; | |
| 84 | + $httpBackend.expectGET(`/api/v1/profiles?identifier=${identifier}`).respond(200, [{ name: "profile1" }]); | |
| 85 | + profileService.setCurrentProfileByIdentifier(identifier).then((profile: Profile) => { | |
| 86 | + expect(profile).toEqual({ name: "profile1" }); | |
| 87 | + profileService.getCurrentProfile().then((profile: Profile) => { | |
| 88 | + expect(profile).toEqual({ name: "profile1" }); | |
| 89 | + done(); | |
| 90 | + }); | |
| 91 | + }); | |
| 92 | + $httpBackend.flush(); | |
| 93 | + }); | |
| 82 | 94 | }); |
| 83 | 95 | |
| 84 | 96 | ... | ... |
src/lib/ng-noosfero-api/http/profile.service.ts
| ... | ... | @@ -23,6 +23,14 @@ export class ProfileService { |
| 23 | 23 | this._currentProfilePromise.resolve(profile); |
| 24 | 24 | } |
| 25 | 25 | |
| 26 | + setCurrentProfileByIdentifier(identifier: string) { | |
| 27 | + this.resetCurrentProfile(); | |
| 28 | + return this.getByIdentifier(identifier).then((response: restangular.IResponse) => { | |
| 29 | + this.setCurrentProfile(response.data[0]); | |
| 30 | + return this.getCurrentProfile(); | |
| 31 | + }); | |
| 32 | + } | |
| 33 | + | |
| 26 | 34 | getHomePage(profileId: number, params?: any) { |
| 27 | 35 | return this.get(profileId).customGET("home_page", params); |
| 28 | 36 | } | ... | ... |