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));
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        /// <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();
        }
Beispiel #5
0
        /// <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");
                }
            }
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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));
        }