public void DependenciesViewModelFactoryTests_CreateRootViewModel()
        {
            var project    = UnconfiguredProjectFactory.Create();
            var dependency = IDependencyFactory.FromJson(@"
{
    ""ProviderType"": ""MyProvider1"",
    ""Id"": ""ZzzDependencyRoot"",
    ""Name"":""ZzzDependencyRoot"",
    ""Caption"":""ZzzDependencyRoot""
}", icon: KnownMonikers.AboutBox);

            var subTreeProvider1 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider1",
                createRootDependencyNode: dependency);
            var subTreeProvider2 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider2");

            var factory = new TestableDependenciesViewModelFactory(project, new[] { subTreeProvider1, subTreeProvider2 });

            var result = factory.CreateRootViewModel("MyProvider1", hasUnresolvedDependency: false);

            Assert.NotNull(result);
            Assert.Equal("ZzzDependencyRoot", result.Caption);
            Assert.Equal(KnownMonikers.AboutBox, result.Icon);
        }
예제 #2
0
        public void CreateRootViewModel()
        {
            var project = UnconfiguredProjectFactory.Create();

            var dependencyModel = new TestDependencyModel
            {
                ProviderType = "MyProvider1",
                Id           = "ZzzDependencyRoot",
                Name         = "ZzzDependencyRoot",
                Caption      = "ZzzDependencyRoot",
                Icon         = KnownMonikers.AboutBox
            };

            var subTreeProvider1 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider1",
                createRootDependencyNode: dependencyModel);
            var subTreeProvider2 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider2");

            var factory = new TestableDependenciesViewModelFactory(project, new[] { subTreeProvider1, subTreeProvider2 });

            var result = factory.CreateRootViewModel("MyProvider1", hasUnresolvedDependency: false);

            Assert.NotNull(result);
            Assert.Equal("ZzzDependencyRoot", result.Caption);
            Assert.Equal(KnownMonikers.AboutBox, result.Icon);
        }
        public void CreateGroupNodeViewModel()
        {
            var project = UnconfiguredProjectFactory.Create();

            var dependencyModel = new TestDependencyModel
            {
                ProviderType     = "MyProvider1",
                Id               = "ZzzDependencyRoot",
                OriginalItemSpec = "ZzzDependencyRoot",
                Caption          = "ZzzDependencyRoot",
                Icon             = KnownMonikers.AboutBox
            };

            var subTreeProvider1 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider1",
                createRootDependencyNode: dependencyModel);
            var subTreeProvider2 = IProjectDependenciesSubTreeProviderFactory.Implement(
                providerType: "MyProvider2");

            var factory = new TestableDependenciesViewModelFactory(project, new[] { subTreeProvider1, subTreeProvider2 });

            var result = factory.CreateGroupNodeViewModel("MyProvider1", maximumDiagnosticLevel: DiagnosticLevel.None);

            Assert.NotNull(result);
            Assert.Equal("ZzzDependencyRoot", result !.Caption);
            Assert.Equal(KnownMonikers.AboutBox, result.Icon);
        }
예제 #4
0
        public void BeforeAddOrUpdate_WhenNeedToApplyImplicit_ShouldSetProperties()
        {
            const string providerType    = "providerType";
            const string projectItemSpec = "projectItemSpec";
            var          implicitIcon    = KnownMonikers.Abbreviation;

            var dependency = new TestDependency
            {
                Id               = "dependency1",
                ProviderType     = providerType,
                TopLevel         = true,
                Implicit         = false,
                Resolved         = true,
                Flags            = DependencyTreeFlags.GenericDependencyFlags,
                OriginalItemSpec = projectItemSpec,
                IconSet          = new DependencyIconSet(KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference)
            };

            var worldBuilder = new IDependency[] { dependency }.ToImmutableDictionary(d => d.Id).ToBuilder();

            var context = new AddDependencyContext(worldBuilder);

            var filter = new ImplicitTopLevelDependenciesSnapshotFilter();

            var subTreeProvider = IProjectDependenciesSubTreeProviderFactory.ImplementInternal(
                providerType: providerType,
                implicitIcon: implicitIcon);

            filter.BeforeAddOrUpdate(
                null,
                null,
                dependency,
                new Dictionary <string, IProjectDependenciesSubTreeProvider> {
                { providerType, subTreeProvider }
            },
                ImmutableHashSet <string> .Empty,
                context);

            var acceptedDependency = context.GetResult(filter);

            // Returns changed dependency
            Assert.NotNull(acceptedDependency);
            Assert.NotSame(dependency, acceptedDependency);

            acceptedDependency.AssertEqualTo(
                new TestDependency
            {
                ClonePropertiesFrom = dependency,
                Implicit            = true,
                IconSet             = new DependencyIconSet(
                    implicitIcon,
                    implicitIcon,
                    KnownMonikers.Reference,
                    KnownMonikers.Reference)
            });

            // No other changes made
            Assert.False(context.Changed);
        }
        public void BeforeAddOrUpdate_WhenNeedToApplyImplicit_ShouldSetProperties()
        {
            const string providerType    = "providerType";
            const string projectItemSpec = "projectItemSpec";
            var          implicitIcon    = KnownMonikers.Abbreviation;

            var dependency = new TestDependency
            {
                Id               = "dependency1",
                ProviderType     = providerType,
                Implicit         = false,
                Resolved         = true,
                Flags            = DependencyTreeFlags.GenericResolvedDependencyFlags,
                OriginalItemSpec = projectItemSpec,
                IconSet          = new DependencyIconSet(KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference)
            };

            var dependencyById = new Dictionary <(string ProviderType, string ModelId), IDependency>
            {
                { (dependency.ProviderType, dependency.Id), dependency }
            };

            var context = new AddDependencyContext(dependencyById);

            var filter = new ImplicitDependenciesSnapshotFilter();

            var subTreeProvider = IProjectDependenciesSubTreeProviderFactory.ImplementInternal(
                providerType: providerType,
                implicitIcon: implicitIcon);

            filter.BeforeAddOrUpdate(
                dependency,
                new Dictionary <string, IProjectDependenciesSubTreeProvider> {
                { providerType, subTreeProvider }
            },
                ImmutableHashSet <string> .Empty,
                context);

            var acceptedDependency = context.GetResult(filter);

            // Returns changed dependency
            Assert.NotNull(acceptedDependency);
            Assert.NotSame(dependency, acceptedDependency);
            DependencyAssert.Equal(
                new TestDependency
            {
                ClonePropertiesFrom = dependency,
                Implicit            = true,
                IconSet             = new DependencyIconSet(
                    implicitIcon,
                    implicitIcon,
                    KnownMonikers.Reference,
                    KnownMonikers.Reference),
                Flags = DependencyTreeFlags.GenericResolvedDependencyFlags.Except(DependencyTreeFlags.SupportsRemove)
            }, acceptedDependency !);

            // No other changes made
            Assert.False(context.Changed);
        }
예제 #6
0
        public void CreateRootViewModelReturnsNullForUnknownProviderType()
        {
            var project = UnconfiguredProjectFactory.Create();

            var subTreeProvider1 = IProjectDependenciesSubTreeProviderFactory.Implement(providerType: "MyProvider1");

            var factory = new TestableDependenciesViewModelFactory(project, new[] { subTreeProvider1 });

            var result = factory.CreateRootViewModel("UnknownProviderType", hasUnresolvedDependency: false);

            Assert.Null(result);
        }
        public void CreateGroupNodeViewModel_ReturnsNullForUnknownProviderType()
        {
            var project = UnconfiguredProjectFactory.Create();

            var subTreeProvider1 = IProjectDependenciesSubTreeProviderFactory.Implement(providerType: "MyProvider1");

            var factory = new TestableDependenciesViewModelFactory(project, new[] { subTreeProvider1 });

            var result = factory.CreateGroupNodeViewModel("UnknownProviderType", maximumDiagnosticLevel: DiagnosticLevel.None);

            Assert.Null(result);
        }
예제 #8
0
        public void WhenNeedToApplyImplicit_ShouldSetProperties()
        {
            var dependency = IDependencyFactory.Implement(
                id: "mydependency2",
                providerType: "myProvider",
                topLevel: true,
                isImplicit: false,
                resolved: true,
                flags: DependencyTreeFlags.GenericDependencyFlags,
                originalItemSpec: "myprojectitem",
                setPropertiesImplicit: true,
                iconSet: new DependencyIconSet(KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference, KnownMonikers.Reference),
                setPropertiesIconSet: new DependencyIconSet(KnownMonikers.Abbreviation, KnownMonikers.Abbreviation, KnownMonikers.Reference, KnownMonikers.Reference));

            var worldBuilder = new Dictionary <string, IDependency>()
            {
                { dependency.Object.Id, dependency.Object }
            }.ToImmutableDictionary().ToBuilder();

            var subTreeProvider = IProjectDependenciesSubTreeProviderFactory.ImplementInternal(
                providerType: "myProvider",
                icon: KnownMonikers.Abbreviation);

            var filter           = new ImplicitTopLevelDependenciesSnapshotFilter();
            var resultDependency = filter.BeforeAdd(
                null,
                null,
                dependency.Object,
                worldBuilder,
                null,
                new Dictionary <string, IProjectDependenciesSubTreeProvider>
            {
                { subTreeProvider.ProviderType, subTreeProvider }
            },
                new HashSet <string>(),
                out bool filterAnyChanges);

            Assert.Equal(dependency.Object.Id, resultDependency.Id);
            Assert.True(filterAnyChanges);

            dependency.VerifyAll();
        }