Пример #1
0
        public async Task WhenAskedForLaunchProfileItemTypes_GetItemsAsyncReturnsAnItemForEachProfile()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var items = await itemProvider.GetItemsAsync(LaunchProfileProjectItemProvider.ItemType);

            Assert.Collection(items,
                              item => Assert.Equal("Profile1", item.EvaluatedInclude),
                              item => Assert.Equal("Profile2", item.EvaluatedInclude));

            items = await itemProvider.GetItemsAsync(LaunchProfileProjectItemProvider.ItemType, "Profile2");

            Assert.Collection(items,
                              item => Assert.Equal("Profile2", item.EvaluatedInclude));
        }
Пример #2
0
        public async Task WhenProjectPropertyContextHasLaunchProfileItemType_GetItemsAsyncReturnsAnItemWithAMatchingName()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var context = new TestProjectPropertiesContext(
                isProjectFile: true,
                file: "Foo",
                itemType: LaunchProfileProjectItemProvider.ItemType,
                itemName: "Profile2");

            var item = await itemProvider.GetItemAsync(context);

            Assert.NotNull(item);
            Assert.Equal("Profile2", item.EvaluatedInclude);
        }
Пример #3
0
        public async Task WhenProjectPropertyContextHasTheWrongItemType_GetItemsAsyncReturnsNull()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var context = new TestProjectPropertiesContext(
                isProjectFile: true,
                file: "Foo",
                itemType: "RandomItemType",
                itemName: "Profile2");

            var item = await itemProvider.GetItemAsync(context);

            Assert.Null(item);
        }
Пример #4
0
            public ProjectItem(string name, string projectFilePath, LaunchProfileProjectItemProvider provider)
            {
                _name            = name;
                _projectFilePath = projectFilePath;
                _provider        = provider;

                PropertiesContext = new ProjectPropertiesContext(name, projectFilePath);
            }
Пример #5
0
        public async Task GetItemTypesAsync_ReturnsLaunchProfile()
        {
            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                ILaunchSettingsProviderFactory.Create());

            var itemTypes = await itemProvider.GetItemTypesAsync();

            Assert.Single(itemTypes, LaunchProfileProjectItemProvider.ItemType);
        }
Пример #6
0
        public async Task WhenThereAreNoLaunchProfiles_GetItemsAsyncReturnsAnEmptyEnumerable()
        {
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new LaunchProfile[0]);

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var items = await itemProvider.GetItemsAsync();

            Assert.Empty(items);
        }
Пример #7
0
        public async Task WhenAddingAnItem_AnExceptionIsThrownIfTheItemTypeIsWrong()
        {
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create();

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            await Assert.ThrowsAsync <ArgumentException>(async() =>
            {
                var item = await itemProvider.AddAsync(itemType: "RandomItemType", include: "Alpha Profile");
            });
        }
Пример #8
0
        public async Task WhenThereAreLaunchProfiles_GetExistingItemTypesAsyncReturnsASingleItem()
        {
            var profile = new WritableLaunchProfile {
                Name = "Test"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var existingItemTypes = await itemProvider.GetExistingItemTypesAsync();

            Assert.Single(existingItemTypes, LaunchProfileProjectItemProvider.ItemType);
        }
Пример #9
0
        public async Task WhenFindingAnItemByName_NullIsReturnedIfNoMatchingItemExists()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var item = await itemProvider.FindItemByNameAsync("Profile3");

            Assert.Null(item);
        }
Пример #10
0
        public async Task WhenFindingAnItemByName_TheMatchingItemIsReturnedIfItExists()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var item = await itemProvider.FindItemByNameAsync("Profile2");

            Assert.NotNull(item);
            Assert.Equal(expected: "Profile2", actual: item.EvaluatedInclude);
        }
Пример #11
0
        public async Task WhenAddingAnItem_TheReturnedItemHasTheCorrectName()
        {
            ILaunchProfile?newProfile             = null;
            var            launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                addOrUpdateProfileCallback: (p, a) =>
            {
                newProfile = p;
            },
                getProfilesCallback: initialProfiles =>
            {
                Assert.NotNull(newProfile);
                return(initialProfiles.Add(newProfile));
            });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var item = await itemProvider.AddAsync(itemType : LaunchProfileProjectItemProvider.ItemType, include : "Alpha Profile");

            Assert.Equal(expected: "Alpha Profile", actual: item !.EvaluatedInclude);
            Assert.Equal(expected: "Alpha Profile", actual: item !.UnevaluatedInclude);
        }
Пример #12
0
        public async Task WhenAskedForOtherItemTypes_GetItemsAsyncReturnsAnEmptyEnumerable()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[] { profile1.ToLaunchProfile(), profile2.ToLaunchProfile() });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var items = await itemProvider.GetItemsAsync("RandomItemType");

            Assert.Empty(items);

            items = await itemProvider.GetItemsAsync("RandomItemType", "Profile2");

            Assert.Empty(items);
        }
Пример #13
0
        public async Task WhenGivenMultipleProjectPropertyContexts_GetItemsAsyncReturnsNullOrAnItemForEach()
        {
            var profile1 = new WritableLaunchProfile {
                Name = "Profile1"
            };
            var profile2 = new WritableLaunchProfile {
                Name = "Profile2"
            };
            var profile3 = new WritableLaunchProfile {
                Name = "Profile3"
            };
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                launchProfiles: new[]
            {
                profile1.ToLaunchProfile(),
                profile2.ToLaunchProfile(),
                profile3.ToLaunchProfile()
            });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            List <IProjectPropertiesContext> contexts = new()
            {
                new TestProjectPropertiesContext(true, "Foo", null, "Profile3"),
                new TestProjectPropertiesContext(true, "Foo", "RandomItemType", "Profile2"),
                new TestProjectPropertiesContext(true, "Foo", LaunchProfileProjectItemProvider.ItemType, "Profile1")
            };

            var items = await itemProvider.GetItemsAsync(contexts);

            Assert.Collection(items,
                              item => Assert.Equal("Profile3", item !.EvaluatedInclude),
                              item => Assert.Null(item),
                              item => Assert.Equal("Profile1", item !.EvaluatedInclude));
        }
Пример #14
0
        public async Task WhenAddingMultipleItems_TheReturnedItemsHaveTheCorrectNames()
        {
            ImmutableList <ILaunchProfile> newProfiles = ImmutableList <ILaunchProfile> .Empty;;
            var launchSettingsProvider = ILaunchSettingsProviderFactory.Create(
                addOrUpdateProfileCallback: (p, a) =>
            {
                newProfiles = newProfiles.Add(p);
            },
                getProfilesCallback: initialProfiles =>
            {
                return(initialProfiles.AddRange(newProfiles));
            });

            var itemProvider = new LaunchProfileProjectItemProvider(
                UnconfiguredProjectFactory.Create(),
                launchSettingsProvider);

            var items = await itemProvider.AddAsync(
                new Tuple <string, string, IEnumerable <KeyValuePair <string, string> >?>[]
            {
                new(LaunchProfileProjectItemProvider.ItemType, "Alpha Profile", null),
                new(LaunchProfileProjectItemProvider.ItemType, "Beta Profile", null),
                new(LaunchProfileProjectItemProvider.ItemType, "Gamma Profile", null),
            });