AdventureWorks.Tests.Controllers.DepartmentsControllerTests.IndexSortedByName C# (CSharp) Method

IndexSortedByName() private method

private IndexSortedByName ( ) : void
return void
        public void IndexSortedByName()
        {
            // Create some test data that is not ordered alphabetically
            var data = new List<Department>
            {
                new Department { Name = "CCC" },
                new Department { Name = "AAA" },
                new Department { Name = "BBB" }
            }.AsQueryable();

            var set = new Mock<DbSet<Department>>();

            // Wire up LINQ on mock set to use LINQ to Objects against test data
            // Includes wire up to make async work (see http://msdn.com/data/dn314429#async for details)
            set.As<IDbAsyncEnumerable<Department>>()
                .Setup(m => m.GetAsyncEnumerator())
                .Returns(new TestDbAsyncEnumerator<Department>(data.GetEnumerator()));
            set.As<IQueryable<Department>>()
                .Setup(m => m.Provider)
                .Returns(new TestDbAsyncQueryProvider<Department>(data.Provider));
            set.As<IQueryable<Department>>().Setup(m => m.Expression).Returns(data.Expression);
            set.As<IQueryable<Department>>().Setup(m => m.ElementType).Returns(data.ElementType);
            set.As<IQueryable<Department>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            // Create a mock context that returns mock set with test data
            var context = new Mock<AdventureWorksContext>();
            context.Setup(c => c.Departments).Returns(set.Object);

            // Create a controller based on mock context and invoke Index action
            var controller = new DepartmentsController(context.Object);
            var result = controller.Index().Result;

            // Ensure we get a ViewResult back
            Assert.IsInstanceOfType(result, typeof(ViewResult));
            var viewResult = (ViewResult)result;

            // Ensure model is a collection of all Departments ordered by name
            Assert.IsInstanceOfType(viewResult.Model, typeof(IEnumerable<Department>));
            var departments = (IEnumerable<Department>)viewResult.Model;
            Assert.AreEqual(3, departments.Count());
            Assert.AreEqual("AAA", departments.First().Name, "Results not sorted alphabetically");
            Assert.AreEqual("BBB", departments.Skip(1).First().Name, "Results not sorted alphabetically");
            Assert.AreEqual("CCC", departments.Skip(2).First().Name, "Results not sorted alphabetically");
        }
DepartmentsControllerTests