public void Add_RequestForAddItem_AddNewItem() { GroupSettingsContainer groupSettingsStub = null; SpaceSize expectedSize = new SpaceSize() { TotalSize = 100, FreeSize = 30, UsedSize = 70 }; var forAdd = new Container() { Name = "Container1", IsActive = true, Items = new List <IGroupTreeItem>() { new Container() { Name = "Container2", Size = new SpaceSize() }, new Group() { Name = "Group2", Size = expectedSize } }, Size = expectedSize }; var expectedContainer = new ContainerProjection(new Container() { Name = "Root", Size = expectedSize, Items = new List <IGroupTreeItem>() { forAdd } }); _mockService.Setup(settings => settings.LoadGroupTree()).Returns(groupSettingsStub); _groupContainerStub = new UnityContainer(); _groupContainerStub.RegisterInstance <IGroupSettings>(_mockService.Object); _groupContainerStub.RegisterInstance <IAccountRegistry>(_accountRegistryStub.Object); _groupContainerStub.RegisterType <IContainer, Container>(new InjectionConstructor()); _groupContainerStub.RegisterType <IGroup, Group>(new InjectionConstructor()); GroupTreeRegistry registry = new GroupTreeRegistry(_groupContainerStub); registry.Initialization(); registry.Add(new List <string>(), forAdd); IContainerProjection rootProjection = registry.GetContainerProjection(new List <string>(), null); Assert.IsTrue(expectedContainer.Equals(rootProjection)); }
public void SetActive_RequestForSetActive_SetActiveState() { GroupSettings _settings = new GroupSettings(_mockService.Object, _parameterName, null); string stubSettings = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<GroupSettingsContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>Room</Name>\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>MainContainer</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group</Name>\r\n <Items>\r\n <string>Account1</string>\r\n <string>Account2</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group2</Name>\r\n <Items>\r\n <string>Account1</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n</GroupSettingsContainer>"; string expectedStringForSave = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<GroupSettingsContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>Room</Name>\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>MainContainer</Name>\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group</Name>\r\n <Items>\r\n <string>Account1</string>\r\n <string>Account2</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group2</Name>\r\n <Items>\r\n <string>Account1</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n</GroupSettingsContainer>"; _mockService.Setup(settings => settings.GetValueAsString(_parameterName)).Returns(stubSettings); GroupSettingsContainer actuality = _settings.LoadGroupTree(); _settings.SetActive(new List <string>(), "MainContainer", false); _mockService.Verify(settings => settings.SetValueAsString(_parameterName, expectedStringForSave), Occurred.Once()); }
public void LoadGroupTree_RequestForLoadGroup_LoadGroupTree() { GroupSettings _settings = new GroupSettings(_mockService.Object, _parameterName, null); string stub = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<GroupSettingsContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container1</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container2</Name>\r\n <IsActive>false</IsActive>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group2</Name>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group</Name>\r\n <Items>\r\n <string>Account1</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n</GroupSettingsContainer>"; var expected = new GroupSettingsContainer() { Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container1", Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container2", Items = new List <GroupSettingsItem>() }, new GroupSettingsGroup() { Name = "Group2", Items = new List <string>() } }, IsActive = true }, new GroupSettingsGroup() { Name = "Group", Items = new List <string>() { "Account1" } } } }; _mockService.Setup(settings => settings.GetValueAsString(_parameterName)).Returns(stub); GroupSettingsContainer actuality = _settings.LoadGroupTree(); Assert.IsNotNull(actuality); Assert.IsNotNull(actuality.Items); Assert.AreEqual(expected, actuality); }
/// <summary> /// Загрузка дерева из настроек /// </summary> private void LoadSittings() { _settings = _unityContainer.Resolve <IGroupSettings>(); _accountRegistry = _unityContainer.Resolve <IAccountRegistry>(); GroupSettingsContainer root = _settings.LoadGroupTree(); if (root == null) { _groupTree = _unityContainer.Resolve <IContainer>(); _groupTree.Name = "Root"; _groupTree.Size = new SpaceSize(); return; } _groupTree = _unityContainer.Resolve <IContainer>(); LoadChildren(_groupTree, root); _groupTree.LoadSizeInfo(); }
/// <summary> /// Загрузка дочерних элементов дерева групп /// </summary> /// <param name="container">Контейнер для загрузки</param> /// <param name="settingsContainer">Данные для контейнера</param> private void LoadChildren(IContainer container, GroupSettingsContainer settingsContainer) { container.Name = settingsContainer.Name; container.IsActive = settingsContainer.IsActive; if (settingsContainer.Items == null) { return; } foreach (var item in settingsContainer.Items) { switch (item) { case GroupSettingsContainer sc: IContainer childContainer = _unityContainer.Resolve <IContainer>(); childContainer.Parent = container; LoadChildren(childContainer, sc); container.Items.Add(childContainer); break; case GroupSettingsGroup settingsGroup: IGroup childGroup = _unityContainer.Resolve <IGroup>(); childGroup.Name = settingsGroup.Name; childGroup.Parent = container; container.Items.Add(childGroup); if (settingsGroup.Items == null) { continue; } foreach (var account in settingsGroup.Items) { childGroup.Items.Add(_accountRegistry.Find(account)); } break; default: throw new ArgumentException("Unknown type"); } } }
public void Add_RequestForAddContainer_AddNewContainer() { GroupSettings _settings = new GroupSettings(_mockService.Object, _parameterName, null); string expectedStringForSave = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<GroupSettingsContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Name>Room</Name>\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>MainContainer</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group</Name>\r\n <Items>\r\n <string>Account1</string>\r\n <string>Account2</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container</Name>\r\n <IsActive>true</IsActive>\r\n <Items />\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n</GroupSettingsContainer>"; var expected = new GroupSettingsContainer() { Name = "MainContainer", IsActive = true, Items = new List <GroupSettingsItem>() { new GroupSettingsGroup() { Items = new List <string>() { "Account1", "Account2" }, Name = "Group" }, new GroupSettingsContainer() { Name = "Container", Items = new List <GroupSettingsItem>(), IsActive = true } } }; _mockService.Setup(settings => settings.GetValueAsString(_parameterName)).Returns(String.Empty); GroupSettingsContainer actuality = _settings.LoadGroupTree(); _settings.Add(new List <string>(), expected); _mockService.Verify(settings => settings.SetValueAsString(_parameterName, expectedStringForSave), Occurred.Once()); Assert.IsNotNull(actuality); Assert.IsNotNull(actuality.Items); }
public void SaveGroupTree_RequestForSave_Save() { string expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<GroupSettingsContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <IsActive>false</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container1</Name>\r\n <IsActive>true</IsActive>\r\n <Items>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsContainer\">\r\n <Name>Container2</Name>\r\n <IsActive>false</IsActive>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group2</Name>\r\n </GroupSettingsItem>\r\n </Items>\r\n </GroupSettingsItem>\r\n <GroupSettingsItem xsi:type=\"GroupSettingsGroup\">\r\n <Name>Group</Name>\r\n <Items>\r\n <string>Account1</string>\r\n </Items>\r\n </GroupSettingsItem>\r\n </Items>\r\n</GroupSettingsContainer>"; var forSave = new GroupSettingsContainer() { Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container1", Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container2" }, new GroupSettingsGroup() { Name = "Group2" } }, IsActive = true }, new GroupSettingsGroup() { Name = "Group", Items = new List <string>() { "Account1" } } } }; GroupSettings _settings = new GroupSettings(_mockService.Object, _parameterName, forSave); _settings.SaveGroupTree(); _mockService.Verify(settings => settings.SetValueAsString(_parameterName, expected), Occurred.Once()); }
public void SetActive_RequestForSetActive_SetActiveState() { var groupSettingsStub = new GroupSettingsContainer() { Name = "Root", Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container1", Items = new List <GroupSettingsItem>() { new GroupSettingsContainer() { Name = "Container2" }, new GroupSettingsGroup() { Name = "Group2", Items = new List <string>() { "Account1" } } }, IsActive = true }, new GroupSettingsGroup() { Name = "Group", Items = new List <string>() { "Account1" } } } }; SpaceSize expectedSize = new SpaceSize() { TotalSize = 100, FreeSize = 80, UsedSize = 20 }; var expectedContainer = new ContainerProjection(new Container() { Name = "Root", Size = expectedSize, Items = new List <IGroupTreeItem>() { new Container() { Name = "Container1", IsActive = false, Items = new List <IGroupTreeItem>() { new Container() { Name = "Container2", Size = new SpaceSize() }, new Group() { Name = "Group2", Size = expectedSize, Items = new List <IAccountProjection>() { _accountStub.Object } } }, Size = expectedSize }, new Group() { Name = "Group", Size = expectedSize, Items = new List <IAccountProjection>() { _accountStub.Object } }, } }); _mockService.Setup(settings => settings.LoadGroupTree()).Returns(groupSettingsStub); _accountRegistryStub.Setup(accountRegistry => accountRegistry.Find("Account1")).Returns(_accountStub.Object); _accountStub.SetupGet(accountProjection => accountProjection.Size).Returns(() => expectedSize); _accountStub.SetupGet(accountProjection => accountProjection.Login).Returns(() => "Account1"); _groupContainerStub = new UnityContainer(); _groupContainerStub.RegisterInstance <IGroupSettings>(_mockService.Object); _groupContainerStub.RegisterInstance <IAccountRegistry>(_accountRegistryStub.Object); _groupContainerStub.RegisterType <IContainer, Container>(new InjectionConstructor()); _groupContainerStub.RegisterType <IGroup, Group>(new InjectionConstructor()); GroupTreeRegistry registry = new GroupTreeRegistry(_groupContainerStub); registry.Initialization(); registry.SetActive(new List <string>(), "Container1", false); IContainerProjection rootProjection = registry.GetContainerProjection(new List <string>(), null); Assert.IsTrue(expectedContainer.Equals(rootProjection)); }