< Summary - Backend C Tests - Coverage Report (WSL)

Information
Class: fault_handler_c
Assembly: src.backend.api.handlers
File(s): ./src/backend/api/handlers/fault_handler.c
Line coverage
96%
Covered lines: 74
Uncovered lines: 3
Coverable lines: 77
Total lines: 108
Line coverage: 96.1%
Branch coverage
85%
Covered branches: 12
Total branches: 14
Branch coverage: 85.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 2/18/2026 - 10:50:55 PM Line coverage: 96.1% (74/77) Branch coverage: 85.7% (12/14) Total lines: 108 2/18/2026 - 10:50:55 PM Line coverage: 96.1% (74/77) Branch coverage: 85.7% (12/14) Total lines: 108

File(s)

./src/backend/api/handlers/fault_handler.c

#LineLine coverage
 1/* This file is a template for fault_handler.c. Content will be filled by yagiz on 2025-12-29. */
 2#include "fault_handler.h"
 3#include "../../database/cJSON.h"
 4#include <string.h>
 5#include <stdlib.h>
 6#include <stdio.h>
 7
 8// Fault/Arıza verileri için JSON serialize fonksiyonu
 19char *serialize_faults_to_json(void) {
 110  cJSON *root = cJSON_CreateObject();
 111  cJSON *faults_array = cJSON_CreateArray();
 12  // Mock fault/arıza verileri
 113  cJSON *fault1 = cJSON_CreateObject();
 114  cJSON_AddNumberToObject(fault1, "id", 1);
 115  cJSON_AddNumberToObject(fault1, "machine_id", 1);
 116  cJSON_AddStringToObject(fault1, "machine_name", "CNC Machine");
 117  cJSON_AddStringToObject(fault1, "description", "Overheating detected");
 118  cJSON_AddStringToObject(fault1, "severity", "CRITICAL");
 119  cJSON_AddStringToObject(fault1, "status", "active");
 120  cJSON_AddStringToObject(fault1, "detected_at", "2026-02-11 10:30:00");
 121  cJSON_AddItemToArray(faults_array, fault1);
 122  cJSON *fault2 = cJSON_CreateObject();
 123  cJSON_AddNumberToObject(fault2, "id", 2);
 124  cJSON_AddNumberToObject(fault2, "machine_id", 2);
 125  cJSON_AddStringToObject(fault2, "machine_name", "Conveyor Belt");
 126  cJSON_AddStringToObject(fault2, "description", "Belt misalignment");
 127  cJSON_AddStringToObject(fault2, "severity", "WARNING");
 128  cJSON_AddStringToObject(fault2, "status", "acknowledged");
 129  cJSON_AddStringToObject(fault2, "detected_at", "2026-02-11 09:15:00");
 130  cJSON_AddItemToArray(faults_array, fault2);
 131  cJSON_AddItemToObject(root, "faults", faults_array);
 132  char *json = cJSON_Print(root);
 133  cJSON_Delete(root);
 134  return json;
 35}
 36
 37// Tek bir fault detayı için JSON serialize
 138char *serialize_fault_detail_to_json(int fault_id) {
 139  cJSON *root = cJSON_CreateObject();
 140  cJSON_AddNumberToObject(root, "id", fault_id);
 141  cJSON_AddNumberToObject(root, "machine_id", 1);
 142  cJSON_AddStringToObject(root, "machine_name", "CNC Machine");
 143  cJSON_AddStringToObject(root, "description", "Overheating detected - Temperature exceeded 90°C");
 144  cJSON_AddStringToObject(root, "severity", "CRITICAL");
 145  cJSON_AddStringToObject(root, "status", "active");
 146  cJSON_AddStringToObject(root, "detected_at", "2026-02-11 10:30:00");
 147  cJSON_AddStringToObject(root, "resolved_at", "");
 148  cJSON_AddStringToObject(root, "root_cause", "Coolant pump failure");
 149  cJSON_AddStringToObject(root, "recommended_action", "Check and replace coolant pump");
 150  char *json = cJSON_Print(root);
 151  cJSON_Delete(root);
 152  return json;
 53}
 54
 655void handle_fault_request(HttpRequest *req, HttpResponse *res) {
 56  // GET /api/faults - Tüm arızaları listele
 57  // GET /api/faults/1 - Tek bir arıza detayı
 58  // POST /api/faults - Yeni arıza bildir
 59  // PUT /api/faults/1/acknowledge - Arızayı onayla
 60  // PUT /api/faults/1/resolve - Arızayı çöz
 661  if (strcmp(req->method, "GET") == 0) {
 62    // Check if it's a single fault request
 263    char *fault_id_str = strstr(req->path, "/api/faults/");
 64
 265    if (fault_id_str && strlen(fault_id_str) > 12) {
 66      // GET /api/faults/{id}
 167      int fault_id = atoi(fault_id_str + 12);
 168      char *json = serialize_fault_detail_to_json(fault_id);
 169      res->status_code = 200;
 170      strcpy(res->content_type, "application/json");
 171      strncpy(res->body, json, 8191);
 172      res->body[8191] = '\0';
 173      free(json);
 74    } else {
 75      // GET /api/faults
 176      char *json = serialize_faults_to_json();
 177      res->status_code = 200;
 178      strcpy(res->content_type, "application/json");
 179      strncpy(res->body, json, 8191);
 180      res->body[8191] = '\0';
 181      free(json);
 82    }
 483  } else if (strcmp(req->method, "POST") == 0) {
 84    // POST /api/faults - Yeni arıza bildir
 185    res->status_code = 201;
 186    strcpy(res->content_type, "application/json");
 187    strcpy(res->body, "{\"success\": true, \"message\": \"Fault reported successfully\", \"fault_id\": 3}");
 388  } else if (strcmp(req->method, "PUT") == 0) {
 89    // PUT /api/faults/1/acknowledge veya /api/faults/1/resolve
 290    if (strstr(req->path, "/acknowledge")) {
 191      res->status_code = 200;
 192      strcpy(res->content_type, "application/json");
 193      strcpy(res->body, "{\"success\": true, \"message\": \"Fault acknowledged\"}");
 194    } else if (strstr(req->path, "/resolve")) {
 195      res->status_code = 200;
 196      strcpy(res->content_type, "application/json");
 197      strcpy(res->body, "{\"success\": true, \"message\": \"Fault resolved\"}");
 98    } else {
 099      res->status_code = 400;
 0100      strcpy(res->content_type, "application/json");
 0101      strcpy(res->body, "{\"error\": \"Invalid fault operation\"}");
 102    }
 103  } else {
 1104    res->status_code = 405;
 1105    strcpy(res->content_type, "application/json");
 1106    strcpy(res->body, "{\"error\": \"Method not supported for faults\"}");
 107  }
 6108}

Methods/Properties