Inheritance: IMenuCommandService
    public GitHubPaneViewModelTests()
    {
        var repositoryHosts = Substitutes.RepositoryHosts;
        repositoryHosts.IsLoggedInToAnyHost.Returns(true);

        var teamExplorerServiceHolder = Substitute.For<ITeamExplorerServiceHolder>();
        var activeRepo = Substitute.For<ILocalRepositoryModel>();
        activeRepo.CloneUrl.Returns(new UriString("https://github.com/foo/foo"));
        teamExplorerServiceHolder
            .When(x => x.Subscribe(Arg.Any<object>(), Arg.Any<Action<ILocalRepositoryModel>>()))
            .Do(x =>
            {
                var invokeAction = x.Arg<Action<ILocalRepositoryModel>>();
                invokeAction(activeRepo);
            });

        var connectionManager = Substitutes.ConnectionManager;
        var connection = Substitutes.Connection;
        var connectionHostAddress = HostAddress.Create(activeRepo.CloneUrl.ToString());
        connection.HostAddress.Returns(connectionHostAddress);
        connectionManager.Connections.Returns(new ObservableCollection<IConnection>(new[] {
                connection
            }));
        connection.Login().Returns(Observable.Return(connection));

        var host = Substitute.For<IRepositoryHost>();
        host.IsLoggedIn.Returns(true);
        repositoryHosts.LookupHost(connectionHostAddress).Returns(host);

        serviceProvider = Substitutes.GetFullyMockedServiceProvider();
        menuCommandService = new FakeMenuCommandService();
        serviceProvider.GetService(typeof(IMenuCommandService)).Returns(menuCommandService);

        var uiProvider = serviceProvider as IUIProvider;
        uiProvider.TryGetService(typeof(IUIProvider)).Returns(serviceProvider);

        uiController = Substitute.For<IUIController>();
        uiController.CurrentFlow.Returns(UIControllerFlow.PullRequests);
        uiController.SelectedFlow.Returns(UIControllerFlow.PullRequests);
        uiController
            .When(x => x.Jump(Arg.Any<ViewWithData>()))
            .Do(x => lastUiControllerJump = x.Arg<ViewWithData>().ViewType);

        var exportFactoryProvider = Substitutes.ExportFactoryProvider;
        uiProvider.TryGetService(typeof(IExportFactoryProvider)).Returns(exportFactoryProvider);
        exportFactoryProvider.UIControllerFactory.Returns(new ExportFactory<IUIController>(
            () => Tuple.Create<IUIController, Action>(uiController, () => { })));

        viewModel = new GitHubPaneViewModel(
            Substitute.For<ISimpleApiClientFactory>(),
            teamExplorerServiceHolder,
            connectionManager,
            repositoryHosts,
            Substitute.For<INotificationDispatcher>());

        viewModel.ActiveRepo = activeRepo;
    }
        public void AddsTopLevelMenuItems()
        {
            var menuService = new FakeMenuCommandService();
            var serviceProvider = Substitute.For<IServiceProvider>();
            serviceProvider.GetService(typeof(IMenuCommandService)).Returns(menuService);
            var package = new GitHubPackageTestWrapper(serviceProvider);
            
            package.CallInitialize();

            Assert.Equal(2, menuService.AddedCommands.Count);
        }
Exemple #3
0
    public GitHubPaneViewModelTests()
    {
        var teamExplorerServiceHolder = Substitute.For <ITeamExplorerServiceHolder>();
        var activeRepo = Substitute.For <ILocalRepositoryModel>();

        activeRepo.CloneUrl.Returns(new UriString("https://github.com/foo/foo"));
        teamExplorerServiceHolder
        .When(x => x.Subscribe(Arg.Any <object>(), Arg.Any <Action <ILocalRepositoryModel> >()))
        .Do(x =>
        {
            var invokeAction = x.Arg <Action <ILocalRepositoryModel> >();
            invokeAction(activeRepo);
        });

        var connectionManager     = Substitutes.ConnectionManager;
        var connection            = Substitutes.Connection;
        var connectionHostAddress = HostAddress.Create(activeRepo.CloneUrl.ToString());

        connection.HostAddress.Returns(connectionHostAddress);
        connectionManager.Connections.Returns(new ObservableCollectionEx <IConnection>(new[] {
            connection
        }));
        connection.IsLoggedIn.Returns(true);

        serviceProvider    = Substitutes.GetFullyMockedServiceProvider();
        menuCommandService = new FakeMenuCommandService();
        serviceProvider.GetService(typeof(IMenuCommandService)).Returns(menuCommandService);

        var uiProvider = serviceProvider as IGitHubServiceProvider;

        uiProvider.TryGetService(typeof(IGitHubServiceProvider)).Returns(serviceProvider);

        uiController = Substitute.For <IUIController>();
        uiController.CurrentFlow.Returns(UIControllerFlow.PullRequestList);
        uiController.SelectedFlow.Returns(UIControllerFlow.PullRequestList);
        //uiController
        //    .When(x => x.LoadView(Arg.Any<ViewWithData>()))
        //    .Do(x => lastUiControllerJump = x.Arg<ViewWithData>().ViewType);

        //var exportFactoryProvider = Substitutes.ExportFactoryProvider;
        //uiProvider.TryGetService(typeof(IExportFactoryProvider)).Returns(exportFactoryProvider);
        //exportFactoryProvider.UIControllerFactory.Returns(new ExportFactory<IUIController>(
        //    () => Tuple.Create<IUIController, Action>(uiController, () => { })));

        //viewModel = new GitHubPaneViewModel(
        //    Substitute.For<ISimpleApiClientFactory>(),
        //    teamExplorerServiceHolder,
        //    connectionManager,
        //    repositoryHosts,
        //    Substitute.For<INotificationDispatcher>());

        //viewModel.ActiveRepo = activeRepo;
    }
        public void AddsTopLevelMenuItems()
        {
            var menuService     = new FakeMenuCommandService();
            var serviceProvider = Substitute.For <IServiceProvider>();

            serviceProvider.GetService(typeof(IMenuCommandService)).Returns(menuService);
            var package = new GitHubPackageTestWrapper(serviceProvider);

            package.CallInitialize();

            Assert.Equal(2, menuService.AddedCommands.Count);
        }