public void CreateNewProject()
        {
            var project = new Mock <IProject>();

            var service = new Mock <IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny <CommandId>()))
                .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()))
                .Callback <CommandId, ICommandContext>(
                    (id, context) =>
                {
                    CreateProjectContext createContext = context as CreateProjectContext;
                    createContext.Result = Task <IProject> .Factory.StartNew(
                        () => project.Object,
                        new CancellationToken(),
                        TaskCreationOptions.None,
                        new CurrentThreadTaskScheduler());
                })
                .Verifiable();
            }

            var facade = new ScriptFrontEndProjectHub(new ScriptBackEndProjectHub(new ProjectHub(service.Object)));

            facade.NewProject();

            Assert.IsTrue(facade.HasActiveProject());
            service.Verify(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <CreateProjectContext>()), Times.Exactly(1));
        }
        public void CreateNewProjectWithLoadingFailure()
        {
            var service = new Mock <IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny <CommandId>()))
                .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()))
                .Callback <CommandId, ICommandContext>(
                    (id, context) =>
                {
                    CreateProjectContext createContext = context as CreateProjectContext;
                    createContext.Result = null;
                })
                .Verifiable();
            }

            var facade = new ScriptFrontEndProjectHub(new ScriptBackEndProjectHub(new ProjectHub(service.Object)));

            Assert.Throws <FailedToCreateProjectException>(() => facade.NewProject());
            service.Verify(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <CreateProjectContext>()), Times.Exactly(1));
        }