Skip to content

Commit 5a21194

Browse files
committed
Adjust AnnotateDeclarationViewModel for new AdjustAttribute capability
1 parent 5e8a911 commit 5a21194

File tree

3 files changed

+59
-4
lines changed

3 files changed

+59
-4
lines changed

Rubberduck.Core/UI/Refactorings/AnnotateDeclaration/AnnotateDeclarationViewModel.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,30 @@ public IAnnotation Annotation
8080

8181
OnPropertyChanged();
8282
OnPropertyChanged(nameof(IsValidAnnotation));
83+
OnPropertyChanged(nameof(ShowAdjustAttributeOption));
8384
}
8485
}
8586

8687
public ObservableViewModelCollection<IAnnotationArgumentViewModel> AnnotationArguments { get; }
8788

89+
public bool AdjustAttribute
90+
{
91+
get => Model.AdjustAttribute;
92+
set
93+
{
94+
if (value == Model.AdjustAttribute)
95+
{
96+
return;
97+
}
98+
99+
Model.AdjustAttribute = value;
100+
101+
OnPropertyChanged();
102+
}
103+
}
104+
105+
public bool ShowAdjustAttributeOption => Model?.Annotation is IAttributeAnnotation;
106+
88107
private void RefreshAnnotationArguments(IAnnotation annotation)
89108
{
90109
AnnotationArguments.Clear();

Rubberduck.Parsing/Symbols/Declaration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ public string DescriptionString
289289
{
290290
string literalDescription;
291291

292-
var memberAttribute = Attributes.SingleOrDefault(a => a.Name == $"{IdentifierName}.VB_Description");
292+
var memberAttribute = Attributes.SingleOrDefault(a => a.Name == Attributes.MemberAttributeName("VB_Description", IdentifierName));
293293
if (memberAttribute != null)
294294
{
295295
literalDescription = memberAttribute.Values.SingleOrDefault() ?? string.Empty;

RubberduckTests/Refactoring/AnnotateDeclaration/AnnotateDeclarationViewModelTests.cs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,28 @@ public void RemoveArgument_LastArgumentRemoved()
269269
}
270270
}
271271

272+
[Test]
273+
[Category("Refactorings")]
274+
public void ShowAdjustAttributeOption_AttributeAnnotation_True()
275+
{
276+
var viewModel = TestViewModel(DeclarationType.Procedure);
277+
var annotation = new DescriptionAnnotation();
278+
viewModel.Annotation = annotation;
279+
280+
Assert.IsTrue(viewModel.ShowAdjustAttributeOption);
281+
}
282+
283+
[Test]
284+
[Category("Refactorings")]
285+
public void ShowAdjustAttributeOption_NotAnAttributeAnnotation_False()
286+
{
287+
var viewModel = TestViewModel(DeclarationType.Procedure);
288+
var annotation = new IgnoreAnnotation();
289+
viewModel.Annotation = annotation;
290+
291+
Assert.IsFalse(viewModel.ShowAdjustAttributeOption);
292+
}
293+
272294
[Test]
273295
[Category("Refactorings")]
274296
public void SetAnnotation_ResetsArguments()
@@ -291,6 +313,20 @@ public void SetAnnotation_SetsAnnotationOnModel()
291313
Assert.AreSame(viewModel.Model.Annotation, annotation);
292314
}
293315

316+
[Test]
317+
[Category("Refactorings")]
318+
[TestCase(true, true)]
319+
[TestCase(false, true)]
320+
[TestCase(true, false)]
321+
[TestCase(false, false)]
322+
public void SetAdjustAttribute_SetsAdjustAttributeOnModel(bool initialValue, bool valueToSet)
323+
{
324+
var viewModel = TestViewModel(DeclarationType.Procedure, initialAdjustAttribute: initialValue);
325+
viewModel.AdjustAttribute = valueToSet;
326+
327+
Assert.AreEqual(viewModel.Model.AdjustAttribute, valueToSet);
328+
}
329+
294330
[Test]
295331
[Category("Refactorings")]
296332
public void ModelIsInputModelFromCreation()
@@ -321,10 +357,10 @@ public void DialogOK_SetsArguments()
321357
}
322358

323359

324-
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotation initialAnnotation = null, bool localScope = false)
360+
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotation initialAnnotation = null, bool localScope = false, bool initialAdjustAttribute = false)
325361
{
326362
var argumentFactory = MockArgumentFactory().Object;
327-
return TestViewModel(targetDeclarationType, argumentFactory, initialAnnotation, localScope);
363+
return TestViewModel(targetDeclarationType, argumentFactory, initialAnnotation, localScope, initialAdjustAttribute);
328364
}
329365

330366
private Mock<IAnnotationArgumentViewModelFactory> MockArgumentFactory(IReadOnlyList<bool> hasErrorSpecifications = null)
@@ -353,7 +389,7 @@ private Mock<IAnnotationArgumentViewModel> MockArgument(AnnotationArgumentType a
353389
return mockArgument;
354390
}
355391

356-
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotationArgumentViewModelFactory argumentFactory, IAnnotation initialAnnotation = null, bool localScope = false)
392+
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotationArgumentViewModelFactory argumentFactory, IAnnotation initialAnnotation = null, bool localScope = false, bool initialAdjustAttribute = false)
357393
{
358394
var targetDeclaration = TestDeclaration(targetDeclarationType, localScope);
359395
var model = new AnnotateDeclarationModel(targetDeclaration, initialAnnotation);

0 commit comments

Comments
 (0)