[affected:*][ci:force] - REBASED

This commit is contained in:
Vito Albano
2024-04-03 02:33:48 +01:00
parent 6e2b0ef78b
commit b0a75b9cf5
15 changed files with 136 additions and 140 deletions

View File

@@ -2,7 +2,7 @@
adf-aspect-list-dialog { adf-aspect-list-dialog {
display: block; display: block;
padding: 24px 24px 8px 24px; padding: 24px 24px 8px;
} }
.adf { .adf {

View File

@@ -19,12 +19,14 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { CardViewKeyValuePairsItemModel } from '../../models/card-view-keyvaluepairs.model'; import { CardViewKeyValuePairsItemModel } from '../../models/card-view-keyvaluepairs.model';
import { CardViewKeyValuePairsItemComponent } from './card-view-keyvaluepairsitem.component'; import { CardViewKeyValuePairsItemComponent } from './card-view-keyvaluepairsitem.component';
import { CoreTestingModule } from '../../../testing/core.testing.module';
import { CardViewUpdateService } from '../../services/card-view-update.service'; import { CardViewUpdateService } from '../../services/card-view-update.service';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { MatIconModule } from '@angular/material/icon';
import { MatTableModule } from '@angular/material/table';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
describe('CardViewKeyValuePairsItemComponent', () => { describe('CardViewKeyValuePairsItemComponent', () => {
let fixture: ComponentFixture<CardViewKeyValuePairsItemComponent>; let fixture: ComponentFixture<CardViewKeyValuePairsItemComponent>;
let component: CardViewKeyValuePairsItemComponent; let component: CardViewKeyValuePairsItemComponent;
let cardViewUpdateService: CardViewUpdateService; let cardViewUpdateService: CardViewUpdateService;
@@ -33,10 +35,9 @@ describe('CardViewKeyValuePairsItemComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [NoopAnimationsModule, TranslateModule.forRoot(), MatIconModule, MatTableModule, FormsModule],
TranslateModule.forRoot(), providers: [CardViewUpdateService],
CoreTestingModule declarations: [CardViewKeyValuePairsItemComponent]
]
}); });
fixture = TestBed.createComponent(CardViewKeyValuePairsItemComponent); fixture = TestBed.createComponent(CardViewKeyValuePairsItemComponent);
cardViewUpdateService = TestBed.inject(CardViewUpdateService); cardViewUpdateService = TestBed.inject(CardViewUpdateService);
@@ -55,7 +56,6 @@ describe('CardViewKeyValuePairsItemComponent', () => {
}); });
describe('Component', () => { describe('Component', () => {
it('should render the label', () => { it('should render the label', () => {
fixture.detectChanges(); fixture.detectChanges();

View File

@@ -21,7 +21,6 @@ import { By } from '@angular/platform-browser';
import { CardViewMapItemModel } from '../../models/card-view-mapitem.model'; import { CardViewMapItemModel } from '../../models/card-view-mapitem.model';
import { CardViewUpdateService } from '../../services/card-view-update.service'; import { CardViewUpdateService } from '../../services/card-view-update.service';
import { CardViewMapItemComponent } from './card-view-mapitem.component'; import { CardViewMapItemComponent } from './card-view-mapitem.component';
import { CoreTestingModule } from '../../../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
describe('CardViewMapItemComponent', () => { describe('CardViewMapItemComponent', () => {
@@ -34,10 +33,7 @@ describe('CardViewMapItemComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot()]
TranslateModule.forRoot(),
CoreTestingModule
]
}); });
fixture = TestBed.createComponent(CardViewMapItemComponent); fixture = TestBed.createComponent(CardViewMapItemComponent);
service = TestBed.inject(CardViewUpdateService); service = TestBed.inject(CardViewUpdateService);

View File

@@ -19,7 +19,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { CardViewSelectItemModel } from '../../models/card-view-selectitem.model'; import { CardViewSelectItemModel } from '../../models/card-view-selectitem.model';
import { CardViewSelectItemComponent } from './card-view-selectitem.component'; import { CardViewSelectItemComponent } from './card-view-selectitem.component';
import { CoreTestingModule } from '../../../testing/core.testing.module';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { AppConfigService } from '../../../app-config/app-config.service'; import { AppConfigService } from '../../../app-config/app-config.service';
@@ -27,6 +26,9 @@ import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatSelectHarness } from '@angular/material/select/testing'; import { MatSelectHarness } from '@angular/material/select/testing';
import { MatFormFieldHarness } from '@angular/material/form-field/testing'; import { MatFormFieldHarness } from '@angular/material/form-field/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSelectModule } from '@angular/material/select';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('CardViewSelectItemComponent', () => { describe('CardViewSelectItemComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -60,7 +62,7 @@ describe('CardViewSelectItemComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CoreTestingModule] imports: [NoopAnimationsModule, TranslateModule.forRoot(), HttpClientTestingModule, MatSelectModule]
}); });
fixture = TestBed.createComponent(CardViewSelectItemComponent); fixture = TestBed.createComponent(CardViewSelectItemComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@@ -16,10 +16,10 @@
*/ */
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CoreTestingModule } from '../../../../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { SelectFilterInputComponent } from './select-filter-input.component'; import { SelectFilterInputComponent } from './select-filter-input.component';
import { MatSelect } from '@angular/material/select'; import { MatSelect, MatSelectModule } from '@angular/material/select';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('SelectFilterInputComponent', () => { describe('SelectFilterInputComponent', () => {
let fixture: ComponentFixture<SelectFilterInputComponent>; let fixture: ComponentFixture<SelectFilterInputComponent>;
@@ -28,7 +28,7 @@ describe('SelectFilterInputComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CoreTestingModule], imports: [NoopAnimationsModule, TranslateModule.forRoot(), MatSelectModule],
providers: [MatSelect] providers: [MatSelect]
}); });

View File

@@ -20,7 +20,6 @@ import { By } from '@angular/platform-browser';
import { CardViewTextItemModel } from '../../models/card-view-textitem.model'; import { CardViewTextItemModel } from '../../models/card-view-textitem.model';
import { CardViewUpdateService } from '../../services/card-view-update.service'; import { CardViewUpdateService } from '../../services/card-view-update.service';
import { CardViewTextItemComponent } from './card-view-textitem.component'; import { CardViewTextItemComponent } from './card-view-textitem.component';
import { CoreTestingModule } from '../../../testing/core.testing.module';
import { CardViewItemFloatValidator } from '../../validators/card-view-item-float.validator'; import { CardViewItemFloatValidator } from '../../validators/card-view-item-float.validator';
import { CardViewItemIntValidator } from '../../validators/card-view-item-int.validator'; import { CardViewItemIntValidator } from '../../validators/card-view-item-int.validator';
import { CardViewIntItemModel } from '../../models/card-view-intitem.model'; import { CardViewIntItemModel } from '../../models/card-view-intitem.model';
@@ -34,6 +33,12 @@ import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatChipGridHarness, MatChipHarness } from '@angular/material/chips/testing'; import { MatChipGridHarness, MatChipHarness } from '@angular/material/chips/testing';
import { MatInputHarness } from '@angular/material/input/testing'; import { MatInputHarness } from '@angular/material/input/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TranslationService } from '../../../translation';
import { TranslationMock } from '../../../mock';
import { MatTooltipModule } from '@angular/material/tooltip';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('CardViewTextItemComponent', () => { describe('CardViewTextItemComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -111,7 +116,8 @@ describe('CardViewTextItemComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CoreTestingModule, MatChipsModule] imports: [HttpClientTestingModule, NoopAnimationsModule, TranslateModule.forRoot(), MatSnackBarModule, MatTooltipModule, MatChipsModule],
providers: [{ provide: TranslationService, useClass: TranslationMock }]
}); });
fixture = TestBed.createComponent(CardViewTextItemComponent); fixture = TestBed.createComponent(CardViewTextItemComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
@@ -534,7 +540,9 @@ describe('CardViewTextItemComponent', () => {
component.ngOnChanges({}); component.ngOnChanges({});
loader = TestbedHarnessEnvironment.loader(fixture); loader = TestbedHarnessEnvironment.loader(fixture);
const inputHarness = await loader.getHarness(MatInputHarness.with({selector: `[data-automation-id="card-textitem-value-${component.property.key}"]`})); const inputHarness = await loader.getHarness(
MatInputHarness.with({ selector: `[data-automation-id="card-textitem-value-${component.property.key}"]` })
);
expect(component.isEditable).toBe(false); expect(component.isEditable).toBe(false);
expect(await inputHarness.isReadonly()).toBe(true); expect(await inputHarness.isReadonly()).toBe(true);

View File

@@ -20,7 +20,6 @@ import { By } from '@angular/platform-browser';
import { CardViewDateItemModel } from '../../models/card-view-dateitem.model'; import { CardViewDateItemModel } from '../../models/card-view-dateitem.model';
import { CardViewTextItemModel } from '../../models/card-view-textitem.model'; import { CardViewTextItemModel } from '../../models/card-view-textitem.model';
import { CardViewComponent } from './card-view.component'; import { CardViewComponent } from './card-view.component';
import { CoreTestingModule } from '../../../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { CardViewSelectItemModel } from '../../models/card-view-selectitem.model'; import { CardViewSelectItemModel } from '../../models/card-view-selectitem.model';
import { of } from 'rxjs'; import { of } from 'rxjs';
@@ -30,6 +29,15 @@ import { CardViewItemDispatcherComponent } from '../card-view-item-dispatcher/ca
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatSelectHarness } from '@angular/material/select/testing'; import { MatSelectHarness } from '@angular/material/select/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TranslationService } from '../../../translation';
import { TranslationMock } from '../../../mock';
import { MatTooltipModule } from '@angular/material/tooltip';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { MatDialogModule } from '@angular/material/dialog';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatSelectModule } from '@angular/material/select';
describe('CardViewComponent', () => { describe('CardViewComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -38,7 +46,17 @@ describe('CardViewComponent', () => {
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CoreTestingModule] imports: [
TranslateModule.forRoot(),
NoopAnimationsModule,
MatSnackBarModule,
MatTooltipModule,
MatDialogModule,
MatDatepickerModule,
MatSelectModule,
HttpClientTestingModule
],
providers: [{ provide: TranslationService, useClass: TranslationMock }]
}).compileComponents(); }).compileComponents();
fixture = TestBed.createComponent(CardViewComponent); fixture = TestBed.createComponent(CardViewComponent);

View File

@@ -19,17 +19,17 @@ import { Component, ViewChild } from '@angular/core';
import { ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; import { ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing';
import { ClipboardService } from './clipboard.service'; import { ClipboardService } from './clipboard.service';
import { ClipboardDirective } from './clipboard.directive'; import { ClipboardDirective } from './clipboard.directive';
import { CoreTestingModule } from '../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TranslationService } from '../translation';
import { TranslationMock } from '../mock';
import { MatButtonModule } from '@angular/material/button';
@Component({ @Component({
selector: 'adf-test-component', selector: 'adf-test-component',
template: ` template: `
<button <button clipboard-notification="copy success" [adf-clipboard] [target]="ref">copy</button>
clipboard-notification="copy success"
[adf-clipboard] [target]="ref">
copy
</button>
<input #ref /> <input #ref />
` `
@@ -42,13 +42,9 @@ describe('ClipboardDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule, MatButtonModule],
TranslateModule.forRoot(), providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }],
CoreTestingModule declarations: [TestTargetClipboardComponent, ClipboardDirective]
],
declarations: [
TestTargetClipboardComponent
]
}); });
fixture = TestBed.createComponent(TestTargetClipboardComponent); fixture = TestBed.createComponent(TestTargetClipboardComponent);
clipboardService = TestBed.inject(ClipboardService); clipboardService = TestBed.inject(ClipboardService);
@@ -66,20 +62,18 @@ describe('ClipboardDirective', () => {
it('should notify copy target value on keydown event', () => { it('should notify copy target value on keydown event', () => {
spyOn(clipboardService, 'copyToClipboard'); spyOn(clipboardService, 'copyToClipboard');
fixture.nativeElement.querySelector('input').value = 'some value'; fixture.nativeElement.querySelector('input').value = 'some value';
fixture.nativeElement.querySelector('button').dispatchEvent(new KeyboardEvent('keydown', {code: 'Enter', key: 'Enter'})); fixture.nativeElement.querySelector('button').dispatchEvent(new KeyboardEvent('keydown', { code: 'Enter', key: 'Enter' }));
expect(clipboardService.copyToClipboard).toHaveBeenCalled(); expect(clipboardService.copyToClipboard).toHaveBeenCalled();
}); });
}); });
describe('CopyClipboardDirective', () => { describe('CopyClipboardDirective', () => {
@Component({ @Component({
selector: 'adf-copy-conent-test-component', selector: 'adf-copy-conent-test-component',
template: `<span adf-clipboard="placeholder">{{ mockText }}</span>` template: `<span adf-clipboard="placeholder">{{ mockText }}</span>`
}) })
class TestCopyClipboardComponent { class TestCopyClipboardComponent {
mockText = 'text to copy'; mockText = 'text to copy';
placeholder = 'copy text'; placeholder = 'copy text';
@@ -92,27 +86,23 @@ describe('CopyClipboardDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule],
TranslateModule.forRoot(), providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }],
CoreTestingModule declarations: [TestCopyClipboardComponent, ClipboardDirective]
],
declarations: [
TestCopyClipboardComponent
]
}); });
fixture = TestBed.createComponent(TestCopyClipboardComponent); fixture = TestBed.createComponent(TestCopyClipboardComponent);
element = fixture.debugElement.nativeElement; element = fixture.debugElement.nativeElement;
fixture.detectChanges(); fixture.detectChanges();
}); });
it('should show tooltip when hover element', (() => { it('should show tooltip when hover element', () => {
const spanHTMLElement = element.querySelector<HTMLInputElement>('span'); const spanHTMLElement = element.querySelector<HTMLInputElement>('span');
spanHTMLElement.dispatchEvent(new Event('mouseenter')); spanHTMLElement.dispatchEvent(new Event('mouseenter'));
fixture.detectChanges(); fixture.detectChanges();
expect(fixture.debugElement.nativeElement.querySelector('.adf-copy-tooltip')).not.toBeNull(); expect(fixture.debugElement.nativeElement.querySelector('.adf-copy-tooltip')).not.toBeNull();
})); });
it('should not show tooltip when element it is not hovered', (() => { it('should not show tooltip when element it is not hovered', () => {
const spanHTMLElement = element.querySelector<HTMLInputElement>('span'); const spanHTMLElement = element.querySelector<HTMLInputElement>('span');
spanHTMLElement.dispatchEvent(new Event('mouseenter')); spanHTMLElement.dispatchEvent(new Event('mouseenter'));
fixture.detectChanges(); fixture.detectChanges();
@@ -121,7 +111,7 @@ describe('CopyClipboardDirective', () => {
spanHTMLElement.dispatchEvent(new Event('mouseleave')); spanHTMLElement.dispatchEvent(new Event('mouseleave'));
fixture.detectChanges(); fixture.detectChanges();
expect(fixture.debugElement.nativeElement.querySelector('.adf-copy-tooltip')).toBeNull(); expect(fixture.debugElement.nativeElement.querySelector('.adf-copy-tooltip')).toBeNull();
})); });
it('should copy the content of element when click it', fakeAsync(() => { it('should copy the content of element when click it', fakeAsync(() => {
const spanHTMLElement = element.querySelector<HTMLInputElement>('span'); const spanHTMLElement = element.querySelector<HTMLInputElement>('span');
@@ -137,7 +127,7 @@ describe('CopyClipboardDirective', () => {
const spanHTMLElement = element.querySelector<HTMLInputElement>('span'); const spanHTMLElement = element.querySelector<HTMLInputElement>('span');
fixture.detectChanges(); fixture.detectChanges();
spyOn(navigator.clipboard, 'writeText'); spyOn(navigator.clipboard, 'writeText');
spanHTMLElement.dispatchEvent(new KeyboardEvent('keydown', {code: 'Enter', key: 'Enter'})); spanHTMLElement.dispatchEvent(new KeyboardEvent('keydown', { code: 'Enter', key: 'Enter' }));
tick(); tick();
fixture.detectChanges(); fixture.detectChanges();
expect(navigator.clipboard.writeText).toHaveBeenCalledWith('text to copy'); expect(navigator.clipboard.writeText).toHaveBeenCalledWith('text to copy');

View File

@@ -19,8 +19,10 @@ import { NotificationService } from '../notifications/services/notification.serv
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { ClipboardService } from './clipboard.service'; import { ClipboardService } from './clipboard.service';
import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSnackBarModule } from '@angular/material/snack-bar';
import { CoreTestingModule } from '../testing';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslationService } from '../translation';
import { TranslationMock } from '../mock';
describe('ClipboardService', () => { describe('ClipboardService', () => {
let clipboardService: ClipboardService; let clipboardService: ClipboardService;
@@ -29,11 +31,8 @@ describe('ClipboardService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule],
TranslateModule.forRoot(), providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }]
CoreTestingModule,
MatSnackBarModule
]
}); });
clipboardService = TestBed.inject(ClipboardService); clipboardService = TestBed.inject(ClipboardService);
notificationService = TestBed.inject(NotificationService); notificationService = TestBed.inject(NotificationService);
@@ -61,8 +60,7 @@ describe('ClipboardService', () => {
clipboardService.copyToClipboard(inputElement); clipboardService.copyToClipboard(inputElement);
expect(inputElement.select).toHaveBeenCalledWith(); expect(inputElement.select).toHaveBeenCalledWith();
expect(inputElement.setSelectionRange) expect(inputElement.setSelectionRange).toHaveBeenCalledWith(0, inputElement.value.length);
.toHaveBeenCalledWith(0, inputElement.value.length);
expect(navigator.clipboard.writeText).toHaveBeenCalledWith('some text'); expect(navigator.clipboard.writeText).toHaveBeenCalledWith('some text');
}); });

View File

@@ -15,33 +15,24 @@
* limitations under the License. * limitations under the License.
*/ */
import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CommentModel } from '../../models/comment.model'; import { CommentModel } from '../../models/comment.model';
import { CommentListComponent } from './comment-list.component'; import { CommentListComponent } from './comment-list.component';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { CoreTestingModule } from '../../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { import { commentUserNoPictureDefined, commentUserPictureDefined, mockCommentOne, testUser } from './mocks/comment-list.mock';
commentUserNoPictureDefined,
commentUserPictureDefined,
mockCommentOne,
testUser
} from './mocks/comment-list.mock';
import { CommentListServiceMock } from './mocks/comment-list.service.mock'; import { CommentListServiceMock } from './mocks/comment-list.service.mock';
import { ADF_COMMENTS_SERVICE } from '../interfaces/comments.token'; import { ADF_COMMENTS_SERVICE } from '../interfaces/comments.token';
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('CommentListComponent', () => { describe('CommentListComponent', () => {
let commentList: CommentListComponent; let commentList: CommentListComponent;
let fixture: ComponentFixture<CommentListComponent>; let fixture: ComponentFixture<CommentListComponent>;
let element: HTMLElement; let element: HTMLElement;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule],
TranslateModule.forRoot(),
CoreTestingModule
],
providers: [ providers: [
{ {
provide: ADF_COMMENTS_SERVICE, provide: ADF_COMMENTS_SERVICE,
@@ -60,22 +51,21 @@ describe('CommentListComponent', () => {
fixture.destroy(); fixture.destroy();
}); });
it('should emit row click event', fakeAsync(() => { it('should emit row click event', (done) => {
commentList.comments = [mockCommentOne]; commentList.comments = [mockCommentOne];
commentList.clickRow.subscribe((selectedComment: CommentModel) => { commentList.clickRow.subscribe((selectedComment: CommentModel) => {
expect(selectedComment.id).toEqual(1); expect(selectedComment.id).toEqual(1);
expect(selectedComment.message).toEqual('Test Comment'); expect(selectedComment.message).toEqual('Test Comment');
expect(selectedComment.createdBy).toEqual(testUser); expect(selectedComment.createdBy).toEqual(testUser);
expect(selectedComment.isSelected).toBeTruthy(); done();
}); });
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => {
const comment = fixture.debugElement.query(By.css('.adf-comment-list:first-child')); const comment = fixture.debugElement.query(By.css('.adf-comment-list-item'));
comment.triggerEventHandler('click', null); comment.triggerEventHandler('click', null);
}); });
}));
it('should not show comment list if no input is given', async () => { it('should not show comment list if no input is given', async () => {
fixture.detectChanges(); fixture.detectChanges();
@@ -123,7 +113,7 @@ describe('CommentListComponent', () => {
it('comment date time should start with Yesterday when comment date is yesterday', async () => { it('comment date time should start with Yesterday when comment date is yesterday', async () => {
const commentOld = new CommentModel(mockCommentOne); const commentOld = new CommentModel(mockCommentOne);
commentOld.created = new Date((Date.now() - 24 * 3600 * 1000)); commentOld.created = new Date(Date.now() - 24 * 3600 * 1000);
commentList.comments = [commentOld]; commentList.comments = [commentOld];
fixture.detectChanges(); fixture.detectChanges();
@@ -135,7 +125,7 @@ describe('CommentListComponent', () => {
it('comment date time should not start with Today/Yesterday when comment date is before yesterday', async () => { it('comment date time should not start with Today/Yesterday when comment date is before yesterday', async () => {
const commentOld = new CommentModel(mockCommentOne); const commentOld = new CommentModel(mockCommentOne);
commentOld.created = new Date((Date.now() - 24 * 3600 * 1000 * 2)); commentOld.created = new Date(Date.now() - 24 * 3600 * 1000 * 2);
commentList.comments = [commentOld]; commentList.comments = [commentOld];
fixture.detectChanges(); fixture.detectChanges();

View File

@@ -18,12 +18,13 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CommentsComponent } from './comments.component'; import { CommentsComponent } from './comments.component';
import { CoreTestingModule } from '../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { CommentsServiceMock, commentsResponseMock } from './mocks/comments.service.mock'; import { CommentsServiceMock, commentsResponseMock } from './mocks/comments.service.mock';
import { of, throwError } from 'rxjs'; import { of, throwError } from 'rxjs';
import { ADF_COMMENTS_SERVICE } from './interfaces/comments.token'; import { ADF_COMMENTS_SERVICE } from './interfaces/comments.token';
import { CommentsService } from './interfaces/comments-service.interface'; import { CommentsService } from './interfaces/comments-service.interface';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('CommentsComponent', () => { describe('CommentsComponent', () => {
let component: CommentsComponent; let component: CommentsComponent;
@@ -34,10 +35,7 @@ describe('CommentsComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [NoopAnimationsModule, HttpClientTestingModule, TranslateModule.forRoot()],
TranslateModule.forRoot(),
CoreTestingModule
],
providers: [ providers: [
{ {
provide: ADF_COMMENTS_SERVICE, provide: ADF_COMMENTS_SERVICE,
@@ -60,7 +58,7 @@ describe('CommentsComponent', () => {
it('should load comments when id specified', () => { it('should load comments when id specified', () => {
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
expect(getCommentSpy).toHaveBeenCalled(); expect(getCommentSpy).toHaveBeenCalled();
}); });
@@ -70,7 +68,7 @@ describe('CommentsComponent', () => {
getCommentSpy.and.returnValue(throwError({})); getCommentSpy.and.returnValue(throwError({}));
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
expect(emitSpy).toHaveBeenCalled(); expect(emitSpy).toHaveBeenCalled();
}); });
@@ -82,7 +80,7 @@ describe('CommentsComponent', () => {
it('should display comments when the entity has comments', async () => { it('should display comments when the entity has comments', async () => {
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
@@ -93,7 +91,7 @@ describe('CommentsComponent', () => {
it('should display comments count when the entity has comments', async () => { it('should display comments count when the entity has comments', async () => {
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
@@ -114,7 +112,7 @@ describe('CommentsComponent', () => {
it('should display comments input by default', async () => { it('should display comments input by default', async () => {
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
@@ -141,7 +139,7 @@ describe('CommentsComponent', () => {
}); });
it('should fetch new comments when id changed', () => { it('should fetch new comments when id changed', () => {
component.ngOnChanges({id: change}); component.ngOnChanges({ id: change });
expect(getCommentSpy).toHaveBeenCalledWith('456'); expect(getCommentSpy).toHaveBeenCalledWith('456');
}); });
@@ -151,13 +149,12 @@ describe('CommentsComponent', () => {
}); });
it('should not fetch new comments when id changed to null', () => { it('should not fetch new comments when id changed to null', () => {
component.ngOnChanges({id: nullChange}); component.ngOnChanges({ id: nullChange });
expect(getCommentSpy).not.toHaveBeenCalled(); expect(getCommentSpy).not.toHaveBeenCalled();
}); });
}); });
describe('Add comment', () => { describe('Add comment', () => {
beforeEach(() => { beforeEach(() => {
component.id = '123'; component.id = '123';
fixture.detectChanges(); fixture.detectChanges();
@@ -229,7 +226,7 @@ describe('CommentsComponent', () => {
}); });
it('should clear comment when escape key is pressed', async () => { it('should clear comment when escape key is pressed', async () => {
const event = new KeyboardEvent('keydown', {key: 'Escape'}); const event = new KeyboardEvent('keydown', { key: 'Escape' });
let element = fixture.nativeElement.querySelector('#comment-input'); let element = fixture.nativeElement.querySelector('#comment-input');
element.dispatchEvent(event); element.dispatchEvent(event);

View File

@@ -16,20 +16,27 @@
*/ */
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { CoreTestingModule } from '../../testing/core.testing.module';
import { UserPreferencesService } from './user-preferences.service'; import { UserPreferencesService } from './user-preferences.service';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { CoreModule } from '../../core.module'; import { HttpClientTestingModule } from '@angular/common/http/testing';
import { DirectionalityConfigService } from './directionality-config.service';
import { directionalityConfigFactory } from './directionality-config-factory';
import { APP_INITIALIZER } from '@angular/core';
describe('DirectionalityConfigService', () => { describe('DirectionalityConfigService', () => {
let userPreferencesService: UserPreferencesService; let userPreferencesService: UserPreferencesService;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule],
TranslateModule.forRoot(), providers: [
CoreModule.forRoot(), UserPreferencesService,
CoreTestingModule {
provide: APP_INITIALIZER,
useFactory: directionalityConfigFactory,
deps: [DirectionalityConfigService],
multi: true
}
] ]
}); });
userPreferencesService = TestBed.inject(UserPreferencesService); userPreferencesService = TestBed.inject(UserPreferencesService);

View File

@@ -18,30 +18,23 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { StorageService } from '../../common/services/storage.service'; import { StorageService } from '../../common/services/storage.service';
import { CoreTestingModule } from '../../testing/core.testing.module'; import { CoreTestingModule } from '../../testing';
import { AppConfigServiceMock } from '../mock/app-config.service.mock'; import { RedirectAuthService } from '../../auth';
import { TranslateModule } from '@ngx-translate/core'; import { EMPTY } from 'rxjs';
describe('StorageService', () => { describe('StorageService', () => {
let storage: StorageService; let storage: StorageService;
let appConfig: AppConfigServiceMock; let appConfig: AppConfigService;
const key = 'test_key'; const key = 'test_key';
const value = 'test_value'; const value = 'test_value';
describe('StorageService', () => { describe('with prefix', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [CoreTestingModule],
CoreTestingModule providers: [{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, init: () => [] } }]
]
}); });
appConfig = TestBed.inject(AppConfigService); appConfig = TestBed.inject(AppConfigService);
appConfig.config = {
application: {
storagePrefix: 'ADF_APP'
}
};
storage = TestBed.inject(StorageService); storage = TestBed.inject(StorageService);
}); });
@@ -75,13 +68,11 @@ describe('StorageService', () => {
}); });
}); });
describe('StorageService', () => { describe('without prefix', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [CoreTestingModule],
TranslateModule.forRoot(), providers: [{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, init: () => [] } }]
CoreTestingModule
]
}); });
appConfig = TestBed.inject(AppConfigService); appConfig = TestBed.inject(AppConfigService);

View File

@@ -20,13 +20,13 @@ import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { StorageService } from '../../common/services/storage.service'; import { StorageService } from '../../common/services/storage.service';
import { UserPreferencesService, UserPreferenceValues } from '../../common/services/user-preferences.service'; import { UserPreferencesService, UserPreferenceValues } from '../../common/services/user-preferences.service';
import { CoreTestingModule } from '../../testing/core.testing.module';
import { AppConfigServiceMock } from '../mock/app-config.service.mock'; import { AppConfigServiceMock } from '../mock/app-config.service.mock';
import { AlfrescoApiService } from '../../services/alfresco-api.service'; import { AlfrescoApiService } from '../../services/alfresco-api.service';
import { AlfrescoApiServiceMock } from '../../mock'; import { AlfrescoApiServiceMock, TranslationMock } from '../../mock';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslationService } from '../../translation';
describe('UserPreferencesService', () => { describe('UserPreferencesService', () => {
const supportedPaginationSize = [5, 10, 15, 20]; const supportedPaginationSize = [5, 10, 15, 20];
let preferences: UserPreferencesService; let preferences: UserPreferencesService;
let storage: StorageService; let storage: StorageService;
@@ -36,9 +36,13 @@ describe('UserPreferencesService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [TranslateModule.forRoot(), HttpClientTestingModule],
TranslateModule.forRoot(), providers: [
CoreTestingModule UserPreferencesService,
StorageService,
{ provide: TranslationService, useClass: TranslationMock },
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock }
] ]
}); });
appConfig = TestBed.inject(AppConfigService); appConfig = TestBed.inject(AppConfigService);

View File

@@ -53,16 +53,11 @@ import { EMPTY } from 'rxjs';
{ {
provide: APP_INITIALIZER, provide: APP_INITIALIZER,
useFactory: directionalityConfigFactory, useFactory: directionalityConfigFactory,
deps: [ DirectionalityConfigService ], deps: [DirectionalityConfigService],
multi: true multi: true
}, },
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY } } { provide: RedirectAuthService, useValue: { onLogin: EMPTY, init: () => {} } }
], ],
exports: [ exports: [NoopAnimationsModule, CoreModule, TranslateModule, RouterTestingModule]
NoopAnimationsModule,
CoreModule,
TranslateModule,
RouterTestingModule
]
}) })
export class CoreTestingModule {} export class CoreTestingModule {}