| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import {assert} from 'chai'; |
| import {FORMATTER} |
| from 'elements/chops/chops-timestamp/chops-timestamp-helpers.js'; |
| import {MrSiteBanner} from './mr-site-banner.js'; |
| |
| |
| let element; |
| |
| describe('mr-site-banner', () => { |
| beforeEach(() => { |
| element = document.createElement('mr-site-banner'); |
| document.body.appendChild(element); |
| }); |
| |
| afterEach(() => { |
| document.body.removeChild(element); |
| }); |
| |
| it('initializes', () => { |
| assert.instanceOf(element, MrSiteBanner); |
| }); |
| |
| it('displays a banner message', async () => { |
| element.bannerMessage = 'Message'; |
| await element.updateComplete; |
| assert.equal(element.shadowRoot.textContent.trim(), 'Message'); |
| assert.isNull(element.shadowRoot.querySelector('chops-timestamp')); |
| }); |
| |
| it('displays the banner timestamp', async () => { |
| const timestamp = 1560450600; |
| |
| element.bannerMessage = 'Message'; |
| element.bannerTime = timestamp; |
| await element.updateComplete; |
| |
| const chopsTimestamp = element.shadowRoot.querySelector('chops-timestamp'); |
| |
| // The formatted date strings differ based on time zone and browser, so we |
| // can't use static strings for testing. We can't stub out the format method |
| // because it's native code and can't be modified. So just use the FORMATTER |
| // object. |
| assert.include( |
| chopsTimestamp.shadowRoot.textContent, |
| FORMATTER.format(new Date(timestamp * 1000))); |
| }); |
| |
| it('hides when there is no banner message', async () => { |
| await element.updateComplete; |
| assert.isTrue(element.hidden); |
| }); |
| }); |