BillableHoursWebApp.Api.Tests.Mocks.ProjectsRepositoryMock.Create C# (CSharp) Method

Create() public static method

public static Create ( ) : IRepository
return IRepository
        public static IRepository<Project> Create()
        {
            var projectsList = new List<Project>();
            var categories = new List<Category>
            {
                new Category {Id = 1, Name = "Mock Category"},
                new Category {Id = 2, Name = "Mock Category2"},
                new Category {Id = 3, Name = "Mock Category3"},
                new Category {Id = 4, Name = "Mock Category4"},
                new Category {Id = 5, Name = "Another Mock Category"}
            };

            for (int i = 1; i <= 20; i++)
            {
                projectsList.Add(new Project
                {
                    TimePublished = DateTime.Now,
                    Name = "Mock Project version" + i,
                    Description = i + "Mock Project Description " + new string('*', 50 + i),
                    Id = i,
                    PricePerHour = 30m,
                    Category = categories[i % categories.Count],
                    CategoryId = categories[i % categories.Count].Id,
                    Client = new Client
                    {
                        Email = i + "TestClient@" + i + ".com",
                        FirstName = "TestClientFirstName" + i,
                        Invoices = new List<Invoice>()
                    },
                    Employee = new Employee
                    {
                        Email = i + "TestEmployee@" + i + ".com",
                        FirstName = "TestEmployeeFirstName" + i
                    }
                });
            }

            projectsList.Add(new Project
            {
                TimePublished = DateTime.Now,
                Name = "Mock Project version" + 25,
                Description = 25 + "Mock Project Description " + new string('*', 50 + 25),
                Id = 25,
                PricePerHour = 30m,
                Category = categories[4 % categories.Count],
                CategoryId = categories[4 % categories.Count].Id,
                Client = new Client
                {
                    Email = 25 + "TestClient@" + 25 + ".com",
                    FirstName = "TestClientFirstName" + 25,
                    Invoices = new List<Invoice>()
                }
            });

            IQueryable<Project> projectsAsQueryable = projectsList.AsQueryable();

            var repo = new Mock<IRepository<Project>>();
            repo.Setup(x => x.All()).Returns(projectsAsQueryable);
            repo.Setup(x => x.Find(It.IsAny<Expression<Func<Project, bool>>>()))
                .Returns<Expression<Func<Project, bool>>>(id => projectsAsQueryable.Where(id));
            repo.Setup(x => x.Add(It.IsAny<Project>())).Callback<Project>(p =>
            {
                p.Id = projectsList.Last().Id + 1;
                projectsList.Add(p);
            });
            repo.Setup(x => x.Delete(It.IsAny<Project>())).Verifiable();
            repo.Setup(x => x.Update(It.IsAny<Project>())).Verifiable();

            return repo.Object;
        }
ProjectsRepositoryMock