blob: 982395f856ad329edb0d487fd96ebda05bee5ee9 [file] [log] [blame]
// Copyright 2020 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview Terminal Settings Background Image Element unit tests.
*/
import {lib} from '../../libdot/index.js';
import {hterm} from '../../hterm/index.js';
import {TerminalSettingsBackgroundImageElement}
from './terminal_settings_background_image.js';
const key = 'background-image-test';
describe('terminal_settings_background_image_tests.js', () => {
const svgDataUrl = 'data:image/svg+xml;base64,' +
'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4=';
beforeEach(function() {
window.preferenceManager = new hterm.PreferenceManager(
new lib.Storage.Memory(), 'test');
window.localStorage.removeItem(key);
this.el = null;
this.createElement = async function() {
if (this.el) {
document.body.removeChild(this.el);
}
this.el = /** @type {!TerminalSettingsBackgroundImageElement} */ (
document.createElement('terminal-settings-background-image'));
document.body.appendChild(this.el);
// The element renders asynchronously.
return this.el.updateComplete;
};
});
afterEach(function() {
if (this.el) {
document.body.removeChild(this.el);
}
window.localStorage.removeItem(key);
});
it('shows-preview-local-storage-if-exists', async function() {
await this.createElement();
assert.equal(this.el.imagePreviewSrc_, '');
window.localStorage.setItem(key, svgDataUrl);
await this.createElement();
assert.equal(this.el.imagePreviewSrc_, svgDataUrl);
});
it('clears-storage-and-preview-on-remove-click', async function() {
window.localStorage.setItem(key, svgDataUrl);
await this.createElement();
this.el.shadowRoot.querySelector('#bg-remove').click();
await this.el.updateComplete;
assert.isNull(window.localStorage.getItem(key));
assert.equal('', this.el.imagePreviewSrc_);
});
it('shows-correct-elements', async function() {
// No image is set.
await this.createElement();
assert.isNotNull(this.el.shadowRoot.querySelector('#bg-select'));
assert.isNull(this.el.shadowRoot.querySelector('img'));
assert.isNull(this.el.shadowRoot.querySelector('#bg-remove'));
// Image from local storage.
window.localStorage.setItem(key, svgDataUrl);
await this.createElement();
assert.isNull(this.el.shadowRoot.querySelector('#bg-select'));
assert.isNotNull(this.el.shadowRoot.querySelector('img'));
assert.isNotNull(this.el.shadowRoot.querySelector('#bg-remove'));
});
it('updates-preview-and-local-storage-when-file-selected', async function() {
await this.createElement();
this.el.onFileLoad_(svgDataUrl);
assert.equal(svgDataUrl, window.localStorage.getItem(key));
assert.equal(svgDataUrl, this.el.imagePreviewSrc_);
});
});