85 lines
3.4 KiB
TypeScript
Raw Normal View History

// (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');
});
});