public void TestEmptyState()
        {
            var repositoryMock = new Mock <IRepository <PanelModel> >();

            repositoryMock
            .Setup(m => m.GetById(PanelKey))
            .Returns((PanelModel)null);

            var unitOfWorkFactory = GetUnitOfWorkFactory(repositoryMock);

            IFilesPanelStateService filesPanelStateService = new FilesPanelStateService(
                unitOfWorkFactory, PanelKey);

            var emptyState = filesPanelStateService.GetPanelState();

            Assert.NotNull(emptyState);
            Assert.NotNull(emptyState.Tabs);
            Assert.Empty(emptyState.Tabs);
        }
        public void TestSettingsPersistence()
        {
            var collection     = new List <TabModel>();
            var repositoryMock = new Mock <IRepository <PanelModel> >();

            repositoryMock
            .Setup(m => m.GetById(PanelKey))
            .Returns(new PanelModel {
                Tabs = collection
            });
            repositoryMock
            .Setup(m => m.Upsert(PanelKey, It.IsAny <PanelModel>()))
            .Callback <string, PanelModel>((key, panelState) =>
            {
                collection.Clear();
                collection.AddRange(panelState.Tabs);
            });

            var unitOfWorkFactory = GetUnitOfWorkFactory(repositoryMock);

            IFilesPanelStateService filesPanelStateService = new FilesPanelStateService(
                unitOfWorkFactory, PanelKey);

            var tabs = Enumerable
                       .Range(0, 10)
                       .Select(_ => new TabStateModel
            {
                SortingSettings = new SortingSettingsStateModel()
            })
                       .ToList();
            var state = new PanelStateModel {
                Tabs = tabs
            };

            filesPanelStateService.SavePanelState(state);

            var savedState = filesPanelStateService.GetPanelState();

            Assert.NotNull(savedState);
            Assert.NotNull(savedState.Tabs);
            Assert.Equal(tabs.Count, savedState.Tabs.Count);
        }
        public void TestSettingsPersistence()
        {
            var collection     = new List <string>();
            var repositoryMock = new Mock <IRepository <PanelState> >();

            repositoryMock
            .Setup(m => m.GetById(PanelKey))
            .Returns(new PanelState {
                Tabs = collection
            });
            repositoryMock
            .Setup(m => m.Upsert(PanelKey, It.IsAny <PanelState>()))
            .Callback <string, PanelState>((key, panelState) =>
            {
                collection.Clear();
                collection.AddRange(panelState.Tabs);
            });

            var unitOfWorkFactory = GetUnitOfWorkFactory(repositoryMock);

            IFilesPanelStateService filesPanelStateService = new FilesPanelStateService(
                unitOfWorkFactory, PanelKey);

            var tabs  = Enumerable.Range(0, 10).Select(n => n.ToString()).ToArray();
            var state = new PanelState {
                Tabs = tabs.ToList()
            };

            filesPanelStateService.SavePanelState(state);

            var savedState = filesPanelStateService.GetPanelState();

            Assert.NotNull(savedState);
            Assert.NotNull(savedState.Tabs);
            Assert.True(savedState.Tabs.Count == tabs.Length);
            Assert.Equal(tabs, savedState.Tabs);
        }