85 lines
3.4 KiB
TypeScript
85 lines
3.4 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 { CoreIcons } from '@singletons/icons';
|
||
|
|
||
|
describe('CoreIcons singleton', () => {
|
||
|
|
||
|
it('replaces CSS icon with the correspondant ion-icon', async () => {
|
||
|
const icon = document.createElement('i');
|
||
|
|
||
|
// Not an icon
|
||
|
icon.className = 'test';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon)))
|
||
|
.toEqual(undefined);
|
||
|
|
||
|
icon.className = 'fas fanoicon';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon)))
|
||
|
.toEqual(undefined);
|
||
|
|
||
|
icon.className = 'fa-solid fanoicon';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon)))
|
||
|
.toEqual(undefined);
|
||
|
|
||
|
// Font awesome 6
|
||
|
icon.className = 'fa-solid fa-face-awesome';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/solid/face-awesome.svg');
|
||
|
|
||
|
icon.className = 'fa-regular fa-face-awesome';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/regular/face-awesome.svg');
|
||
|
|
||
|
icon.className = 'fa-light fa-face-awesome';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/regular/face-awesome.svg');
|
||
|
|
||
|
icon.className = 'fa-brands fa-facebook';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/brands/facebook.svg');
|
||
|
|
||
|
// Font awesome 5
|
||
|
icon.className = 'fas fa-yin-yang';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/solid/yin-yang.svg');
|
||
|
|
||
|
icon.className = 'far fa-wrench';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/regular/wrench.svg');
|
||
|
|
||
|
icon.className = 'fab fa-youtube';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/brands/youtube.svg');
|
||
|
|
||
|
// Font awesome 4.7
|
||
|
icon.className = 'fa fa-address-book';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/solid/address-book.svg');
|
||
|
|
||
|
icon.className = 'fa fa-address-book-o';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/regular/address-book.svg');
|
||
|
|
||
|
// Aliases
|
||
|
icon.className = 'fas fa-battery-5';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/solid/battery-full.svg');
|
||
|
|
||
|
icon.className = 'fa fa-check-square';
|
||
|
expect((await CoreIcons.replaceCSSIcon(icon))?.getAttribute('src'))
|
||
|
.toEqual('assets/fonts/font-awesome/solid/square-check.svg');
|
||
|
});
|
||
|
|
||
|
});
|