예제 #1
0
        public void GetCategories_VariableDoesNotExist_ReturnsEmpty()
        {
            ClarityDB.Instance = new FakeDB();
            var           variable = Presto.Persist <NumericVariable>();
            var           service  = new CategoryService();
            RestApiResult result   = service.GetCategoriesByVariable(variable.ID);

            Assert.AreEqual(0, result.Json.Count());
        }
예제 #2
0
        public void GetCategories_VariableHasOneCategory_ReturnsOneCategorie()
        {
            ClarityDB.Instance = new FakeDB();
            var           category = Presto.Persist <NumericCategory>();
            var           service  = new CategoryService();
            RestApiResult result   = service.GetCategoriesByVariable(category.VariableID);

            Assert.AreEqual(1, result.Json.Count());
        }
예제 #3
0
        public void GetCategoriesByVariable_VariableExists_ReturnsOK()
        {
            ClarityDB.Instance = new FakeDB();
            var           variable = Presto.Persist <NumericVariable>();
            var           service  = new CategoryService();
            RestApiResult result   = service.GetCategoriesByVariable(variable.ID);

            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
예제 #4
0
        public void GetCategories_VariableHasOneCategory_ReturnsCorrectCategory()
        {
            ClarityDB.Instance = new FakeDB();
            var           category = Presto.Persist <NumericCategory>();
            var           service  = new CategoryService();
            RestApiResult result   = service.GetCategoriesByVariable(category.VariableID);
            var           json     = result.Json.First();

            Assert.AreEqual(category.ID, json.Value <long>("id"));
            Assert.AreEqual(category.Label, json.Value <string>("label"));
        }
예제 #5
0
        public void GetCategories_VariableHasManyCategories_ReturnsCollectionSortedByLabel()
        {
            ClarityDB.Instance = new FakeDB();
            var category1 = Presto.Persist <NumericCategory>(x => { x.NumericValue = 0; x.Label = "Male"; });
            var category2 = Presto.Persist <NumericCategory>(x => { x.NumericValue = 1; x.Label = "Female"; x.Variable = category1.Variable; x.Variable.Categories.Add(x); });
            var service   = new CategoryService();

            RestApiResult result = service.GetCategoriesByVariable(category1.VariableID);

            Assert.AreEqual(category2.Label, result.Json.First().Value <string>("label"));
            Assert.AreEqual(category1.Label, result.Json.ElementAt(1).Value <string>("label"));
        }
예제 #6
0
        public void OnActionExecuted(ActionExecutedContext context)
        {
            var result = context.Result as JsonResult;

            if (result != null)
            {
                var restResult = new RestApiResult
                {
                    Code = 200,
                    Data = result.Value
                };
                context.Result = new JsonResult(restResult);
            }
        }
예제 #7
0
        public void OnException(ExceptionContext context)
        {
            var error = context.Exception;

            if (error != null)
            {
                var restResult = new RestApiResult
                {
                    Code = 500,
                    Data = error.Message
                };
                context.Result = new JsonResult(restResult);
            }
        }
예제 #8
0
        public IActionResult Get()
        {
            var testModelNs      = typeof(ComplexModel).FullName;
            var testModelAsmName = typeof(ComplexModel).Assembly.GetName().Name;
            var result           = new RestApiResult();
            var url = Url.Action("get", "stubmiddleware", new { className = $"{testModelNs}, {testModelAsmName}", subItemlistSize = 3, culture = "en-us" });

            result.Links.Add(new LinkInfo()
            {
                Href = url, Method = "GET", Rel = "self"
            });

            var urlList = Url.Action("list", "stubmiddleware", new { className = $"{testModelNs}, {testModelAsmName}", subItemlistSize = 3, culture = "en-us", listSize = 10 });

            result.Links.Add(new LinkInfo()
            {
                Href = urlList, Method = "GET", Rel = "self"
            });

            return(Ok(result));
        }
 public void OnException(ExceptionContext context)
 {
     if (context.Exception.GetType() == typeof(ValidationException))
     {
         var validationResult = new RestApiResult <object>();
         validationResult.HandleValidation((ValidationException)context.Exception);
         context.Result = new BadRequestObjectResult(validationResult);
     }
     else if (context.Exception.GetType() == typeof(DuplicateIdException))
     {
         var validationResult = new RestApiResult <object>();
         validationResult.HandleBusinessException(context.Exception);
         context.Result = new BadRequestObjectResult(validationResult);
     }
     else if (context.Exception.GetType() == typeof(DocumentNotFoundException))
     {
         var response = new NotFoundObjectResult(new { context.Exception.Message });
         context.Result = response;
     }
     else if (context.Exception.GetType() == typeof(DocumentTypeNotFoundException))
     {
         var response = new NotFoundObjectResult(new { context.Exception.Message });
         context.Result = response;
     }
     else if (context.Exception.GetType() == typeof(ProjectNotFoundException))
     {
         var response = new NotFoundObjectResult(new { context.Exception.Message });
         context.Result = response;
     }
     else
     {
         var unhandledExceptionResult = new RestApiResult <object>();
         unhandledExceptionResult.HandleException(context.Exception);
         context.Result = new ObjectResult(unhandledExceptionResult);
     }
     context.ExceptionHandled = true;
     _logger.LogError($"Exception occured while process document.", context.Exception);
 }
예제 #10
0
        public void IsSuccessCode_NotBetween200And300_False(HttpStatusCode statusCode)
        {
            var target = new RestApiResult <string>(statusCode, content: null, reasonPhrase: null);

            Assert.False(target.IsSuccessStatusCode);
        }