public void WorkspaceChanged_SolutionEvents_ClearsExistingProjects_AddsProjectsInSolution(WorkspaceChangeKind kind) { // Arrange var trigger = new WorkspaceProjectSnapshotChangeTrigger(); var projectManager = new TestProjectSnapshotManager(new[] { trigger }, Workspace); // Initialize with a project. This will get removed. var e = new WorkspaceChangeEventArgs(WorkspaceChangeKind.SolutionAdded, oldSolution: EmptySolution, newSolution: SolutionWithOneProject); trigger.Workspace_WorkspaceChanged(Workspace, e); e = new WorkspaceChangeEventArgs(kind, oldSolution: EmptySolution, newSolution: SolutionWithTwoProjects); // Act trigger.Workspace_WorkspaceChanged(Workspace, e); // Assert Assert.Collection( projectManager.Projects.OrderBy(p => p.UnderlyingProject.Name), p => Assert.Equal(ProjectNumberOne.Id, p.UnderlyingProject.Id), p => Assert.Equal(ProjectNumberTwo.Id, p.UnderlyingProject.Id)); }
public void WorkspaceChanged_ProjectRemovedEvent_RemovesProject() { // Arrange var trigger = new WorkspaceProjectSnapshotChangeTrigger(); var projectManager = new TestProjectSnapshotManager(new[] { trigger }, Workspace); // Initialize with some projects project. var e = new WorkspaceChangeEventArgs(WorkspaceChangeKind.SolutionAdded, oldSolution: EmptySolution, newSolution: SolutionWithTwoProjects); trigger.Workspace_WorkspaceChanged(Workspace, e); var solution = SolutionWithTwoProjects.RemoveProject(ProjectNumberOne.Id); e = new WorkspaceChangeEventArgs(WorkspaceChangeKind.ProjectRemoved, oldSolution: SolutionWithTwoProjects, newSolution: solution, projectId: ProjectNumberOne.Id); // Act trigger.Workspace_WorkspaceChanged(Workspace, e); // Assert Assert.Collection( projectManager.Projects.OrderBy(p => p.UnderlyingProject.Name), p => Assert.Equal(ProjectNumberTwo.Id, p.UnderlyingProject.Id)); }