public void AddServiceTest()
        {
            var itemToAdd = this.CreateTestEntityModel();

            var currentRepository = Mock.Create<IRepository<TestEntity>>();
            Mock.Arrange(() => currentRepository.Add(Arg.IsAny<TestEntity>())).DoNothing();

            var userRepo = Mock.Create<IRepository<User>>();
            Mock.Arrange(() => userRepo.Find(Arg.IsAny<string>())).Returns(() => new User());

            var dataProvider = Mock.Create<IDataProvider>();
            Mock.Arrange(() => dataProvider.TestEntities).Returns(() => currentRepository);

            var userProvider = Mock.Create<IUserIdProvider>();
            Mock.Arrange(() => userProvider.GetUserId()).DoNothing();

            var controller = new TestEntitiesController(dataProvider, userProvider);
            ControllerSetup.SetupController(controller, "testentities");

            var actionResult = controller.Create(itemToAdd);
            var response = actionResult.ExecuteAsync(CancellationToken.None).Result;

            var actual = response.Content.ReadAsAsync<TestEntityModel>().Result;
            var expected = itemToAdd;

            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void GetAllServiceTest()
        {
            var itemsCollection = this.GenerateValidItems(1);

            var currentRepository = Mock.Create<IRepository<TestEntity>>();
            Mock.Arrange(() => currentRepository.All()).Returns(() => itemsCollection.AsQueryable());

            var dataProvider = Mock.Create<IDataProvider>();
            Mock.Arrange(() => dataProvider.TestEntities).Returns(() => currentRepository);

            var userProvider = Mock.Create<IUserIdProvider>();
            Mock.Arrange(() => userProvider.GetUserId()).Returns(() => "1");

            var controller = new TestEntitiesController(dataProvider, userProvider);
            ControllerSetup.SetupController(controller, "testentities");

            var actionResult = controller.GetAll();
            var response = actionResult.ExecuteAsync(CancellationToken.None).Result;

            var actual = response.Content.ReadAsAsync<IEnumerable<TestEntityModel>>()
                .Result.Select(x => x.Id).ToList();

            var expected = itemsCollection.AsQueryable().Select(a => a.Id).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }