|
1 | 1 | // Copyright (c) Microsoft Corporation. |
2 | 2 | // Licensed under the MIT License. |
3 | 3 |
|
| 4 | +using System; |
4 | 5 | using Microsoft.Extensions.Logging.Abstractions; |
5 | 6 | using Microsoft.PowerShell.EditorServices.Handlers; |
6 | 7 | using Microsoft.PowerShell.EditorServices.Services; |
@@ -127,49 +128,39 @@ public async Task RenamedVariable(RenameTestTarget s) |
127 | 128 | Assert.Equal(expected, actual); |
128 | 129 | } |
129 | 130 |
|
130 | | - [Fact] |
131 | | - public void GetRegistrationOptionsDoesNotThrowWhenCapabilityIsNull() |
| 131 | + public enum RegistrationHandlerKind |
132 | 132 | { |
133 | | - // Acts: framework hands us null when client omits the capability. |
134 | | - RenameRegistrationOptions opts = testHandler.GetRegistrationOptions( |
135 | | - capability: null, |
136 | | - clientCapabilities: new ClientCapabilities()); |
137 | | - |
138 | | - Assert.NotNull(opts); |
139 | | - // Without PrepareSupport advertised, PrepareProvider should be false. |
140 | | - Assert.False(opts.PrepareProvider); |
| 133 | + Rename, |
| 134 | + PrepareRename |
141 | 135 | } |
142 | 136 |
|
143 | | - [Fact] |
144 | | - public void GetRegistrationOptionsHonorsPrepareSupportWhenCapabilityProvided() |
| 137 | + // A null prepareSupport represents the client omitting the capability entirely (framework hands us null). |
| 138 | + public static TheoryData<RegistrationHandlerKind, bool?, bool> RegistrationOptionsTestCases() => new() |
145 | 139 | { |
146 | | - RenameRegistrationOptions opts = testHandler.GetRegistrationOptions( |
147 | | - capability: new RenameCapability { PrepareSupport = true }, |
148 | | - clientCapabilities: new ClientCapabilities()); |
149 | | - |
150 | | - Assert.NotNull(opts); |
151 | | - Assert.True(opts.PrepareProvider); |
152 | | - } |
| 140 | + { RegistrationHandlerKind.Rename, null, false }, |
| 141 | + { RegistrationHandlerKind.Rename, true, true }, |
| 142 | + { RegistrationHandlerKind.PrepareRename, null, false }, |
| 143 | + { RegistrationHandlerKind.PrepareRename, true, true } |
| 144 | + }; |
153 | 145 |
|
154 | | - [Fact] |
155 | | - public void PrepareGetRegistrationOptionsDoesNotThrowWhenCapabilityIsNull() |
| 146 | + [Theory] |
| 147 | + [MemberData(nameof(RegistrationOptionsTestCases))] |
| 148 | + public void GetRegistrationOptionsReflectsPrepareSupport(RegistrationHandlerKind handlerKind, bool? prepareSupport, bool expectedPrepareProvider) |
156 | 149 | { |
157 | | - RenameRegistrationOptions opts = testPrepareHandler.GetRegistrationOptions( |
158 | | - capability: null, |
159 | | - clientCapabilities: new ClientCapabilities()); |
| 150 | + RenameCapability capability = prepareSupport is bool ps |
| 151 | + ? new RenameCapability { PrepareSupport = ps } |
| 152 | + : null; |
160 | 153 |
|
161 | | - Assert.NotNull(opts); |
162 | | - Assert.False(opts.PrepareProvider); |
163 | | - } |
| 154 | + Func<RenameCapability, ClientCapabilities, RenameRegistrationOptions> getRegistrationOptions = handlerKind switch |
| 155 | + { |
| 156 | + RegistrationHandlerKind.Rename => testHandler.GetRegistrationOptions, |
| 157 | + RegistrationHandlerKind.PrepareRename => testPrepareHandler.GetRegistrationOptions, |
| 158 | + _ => throw new ArgumentOutOfRangeException(nameof(handlerKind)) |
| 159 | + }; |
164 | 160 |
|
165 | | - [Fact] |
166 | | - public void PrepareGetRegistrationOptionsHonorsPrepareSupportWhenCapabilityProvided() |
167 | | - { |
168 | | - RenameRegistrationOptions opts = testPrepareHandler.GetRegistrationOptions( |
169 | | - capability: new RenameCapability { PrepareSupport = true }, |
170 | | - clientCapabilities: new ClientCapabilities()); |
| 161 | + RenameRegistrationOptions opts = getRegistrationOptions(capability, new ClientCapabilities()); |
171 | 162 |
|
172 | 163 | Assert.NotNull(opts); |
173 | | - Assert.True(opts.PrepareProvider); |
| 164 | + Assert.Equal(expectedPrepareProvider, opts.PrepareProvider); |
174 | 165 | } |
175 | 166 | } |
0 commit comments