| // Copyright 2018 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. |
| |
| 'use strict'; |
| |
| suite('<app-management-metadata-view>', function() { |
| let metadataView; |
| let fakeHandler; |
| |
| const APP_ID = '1'; |
| |
| setup(async function() { |
| metadataView = document.createElement('app-management-metadata-view'); |
| |
| PolymerTest.clearBody(); |
| fakeHandler = setupFakeHandler(); |
| replaceStore(); |
| |
| // Add an app, and make it the currently selected app. |
| await fakeHandler.addApp(APP_ID); |
| app_management.Store.getInstance().dispatch( |
| app_management.actions.changePage(PageType.DETAIL, APP_ID)); |
| |
| document.body.appendChild(metadataView); |
| }); |
| |
| test( |
| 'when app.isPinned is unknown, the pin to shelf toggle is not visible', |
| async function() { |
| await fakeHandler.changeApp(APP_ID, {isPinned: OptionalBool.kUnknown}); |
| |
| // Check that the toggle is not visible. |
| const toggle = metadataView.root.getElementById('pin-to-shelf-toggle'); |
| if (toggle) { |
| expectTrue(isHidden(toggle)); |
| } |
| }); |
| |
| test( |
| 'clicking the pin to shelf toggle changes the isPinned field of the app', |
| async function() { |
| // Set app.isPinned to false. |
| await fakeHandler.changeApp(APP_ID, {isPinned: OptionalBool.kFalse}); |
| |
| const toggle = metadataView.root.getElementById('pin-to-shelf-toggle'); |
| |
| // Check that the toggle is visible and is not checked. |
| expectTrue(!!toggle && !isHidden(toggle)); |
| expectFalse(toggle.checked); |
| |
| // Toggle from false to true. |
| toggle.click(); |
| await fakeHandler.flushForTesting(); |
| |
| // Check that the isPinned field of the app has changed. |
| expectEquals(OptionalBool.kTrue, metadataView.app_.isPinned); |
| |
| // Check that the toggle is now checked. |
| expectTrue(toggle.checked); |
| |
| // Toggle from true to false. |
| toggle.click(); |
| await fakeHandler.flushForTesting(); |
| |
| // Check that the isPinned field of the app has changed. |
| expectEquals(OptionalBool.kFalse, metadataView.app_.isPinned); |
| |
| // Check that the toggle is no longer checked. |
| expectFalse(toggle.checked); |
| }); |
| }); |