Because it's not my native language ;)
2010/9/30 Rafael <[email protected]> > hahahha, > > I think the documentation part painful too but why you say that in > english is the the toughest part? > > > On Sep 30, 10:06 am, Yann Trevin <[email protected]> wrote: > > Some documentation about Assert.HasAttribute is now available in the > wiki.http://gallio.org/wiki/doku.php?id=mbunit:assertions:attribute > > > > <rant> > > Documenting stuff in English is always the toughest part :) > > </rant> > > > > 2010/9/28 Yann Trevin <[email protected]> > > > > > > > > > You are welcome, Rafael > > > > > We are always looking for contributors. There are tons< > http://gallio.org/wiki/doku.php?id=gallio:ideas>of > > > stuff <http://gallio.org/wiki/doku.php?id=mbunit:ideas> to implement< > http://code.google.com/p/mb-unit/issues/list?can=2&q=milestone%3D3.3+...> > or > > > to improve< > http://code.google.com/p/mb-unit/issues/list?can=2&q=milestone%3D3.3+...>. > Feel > > > free to submit patches if you want. > > > > > Regards, > > > Yann. > > > > > 2010/9/28 Rafael <[email protected]> > > > > > Awesome! > > > > >> I was starting to take a loot on the framework code and how to > > >> contribute but you already have this! > > >> As soon I got some time I'm going to explore the this! > > > > >> Thanks, > > >> Rafael > > > > >> On Sep 27, 4:20 pm, Yann Trevin <[email protected]> wrote: > > >> > Hi Raphael, > > > > >> > It's documented nowhere yet, but *Assert.HasAttribute* is available > in > > >> > v3.3.13 <http://ccnet.gallio.org/Distributables/> (and later). > > > > >> > It might be used like this: > > > > >> > [TestFixture] > > >> > [TestsOn(typeof(RegisterModel))] > > > > >> > public class RegisterModelTest > > >> > { > > >> > [Test] > > >> > public void Type_should_have_PropertiesMustMatchAttribute() > > > > >> > { > > >> > var attribute = > > > > >> > Assert.HasAttribute<PropertiesMustMatchAttribute>(typeof(RegisterModel)); > > > > >> > Assert.AreEqual("Password", attribute.OriginalProperty); > > >> > Assert.AreEqual("ConfirmPassword", > > >> attribute.ConfirmProperty); > > > > >> > Assert.AreEqual("The password and confirmation password > do > > >> > not match.", attribute.ErrorMessage); > > >> > } > > > > >> > [Test] > > > > >> > public void > UserName_property_should_have_RequiredAttribute() > > >> > { > > >> > var member = > typeof(RegisterModel).GetProperty("UserName"); > > > > >> > Assert.HasAttribute<RequiredAttribute>(member); > > >> > } > > > > >> > [Test] > > >> > public void > UserName_property_should_have_DisplayNameAttribute() > > > > >> > { > > >> > var member = > typeof(RegisterModel).GetProperty("UserName"); > > > > >> > var attribute = > > >> Assert.HasAttribute<DisplayNameAttribute>(member); > > >> > Assert.AreEqual("User name", attribute.DisplayName); > > > > >> > } > > >> > } > > > > >> > Some remarks: > > > > >> > - Instead of targeting the object with *reflection*, you may want > to > > >> use > > >> > the MbUnit Mirror API < > > >>http://gallio.org/wiki/doku.php?id=mbunit:mirror>, > > >> > which makes easier to get private members. > > > > >> > var member = Mirror.ForType(typeof(RegisterModel))["UserName"]; > > > > >> > - In case several instances of the attribute are expected or > > >> considered, > > >> > it's better to use *Assert.Attributes* instead. It has an > optional > > >> > *expectedCount > > >> > *argument and it returns an array of attributes. > > >> > - Non-generic overloads are provided which should be interesting > for > > >> > data-driven tests. > > > > >> > [Test] > > >> > [Column(typeof(RequiredAttribute), typeof(DataTypeAttribute), > typeof( > > >> > DisplayNameAttribute))] > > >> > public void Property_should_have_attributes(Type > expectedAttributeType) > > >> > { > > > > >> > var member = typeof(RegisterModel).GetProperty("Email"); > > > > >> > Assert.HasAttribute(expectedAttributeType, member); > > >> > } > > > > >> > - I still consider to implement a few extra overloads which take > an > > >> > expression to target a property. But it's not implemented yet. > > > > >> > Regards, > > >> > Yann. > > > > >> > 2010/9/13 Yann Trevin <[email protected]> > > > > >> > > For reference: > http://code.google.com/p/mb-unit/issues/detail?id=727 > > > > >> > > 2010/9/13 Yann Trevin <[email protected]> > > > > >> > > You mean by using an expression like in FluentNHibernate? > > >> > >> Something like this? > > > > >> > >> class Foo > > >> > >> { > > >> > >> [Obsolete("Old stuff")] > > >> > >> int MyObsoleteProperty > > >> > >> { > > >> > >> get; set; > > >> > >> } > > >> > >> } > > > > >> > >> var o = new Foo(); > > >> > >> var attribute = Assert.HasAttribute<ObsoleteAttribute>(o => > > >> > >> o.MyObsoleteProperty); > > >> > >> Assert.AreEqual("Old Stuff", attribute.Message); > > > > >> > >> The assertion could then have the following main signatures: > > > > >> > >> - Attribute Assert.HasAttribute(Type expectedAttributeType, > > >> > >> Expression<Func<object, object>> expression) > > >> > >> - TAttribute > > >> Assert.HasAttribute<TAttribute>(Expression<Func<object, > > >> > >> object>> expression) > > > > >> > >> And similarly to Assert.Throws, the assertion returns the > instance of > > >> the > > >> > >> actual attribute, so it's easy to make further assertions on it. > > > > >> > >> What do you think? > > > > >> > >> 2010/9/13 Rafael <[email protected]> > > > > >> > >> Hi Yann, > > > > >> > >>> I think that .Web extension will be cool! > > > > >> > >>> Well the attributes can be used for anything not just for the > data > > >> > >>> validation on MVC, > > >> > >>> so I think it's possible to have some general asserts around > that > > >> > >>> outside the new extension. > > > > >> > >>> For me I did two things, the first was to check if there is an > > >> > >>> attribute on a property, > > >> > >>> then I thought in the property that will have attributes like > Range > > >> > >>> for example, > > >> > >>> because don't make sense just check if it exists or not > > >> > >>> but it's necessary check the minimum and maximum. > > > > >> > >>> The first idea is just like you said, Assert.HasAttribute will > be > > >> > >>> enough > > >> > >>> and the second I couldn't figure out a nice name but it's > something > > >> > >>> that > > >> > >>> you'll have basically the types (Model and *Attribute), property > > >> name > > >> > >>> to check and > > >> > >>> the last parameter could be a "Func" that you can check the > > >> properties > > >> > >>> from the > > >> > >>> Attribute. > > > > >> > >>> Well, that was my idea, if you didn't understand anything I can > > >> > >>> clarify, or if didn't like the idea I'll understand too. > > > > >> > >>> Thanks, > > >> > >>> Rafael > > > > >> > >>> On 13 set, 03:29, Yann Trevin <[email protected]> wrote: > > >> > >>> > Hi Rafael, > > > > >> > >>> > There is no built-in assertion to do that yet :( > > > > >> > >>> > In fact, an extension of MbUnit dedicated to web apps is > > >> > >>> > foreseen<http://gallio.org/wiki/doku.php?id=mbunit:ideas> > > >> > >>> > (MbUnit.Framework.Web) > > >> > >>> > That extension would ideally contain some useful assertions > and > > >> helper > > >> > >>> > features for technologies such as ASP.NET MVC. > > >> > >>> > But I don't know precisely what would be worth to add in that > > >> > >>> extension... > > > > >> > >>> > Otherwise if your requirements are more general, we could > easily > > >> create > > >> > >>> a > > >> > >>> > couple of assertions to work with attributes (e.g. > > >> Assert.HasAttribute > > >> > >>> or > > >> > >>> > something) > > > > >> > >>> > What sort of assertions would you need? > > > > >> > >>> > Yann. > > > > >> > >>> > 2010/9/10 Rafael <[email protected]> > > > > >> > >>> > > Hi folks, > > > > >> > >>> > > I was trying out the MbUnit Frameworks these days in an > ASP.NETMVC > > >> > >>> 2 > > >> > >>> > > application and I wondering how to make an unit test for my > > >> models, > > >> > >>> > > that uses data annotations for the validation. > > > > >> > >>> > > I saw that there's isn't an assertion to check if some > property > > >> is > > >> > >>> > > "Required" for example. And I end up doing by the common > way, > > >> but I > > >> > >>> > > was wondering if these things can be added on the framework > (I'm > > >> not > > >> > >>> > > asking for nothing, just a suggestion) because we need to > write > > >> some > > >> > >>> > > considerable amount of code to check the attribute from a > > >> property > > >> > >>> > > (even if its possible to create a separated method, like a > > >> helper to > > >> > >>> > > do that). > > > > >> > >>> > > Well, if I the framework provides something to check this > kind > > >> of > > >> > >>> > > thing, please show me, otherwise the suggestion is here! > > > > >> > >>> > > Thanks! > > > > >> > >>> > > -- > > >> > >>> > > You received this message because you are subscribed to the > > >> Google > > >> > >>> Groups > > >> > >>> > > "MbUnit.User" group. > > >> > >>> > > To post to this group, send email to > > >> [email protected]. > > >> > >>> > > To unsubscribe from this group, send email to > > >> > >>> > > [email protected]<mbunituser%[email protected]> > <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> > >>> <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> > >>> > > . > > >> > >>> > > For more options, visit this group at > > >> > >>> > >http://groups.google.com/group/mbunituser?hl=en. > > > > >> > >>> -- > > >> > >>> You received this message because you are subscribed to the > Google > > >> Groups > > >> > >>> "MbUnit.User" group. > > >> > >>> To post to this group, send email to > [email protected]. > > >> > >>> To unsubscribe from this group, send email to > > >> > >>> [email protected]<mbunituser%[email protected]> > <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> > >>> . > > >> > >>> For more options, visit this group at > > >> > >>>http://groups.google.com/group/mbunituser?hl=en. > > > > >> -- > > >> You received this message because you are subscribed to the Google > Groups > > >> "MbUnit.User" group. > > >> To post to this group, send email to [email protected]. > > >> To unsubscribe from this group, send email to > > >> [email protected]<mbunituser%[email protected]> > <mbunituser%2bunsubscr...@googlegrou ps.com> > > >> . > > >> For more options, visit this group at > > >>http://groups.google.com/group/mbunituser?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "MbUnit.User" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<mbunituser%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/mbunituser?hl=en. > > -- You received this message because you are subscribed to the Google Groups "MbUnit.User" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/mbunituser?hl=en.
