profile-image-block.component.spec.ts
4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import { TestComponentBuilder, ComponentFixture } from 'ng-forward/cjs/testing/test-component-builder';
import { Pipe, Input, provide, Component } from 'ng-forward';
import { ProfileImageBlockComponent } from './profile-image-block.component';
import * as helpers from "./../../../../spec/helpers";
const tcb = new TestComponentBuilder();
const htmlTemplate: string = '<noosfero-profile-image-block [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-profile-image-block>';
describe("Components", () => {
describe("Profile Image Block Component", () => {
beforeEach(angular.mock.module("templates"));
let personService = jasmine.createSpyObj("personService", ["upload"]);
let profileService = jasmine.createSpyObj("ProfileService", ["isMember", "addMember", "removeMember"]);
profileService.isMember = jasmine.createSpy("isMember").and.returnValue(Promise.resolve(false));
@Component({
selector: 'test-container-component',
template: htmlTemplate,
directives: [ProfileImageBlockComponent],
providers: [
helpers.createProviderToValue('SessionService', helpers.mocks.sessionWithCurrentUser({})),
helpers.createProviderToValue("PersonService", personService),
helpers.createProviderToValue("$uibModal", helpers.mocks.$modal),
helpers.createProviderToValue('ProfileService', profileService),
helpers.createProviderToValue('NotificationService', helpers.mocks.notificationService)
].concat(helpers.provideFilters("translateFilter"))
})
class BlockContainerComponent {
block = { type: 'Block' };
owner = { name: 'profile-name' };
constructor() {
}
}
it("show image if present", () => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
expect(elProfile.query('div.profile-image-block').length).toEqual(1);
});
});
it("has link to the profile", () => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
expect(elProfile.query('a.settings-link').length).toEqual(1);
});
});
it("display button to join community", (done: Function) => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
expect(elProfile.query('.actions .join').length).toEqual(1);
done();
});
});
it("display button to leave community", (done: Function) => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
elProfile.componentInstance['isMember'] = true;
fixture.detectChanges();
expect(elProfile.query('.actions .leave').length).toEqual(1);
done();
});
});
it("join community", (done: Function) => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
profileService.addMember = jasmine.createSpy("addMember").and.returnValue(Promise.resolve({ data: {} }));
elProfile.componentInstance.join();
expect(profileService.addMember).toHaveBeenCalled();
done();
});
});
it("leave community", (done: Function) => {
helpers.tcb.createAsync(BlockContainerComponent).then(fixture => {
let elProfile = fixture.debugElement.componentViewChildren[0];
profileService.removeMember = jasmine.createSpy("removeMember").and.returnValue(Promise.resolve({ data: {} }));
elProfile.componentInstance.leave();
expect(profileService.removeMember).toHaveBeenCalled();
done();
});
});
});
});