private InterceptedProjectPropertiesProviderBase CreateInstance(FrameworkName configuredTargetFramework) { var data = new PropertyPageData() { Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.TargetFrameworkMonikerProperty, Value = configuredTargetFramework.FullName }; var project = UnconfiguredProjectFactory.Create(); var properties = ProjectPropertiesFactory.Create(project, data); var delegateProvider = IProjectPropertiesProviderFactory.Create(); var instancePropertiesMock = IProjectPropertiesFactory .MockWithProperty(TargetFrameworkPropertyName); var instanceProperties = instancePropertiesMock.Object; var instanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(instanceProperties); var targetFrameworkProvider = new TargetFrameworkValueProvider(properties); var providerMetadata = IInterceptingPropertyValueProviderMetadataFactory.Create(TargetFrameworkPropertyName); var lazyArray = new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>( () => targetFrameworkProvider, providerMetadata) }; return(new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(delegateProvider, instanceProvider, project, lazyArray)); }
public async Task VerifySetKeyFilePropertyAsync() { string projectFolder = @"C:\project\root"; string projectFullPath = $@"{projectFolder}\project.testproj"; string keyFileName = "KeyFile.snk"; string keyFileFullPath = $@"{projectFolder}\{keyFileName}"; var instancePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues( new Dictionary <string, string?> { { AssemblyOriginatorKeyFilePropertyName, keyFileFullPath } }); var instanceProperties = instancePropertiesMock.Object; var instanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(instanceProperties); // Verify get key file value without intercepted provider. var properties = instanceProvider.GetCommonProperties(null !); var propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName); Assert.Equal(keyFileFullPath, propertyValue); // Verify relative path key file value from intercepted key file provider. var project = UnconfiguredProjectFactory.Create(fullPath: projectFullPath); var delegateProvider = IProjectPropertiesProviderFactory.Create(); var keyFileProvider = new AssemblyOriginatorKeyFileValueProvider(project); var providerMetadata = IInterceptingPropertyValueProviderMetadataFactory.Create(AssemblyOriginatorKeyFilePropertyName); var lazyArray = new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>( () => keyFileProvider, providerMetadata) }; var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(delegateProvider, instanceProvider, project, lazyArray); var propertyNames = await properties.GetPropertyNamesAsync(); Assert.Single(propertyNames); Assert.Equal(AssemblyOriginatorKeyFilePropertyName, propertyNames.First()); properties = interceptedProvider.GetCommonProperties(null !); string newKeyFileName = "KeyFile2.snk"; string newKeyFileFullPath = $@"{projectFolder}\{newKeyFileName}"; await properties.SetPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName, newKeyFileFullPath); propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName); Assert.Equal(newKeyFileName, propertyValue); }
public async Task VerifyInterceptedViaSnapshotInstanceCommonPropertiesProviderAsync() { var delegatePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues( new Dictionary <string, string?> { { MockPropertyName, "DummyValue" } }); var delegateProperties = delegatePropertiesMock.Object; var delegateInstanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(delegateProperties); bool getEvaluatedInvoked = false; bool getUnevaluatedInvoked = false; bool setValueInvoked = false; var mockPropertyProvider = IInterceptingPropertyValueProviderFactory.Create(MockPropertyName, onGetEvaluatedPropertyValue: (v, p) => { getEvaluatedInvoked = true; return(v); }, onGetUnevaluatedPropertyValue: (v, p) => { getUnevaluatedInvoked = true; return(v); }, onSetPropertyValue: (v, p, d) => { setValueInvoked = true; return(v); }); var unconfiguredProject = UnconfiguredProjectFactory.Create(); var provider = IProjectPropertiesProviderFactory.Create(); var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(provider, delegateInstanceProvider, unconfiguredProject, new[] { mockPropertyProvider }); var properties = interceptedProvider.GetCommonProperties(projectInstance: null); // Verify interception for GetEvaluatedPropertyValueAsync. string?propertyValue = await properties.GetEvaluatedPropertyValueAsync(MockPropertyName); Assert.True(getEvaluatedInvoked); // Verify interception for GetUnevaluatedPropertyValueAsync. propertyValue = await properties.GetUnevaluatedPropertyValueAsync(MockPropertyName); Assert.True(getUnevaluatedInvoked); // Verify interception for SetPropertyValueAsync. await properties.SetPropertyValueAsync(MockPropertyName, "NewValue", null); Assert.True(setValueInvoked); }