Example #1
0
        public void PostEducation_ShouldReturnSame()
        {
            var educationsTestData = new List <EmployeeEducation>()
            {
                new EmployeeEducation {
                    Id = 1, EmployeeId = 2
                },
                new EmployeeEducation {
                    Id = 2, Deleted = true, EmployeeId = 2
                },
                new EmployeeEducation {
                    Id = 3, EmployeeId = 3
                }
            };
            var educations = MockHelper.MockDbSet(educationsTestData);

            educations.Setup(d => d.Find(It.IsAny <object>())).Returns <object[]>((keyValues) => { return(educations.Object.SingleOrDefault(product => product.Id == (int)keyValues.Single())); });
            educations.Setup(d => d.Add(It.IsAny <EmployeeEducation>())).Returns <EmployeeEducation>((contact) =>
            {
                educationsTestData.Add(contact);
                educations = MockHelper.MockDbSet(educationsTestData);
                return(contact);
            });

            var dbContext = new Mock <IAppDbContext>();

            dbContext.Setup(m => m.EmployeeEducations).Returns(educations.Object);
            dbContext.Setup(d => d.Set <EmployeeEducation>()).Returns(educations.Object);
            dbContext.Setup(d => d.ExecuteStoredProcedure <int>(It.IsAny <string>(), It.IsAny <object[]>()))
            .Returns <string, object[]>((query, parameters) =>
            {
                List <int> list = new List <int>();
                if (query.Contains("NewTableId"))
                {
                    int i = educations.Object.Max(d => d.Id) + 1;
                    list.Add(i);
                }
                else
                {
                    list.Add(0);
                }
                return(list);
            });

            var factory = new Mock <IDbContextFactory>();

            factory.Setup(m => m.CreateDbContext()).Returns(dbContext.Object);

            IDbContextFactory fac = factory.Object;
            var controller        = new EmployeeEducationsController(fac);

            EmployeeEducation item = new EmployeeEducation {
                Id = 0, Deleted = null, EmployeeId = 3
            };
            var result = controller.PostEmployeeEducation(item.ToDTO()) as CreatedAtRouteNegotiatedContentResult <EmployeeEducationDTO>;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteName, "GetEmployeeEducation");
            Assert.AreEqual(result.RouteValues["id"], result.Content.Id);
        }