private ControllerWithContext <SplitController> CreateController()
        {
            var services = new ServiceCollection();

            services
            .AddEntityFramework()
            .AddInMemoryDatabase()
            .AddDbContext <PayMeBackContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase());

            InjectionConfig.ConfigureCustomServices(services);

            var serviceProvider = services.BuildServiceProvider();
            var context         = CreateContext(serviceProvider);

            services.AddTransient <IGenericRepository <Split>, GenericRepository <Split> >(provider => new GenericRepository <Split>(context));

            var mapper       = serviceProvider.GetService <IMapper>();
            var splitService = serviceProvider.GetService <ISplitService>();

            var splitController = new SplitController(mapper, splitService);

            var claims = new List <Claim> {
                new Claim(ClaimTypes.NameIdentifier, "1")
            };
            var httpContext = new DefaultHttpContext();

            httpContext.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
            splitController.ActionContext.HttpContext = httpContext;

            return(new ControllerWithContext <SplitController> {
                Controller = splitController, Context = context
            });
        }
Exemplo n.º 2
0
        public SplitControllerTests()
        {
            _splitServiceMock = new Mock <ISplitService>();

            var mapper = MapperConfig.CreateMapper();

            _controller = new SplitController(mapper, _splitServiceMock.Object);

            var claims = new List <Claim> {
                new Claim(ClaimTypes.NameIdentifier, "1")
            };
            var httpContext = new DefaultHttpContext();

            httpContext.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
            _controller.ActionContext.HttpContext = httpContext;
        }
        public async Task Post_ReturnsResultWithStatusCode200()
        {
            var mockSplitter = new Mock <ISplitter>();

            mockSplitter.Setup(s => s.SplitAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int[]>()))
            .ReturnsAsync(() => new SplitResult());

            var controller = new SplitController(mockSplitter.Object)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext()
                }
            };

            ActionResult <SplitResult> result = await controller.Post(new SplitRequest { });

            Assert.AreEqual(200, controller.Response.StatusCode);
            Assert.IsNull(result.Value.ErrorStatus);
            Assert.IsNull(result.Value.StackTrace);
        }
        public async Task Post_WithError_ReturnsResultWithStatusCode500()
        {
            var mockSplitter = new Mock <ISplitter>();

            mockSplitter.Setup(s => s.SplitAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int[]>()))
            .ReturnsAsync(() => new SplitResult {
                ErrorStatus = "some error message", StackTrace = "some stack trace"
            });

            var controller = new SplitController(mockSplitter.Object)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext()
                }
            };

            ActionResult <SplitResult> result = await controller.Post(new SplitRequest { InputFilePath = "some input path" });

            Assert.AreEqual(500, controller.Response.StatusCode);
            Assert.AreEqual("some error message", result.Value.ErrorStatus);
            Assert.AreEqual("some stack trace", result.Value.StackTrace);
        }