public async Task ReturnsFetchObservablesWhenNoAccessWasLost()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource, analyticsService);

                var transition = await state.Start(fetchObservables);

                var parameter = ((Transition <IFetchObservables>)transition).Parameter;

                parameter.Should().Be(fetchObservables);
            }
            public async Task ReturnsWorkspacesAndFetchObservableWhenAccessToSomeWorkspaceWasLost()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource, analyticsService);

                var transition = await state.Start(fetchObservables);

                var parameter = ((Transition <MarkWorkspacesAsInaccessibleParams>)transition).Parameter;

                parameter.Workspaces.Should().OnlyContain(workspace => workspace.Id == 3);
                parameter.FetchObservables.Should().Be(fetchObservables);
            }
Exemple #3
0
            public async Task MarksWorkspacesWhichAreStoredLocallyButAreNotInTheListFromTheServerAsGhosts()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                transition.Result.Should().Be(state.Continue);
                await dataSource.Received()
                .Update(Arg.Is <IThreadSafeWorkspace>(workspace => workspace.Id == 2 && workspace.IsGhost));

                await dataSource.Received()
                .Update(Arg.Is <IThreadSafeWorkspace>(workspace => workspace.Id == 3 && workspace.IsGhost));
            }
            public async Task IgnoresInaccessibleWorkspaces()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3, IsInaccessible = true
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource, analyticsService);

                var transition = await state.Start(fetchObservables);

                var parameter = ((Transition <MarkWorkspacesAsInaccessibleParams>)transition).Parameter;

                parameter.Workspaces.Should().OnlyContain(workspace => workspace.Id == 2);
            }
Exemple #5
0
            public async Task DoesNotMarkAnyWorkspaceAsGhostWhenNoAccessIsLostSinceLastTime()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3, IsGhost = true
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                transition.Result.Should().Be(state.Continue);
                await dataSource.DidNotReceive().Update(Arg.Any <IThreadSafeWorkspace>());
            }
Exemple #6
0
            public async Task IgnoresGhostWorkspaces()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3, IsGhost = true
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                transition.Result.Should().Be(state.Continue);
                await dataSource.Received()
                .Update(Arg.Is <IThreadSafeWorkspace>(workspace => workspace.Id == 2 && workspace.IsGhost));
            }
Exemple #7
0
            public async Task IgnoresWorkspacesWhichAreStoredOnlyLocally()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = -3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                var parameter = ((Transition <IEnumerable <IThreadSafeWorkspace> >)transition).Parameter.ToList();

                transition.Result.Should().Be(state.LostAccessTo);
                parameter.Should().HaveCount(1);
                parameter[0].Id.Should().Be(2);
            }
Exemple #8
0
            public async Task ReturnsListOfWorkspacesWhichAreStoredLocallyButAreNotInTheListFromTheServer()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                var parameter = ((Transition <IEnumerable <IThreadSafeWorkspace> >)transition).Parameter.ToList();

                transition.Result.Should().Be(state.LostAccessTo);
                parameter.Should().HaveCount(2);
                parameter.Should().Contain(ws => ws.Id == 2);
                parameter.Should().Contain(ws => ws.Id == 3);
            }
Exemple #9
0
            public async Task ReturnsNoAccessLostResultWhenNoAccessIsLost()
            {
                prepareDatabase(new[]
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                prepareFetch(new List <IWorkspace>
                {
                    new MockWorkspace {
                        Id = 1
                    },
                    new MockWorkspace {
                        Id = 2
                    },
                    new MockWorkspace {
                        Id = 3
                    }
                });
                var state = new DetectLosingAccessToWorkspacesState(dataSource);

                var transition = await state.Start(fetchObservables);

                transition.Result.Should().Be(state.NoAccessLost);
            }