Search code examples
c#listunit-testingfluent-assertions

How to check a list is ordered using Fluent Assertions


I am writing some unit tests using specflow and need a way to check whether a list of objects is ordered by a specific property. Currently I am doing it like this, but I am not sure if this is the best way to go about it.

var listFromApi = listOfObjects;

var sortedList = listFromApi.OrderBy(x => x.Property);

Assert.IsTrue(listFromApi.SequenceEqual(sortedList));

Is there a nice way this can be done using Fluent Assertions?


Solution

  • Yes. You can use BeInAscendingOrder with a lambda.

    listFromApi.Should().BeInAscendingOrder(x => x.Property);
    

    For extra clarity at the expense of performance, you can also assert on content equivalence:

    listFromApi.Should().BeEquivalentTo(listOfObjects)
        .And.BeInAscendingOrder(x => x.Property);