Newer
Older
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ComcolRoleComponent } from './comcol-role.component';
import { GroupDataService } from '../../../../core/eperson/group-data.service';
import { By } from '@angular/platform-browser';
import { SharedModule } from '../../../shared.module';
import { TranslateModule } from '@ngx-translate/core';
import { ChangeDetectorRef, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { RequestService } from '../../../../core/data/request.service';
import { LinkService } from '../../../../core/cache/builders/link.service';
import { Community } from '../../../../core/shared/community.model';
import { ComcolRole } from './comcol-role';
import { of as observableOf } from 'rxjs/internal/observable/of';
import { RemoteData } from '../../../../core/data/remote-data';
import { Group } from '../../../../core/eperson/models/group.model';
describe('ComcolRoleComponent', () => {
let fixture: ComponentFixture<ComcolRoleComponent>;
let comp: ComcolRoleComponent;
let de: DebugElement;
let groupService;
let linkService;
beforeEach(() => {
groupService = jasmine.createSpyObj('groupService', {
createComcolGroup: undefined,
deleteComcolGroup: undefined,
});
linkService = {
resolveLink: () => undefined,
};
TestBed.configureTestingModule({
imports: [
TranslateModule.forRoot(),
SharedModule,
],
declarations: [
],
providers: [
{ provide: GroupDataService, useValue: groupService },
{ provide: LinkService, useValue: linkService },
{ provide: ChangeDetectorRef, useValue: {} },
{ provide: RequestService, useValue: {} },
], schemas: [
NO_ERRORS_SCHEMA
]
}).compileComponents();
fixture = TestBed.createComponent(ComcolRoleComponent);
comp = fixture.componentInstance;
de = fixture.debugElement;
comp.comcolRole = new ComcolRole(
'test name',
'test link name',
);
comp.dso = new Community();
fixture.detectChanges();
});
describe('when there is no group yet', () => {
it('should have a create button but no delete button', () => {
expect(de.query(By.css('.btn.create'))).toBeDefined();
expect(de.query(By.css('.btn.delete'))).toBeNull();
});
describe('when the create button is pressed', () => {
beforeEach(() => {
de.query(By.css('.btn.create')).nativeElement.click();
});
it('should call the groupService create method', () => {
expect(groupService.createComcolGroup).toHaveBeenCalled();
});
});
});
describe('when there is a group yet', () => {
beforeEach(() => {
Object.assign(comp.dso, {
'test link name': observableOf(new RemoteData(
false,
false,
true,
undefined,
new Group(),
)),
});
fixture.detectChanges();
});
it('should have a delete button but no create button', () => {
expect(de.query(By.css('.btn.delete'))).toBeDefined();
expect(de.query(By.css('.btn.create'))).toBeNull();
});
describe('when the delete button is pressed', () => {
beforeEach(() => {
de.query(By.css('.btn.delete')).nativeElement.click();
});
it('should call the groupService delete method', () => {
expect(groupService.deleteComcolGroup).toHaveBeenCalled();
});
});
});
});