forked from CIT/Vmeda.Online
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
// (C) Copyright 2015 Moodle Pty Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
import { CoreLinkDirective } from '@directives/link';
|
|
import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper';
|
|
|
|
import { mockSingleton, renderTemplate } from '@/testing/utils';
|
|
|
|
describe('CoreLinkDirective', () => {
|
|
|
|
it('should render', async () => {
|
|
// Act
|
|
const fixture = await renderTemplate(
|
|
CoreLinkDirective,
|
|
'<a href="https://moodle.org/" core-link [capture]="true">Link</a>',
|
|
);
|
|
|
|
// Assert
|
|
expect(fixture.nativeElement.innerHTML.trim()).not.toHaveLength(0);
|
|
|
|
const anchor = fixture.nativeElement.querySelector('a');
|
|
expect(anchor).not.toBeNull();
|
|
expect(anchor.href).toEqual('https://moodle.org/');
|
|
});
|
|
|
|
it('should capture clicks', async () => {
|
|
// Arrange
|
|
mockSingleton(CoreContentLinksHelper, { handleLink: () => Promise.resolve(true) });
|
|
|
|
// Act
|
|
const { nativeElement } = await renderTemplate(
|
|
CoreLinkDirective,
|
|
'<a href="https://moodle.org/" core-link [capture]="true">Link</a>',
|
|
);
|
|
|
|
const anchor = nativeElement.querySelector('a');
|
|
|
|
anchor.click();
|
|
|
|
// Assert
|
|
expect(CoreContentLinksHelper.handleLink).toHaveBeenCalledTimes(1);
|
|
expect(CoreContentLinksHelper.handleLink).toHaveBeenCalledWith(
|
|
'https://moodle.org/',
|
|
undefined,
|
|
expect.anything(),
|
|
expect.anything(),
|
|
);
|
|
});
|
|
|
|
});
|