/* * Copyright (c) 2018 ETH Zürich, Educational Development and Technology (LET) * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using SafeExamBrowser.Client.Operations; using SafeExamBrowser.Contracts.Configuration; using SafeExamBrowser.Contracts.Configuration.Settings; using SafeExamBrowser.Contracts.Core; using SafeExamBrowser.Contracts.I18n; using SafeExamBrowser.Contracts.Logging; using SafeExamBrowser.Contracts.SystemComponents; using SafeExamBrowser.Contracts.UserInterface; using SafeExamBrowser.Contracts.UserInterface.Taskbar; namespace SafeExamBrowser.Client.UnitTests.Operations { [TestClass] public class TaskbarOperationTests { private Mock<ILogger> loggerMock; private TaskbarSettings settings; private Mock<INotificationInfo> logInfoMock; private Mock<INotificationController> logControllerMock; private Mock<ISystemComponent<ISystemKeyboardLayoutControl>> keyboardLayoutMock; private Mock<ISystemComponent<ISystemPowerSupplyControl>> powerSupplyMock; private Mock<ISystemComponent<ISystemWirelessNetworkControl>> wirelessNetworkMock; private Mock<ISystemInfo> systemInfoMock; private Mock<ITaskbar> taskbarMock; private Mock<IText> textMock; private Mock<IUserInterfaceFactory> uiFactoryMock; private TaskbarOperation sut; [TestInitialize] public void Initialize() { loggerMock = new Mock<ILogger>(); logInfoMock = new Mock<INotificationInfo>(); logControllerMock = new Mock<INotificationController>(); keyboardLayoutMock = new Mock<ISystemComponent<ISystemKeyboardLayoutControl>>(); powerSupplyMock = new Mock<ISystemComponent<ISystemPowerSupplyControl>>(); wirelessNetworkMock = new Mock<ISystemComponent<ISystemWirelessNetworkControl>>(); systemInfoMock = new Mock<ISystemInfo>(); taskbarMock = new Mock<ITaskbar>(); settings = new TaskbarSettings(); textMock = new Mock<IText>(); uiFactoryMock = new Mock<IUserInterfaceFactory>(); settings.AllowApplicationLog = true; settings.AllowKeyboardLayout = true; settings.AllowWirelessNetwork = true; systemInfoMock.SetupGet(s => s.HasBattery).Returns(true); uiFactoryMock.Setup(u => u.CreateNotification(It.IsAny<INotificationInfo>())).Returns(new Mock<INotificationButton>().Object); sut = new TaskbarOperation( loggerMock.Object, logInfoMock.Object, logControllerMock.Object, keyboardLayoutMock.Object, powerSupplyMock.Object, wirelessNetworkMock.Object, systemInfoMock.Object, taskbarMock.Object, settings, textMock.Object, uiFactoryMock.Object); } [TestMethod] public void MustPerformCorrectly() { sut.Perform(); keyboardLayoutMock.Verify(k => k.Initialize(It.IsAny<ISystemKeyboardLayoutControl>()), Times.Once); powerSupplyMock.Verify(p => p.Initialize(It.IsAny<ISystemPowerSupplyControl>()), Times.Once); wirelessNetworkMock.Verify(w => w.Initialize(It.IsAny<ISystemWirelessNetworkControl>()), Times.Once); taskbarMock.Verify(t => t.AddSystemControl(It.IsAny<ISystemControl>()), Times.Exactly(3)); taskbarMock.Verify(t => t.AddNotification(It.IsAny<INotificationButton>()), Times.Once); } [TestMethod] public void MustRevertCorrectly() { sut.Revert(); keyboardLayoutMock.Verify(k => k.Terminate(), Times.Once); powerSupplyMock.Verify(p => p.Terminate(), Times.Once); wirelessNetworkMock.Verify(w => w.Terminate(), Times.Once); } } }