Skip to content

Commit

Permalink
Adjust AnnotateDeclarationViewModel for new AdjustAttribute capability
Browse files Browse the repository at this point in the history
  • Loading branch information
MDoerner committed Jun 24, 2020
1 parent 5e8a911 commit 5a21194
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 4 deletions.
Expand Up @@ -80,11 +80,30 @@ public IAnnotation Annotation

OnPropertyChanged();
OnPropertyChanged(nameof(IsValidAnnotation));
OnPropertyChanged(nameof(ShowAdjustAttributeOption));
}
}

public ObservableViewModelCollection<IAnnotationArgumentViewModel> AnnotationArguments { get; }

public bool AdjustAttribute
{
get => Model.AdjustAttribute;
set
{
if (value == Model.AdjustAttribute)
{
return;
}

Model.AdjustAttribute = value;

OnPropertyChanged();
}
}

public bool ShowAdjustAttributeOption => Model?.Annotation is IAttributeAnnotation;

private void RefreshAnnotationArguments(IAnnotation annotation)
{
AnnotationArguments.Clear();
Expand Down
2 changes: 1 addition & 1 deletion Rubberduck.Parsing/Symbols/Declaration.cs
Expand Up @@ -289,7 +289,7 @@ public string DescriptionString
{
string literalDescription;

var memberAttribute = Attributes.SingleOrDefault(a => a.Name == $"{IdentifierName}.VB_Description");
var memberAttribute = Attributes.SingleOrDefault(a => a.Name == Attributes.MemberAttributeName("VB_Description", IdentifierName));
if (memberAttribute != null)
{
literalDescription = memberAttribute.Values.SingleOrDefault() ?? string.Empty;
Expand Down
Expand Up @@ -269,6 +269,28 @@ public void RemoveArgument_LastArgumentRemoved()
}
}

[Test]
[Category("Refactorings")]
public void ShowAdjustAttributeOption_AttributeAnnotation_True()
{
var viewModel = TestViewModel(DeclarationType.Procedure);
var annotation = new DescriptionAnnotation();
viewModel.Annotation = annotation;

Assert.IsTrue(viewModel.ShowAdjustAttributeOption);
}

[Test]
[Category("Refactorings")]
public void ShowAdjustAttributeOption_NotAnAttributeAnnotation_False()
{
var viewModel = TestViewModel(DeclarationType.Procedure);
var annotation = new IgnoreAnnotation();
viewModel.Annotation = annotation;

Assert.IsFalse(viewModel.ShowAdjustAttributeOption);
}

[Test]
[Category("Refactorings")]
public void SetAnnotation_ResetsArguments()
Expand All @@ -291,6 +313,20 @@ public void SetAnnotation_SetsAnnotationOnModel()
Assert.AreSame(viewModel.Model.Annotation, annotation);
}

[Test]
[Category("Refactorings")]
[TestCase(true, true)]
[TestCase(false, true)]
[TestCase(true, false)]
[TestCase(false, false)]
public void SetAdjustAttribute_SetsAdjustAttributeOnModel(bool initialValue, bool valueToSet)
{
var viewModel = TestViewModel(DeclarationType.Procedure, initialAdjustAttribute: initialValue);
viewModel.AdjustAttribute = valueToSet;

Assert.AreEqual(viewModel.Model.AdjustAttribute, valueToSet);
}

[Test]
[Category("Refactorings")]
public void ModelIsInputModelFromCreation()
Expand Down Expand Up @@ -321,10 +357,10 @@ public void DialogOK_SetsArguments()
}


private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotation initialAnnotation = null, bool localScope = false)
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotation initialAnnotation = null, bool localScope = false, bool initialAdjustAttribute = false)
{
var argumentFactory = MockArgumentFactory().Object;
return TestViewModel(targetDeclarationType, argumentFactory, initialAnnotation, localScope);
return TestViewModel(targetDeclarationType, argumentFactory, initialAnnotation, localScope, initialAdjustAttribute);
}

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

private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotationArgumentViewModelFactory argumentFactory, IAnnotation initialAnnotation = null, bool localScope = false)
private AnnotateDeclarationViewModel TestViewModel(DeclarationType targetDeclarationType, IAnnotationArgumentViewModelFactory argumentFactory, IAnnotation initialAnnotation = null, bool localScope = false, bool initialAdjustAttribute = false)
{
var targetDeclaration = TestDeclaration(targetDeclarationType, localScope);
var model = new AnnotateDeclarationModel(targetDeclaration, initialAnnotation);
Expand Down

0 comments on commit 5a21194

Please sign in to comment.