using System.Windows.Media; using Filtration.Common.Services; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemTypes; using Filtration.ObjectModel.Enums; using Filtration.ObjectModel.ThemeEditor; using Filtration.ThemeEditor.Services; using Moq; using NUnit.Framework; namespace Filtration.ThemeEditor.Tests.Services { [TestFixture] public class TestThemeService { [Test] public void ApplyThemeToScript_SingleBlock_ReplacesColor() { // Arrange var testInputBlockItem = new TextColorBlockItem(); var testInputBlock = new ItemFilterBlock(); testInputBlock.BlockItems.Add(testInputBlockItem); var testInputScript = new ItemFilterScript(); testInputScript.ItemFilterBlocks.Add(testInputBlock); var testInputTheme = new Theme(); var testInputThemeComponentColor = new Color{ R = 255, G = 0, B = 1 }; var testInputThemeComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Test Component 1", testInputThemeComponentColor); testInputTheme.Components.Add(testInputThemeComponent); testInputBlockItem.ThemeComponent = testInputThemeComponent; var mockMessageBoxService = new Mock(); var service = new ThemeService(mockMessageBoxService.Object); // Act service.ApplyThemeToScript(testInputTheme, testInputScript); // Assert Assert.AreEqual(testInputThemeComponentColor, testInputBlockItem.Color); } [Test] public void ApplyThemeToScript_SingleBlockDifferentComponentName_DoesNotReplaceColour() { // Arrange var testInputBlockItem = new TextColorBlockItem(); var testInputBlock = new ItemFilterBlock(); testInputBlock.BlockItems.Add(testInputBlockItem); var testInputScript = new ItemFilterScript(); testInputScript.ItemFilterBlocks.Add(testInputBlock); var testInputTheme = new Theme(); var testInputThemeComponentColor = new Color { R = 255, G = 0, B = 1 }; var testInputThemeComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Test Component 1", testInputThemeComponentColor); var testInputBlockItemThemeComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Different Component", testInputThemeComponentColor); testInputTheme.Components.Add(testInputThemeComponent); testInputBlockItem.ThemeComponent = testInputBlockItemThemeComponent; var mockMessageBoxService = new Mock(); var service = new ThemeService(mockMessageBoxService.Object); // Act service.ApplyThemeToScript(testInputTheme, testInputScript); // Assert Assert.AreNotEqual(testInputThemeComponentColor, testInputBlockItem.Color); } } }