-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HaveAnyAttributes seams to check that all exist is that how it should work? #257
Comments
Hi @jnormen, thank you for your question. To me the method
You can also check the following simple Xunit example. The first test passes since the classes all have at least one of the attributes [Fact]
public void HaveAnyAttributesPassingTest()
{
var classesWithAtLeastOneAttribute = Classes()
.That()
.Are(typeof(ClassWithAttribute1), typeof(ClassWithAttribute2), typeof(ClassWithBothAttributes))
.Should()
.HaveAnyAttributes(typeof(Test1), typeof(Test2), typeof(Test3));
classesWithAtLeastOneAttribute.Check(Architecture);
}
[Fact]
public void HaveAnyAttributesFailingTest()
{
var classesWithoutOneOfTheAttributes = Classes()
.That()
.Are(typeof(ClassWithoutAttributes), typeof(ClassWithDifferentAttribute))
.Should()
.HaveAnyAttributes(typeof(Test1), typeof(Test2), typeof(Test3));
classesWithoutOneOfTheAttributes.Check(Architecture);
}
[Test1]
internal class ClassWithAttribute1 { }
[Test2]
[Test4]
internal class ClassWithAttribute2 { }
[Test1]
[Test2]
internal class ClassWithBothAttributes { }
internal class ClassWithoutAttributes { }
[Test4]
internal class ClassWithDifferentAttribute{ }
internal class Test1 : Attribute { }
internal class Test2 : Attribute { }
internal class Test3 : Attribute { }
internal class Test4 : Attribute { } If you still observe unexpected behavior with the method feel free to add a minimal example to your question. |
GetAttribute is a Refit Atribute. When I do like this the test expect there shall be an Interface using this attribute. So if I do: And I have a GetAttribut no Post it complains there is no Post. And if I have a Post but no Get it says the opposite. for example:
ArchUnitNET.Domain.Exceptions.TypeDoesNotExistInArchitecture: Type Refit.GetAttribute does not exist in provided architecture or is no attribute. When I wrote the issue I did not check the source code, and now when I answer I haven't checked the source code either, but I see that I use Interface() not classes and are not sure if the implementation is different. I'm on the move now so just wanted to add a fast example as is. I did not use the .Are(typeof(ClassWithAttribute1), typeof(ClassWithAttribute2), typeof(ClassWithBothAttributes)) |
When I do:
HaveAnyAttributes(....)
It always require me to have the first attribute set. but when I also add a list of other attributes it force me to have them as well.
.HaveAnyAttributes(typeof(GetAttribute), typeof(PostAttribute), typeof(PutAttribute), typeof(DeleteAttribute))
The text was updated successfully, but these errors were encountered: