diff --git a/.cocoindex_code/cocoindex.db/mdb/data.mdb b/.cocoindex_code/cocoindex.db/mdb/data.mdb deleted file mode 100644 index d984184..0000000 Binary files a/.cocoindex_code/cocoindex.db/mdb/data.mdb and /dev/null differ diff --git a/.cocoindex_code/cocoindex.db/mdb/lock.mdb b/.cocoindex_code/cocoindex.db/mdb/lock.mdb deleted file mode 100644 index 263357b..0000000 Binary files a/.cocoindex_code/cocoindex.db/mdb/lock.mdb and /dev/null differ diff --git a/.cocoindex_code/settings.yml b/.cocoindex_code/settings.yml deleted file mode 100644 index c910c16..0000000 --- a/.cocoindex_code/settings.yml +++ /dev/null @@ -1,41 +0,0 @@ -exclude_patterns: -- '**/.*' -- '**/__pycache__' -- '**/node_modules' -- '**/target' -- '**/build/assets' -- '**/dist' -- '**/vendor/*.*/*' -- '**/vendor/*' -- '**/.cocoindex_code' -include_patterns: -- '**/*.py' -- '**/*.pyi' -- '**/*.js' -- '**/*.jsx' -- '**/*.ts' -- '**/*.tsx' -- '**/*.mjs' -- '**/*.cjs' -- '**/*.rs' -- '**/*.go' -- '**/*.java' -- '**/*.c' -- '**/*.h' -- '**/*.cpp' -- '**/*.hpp' -- '**/*.cc' -- '**/*.cxx' -- '**/*.hxx' -- '**/*.hh' -- '**/*.cs' -- '**/*.sql' -- '**/*.sh' -- '**/*.bash' -- '**/*.zsh' -- '**/*.md' -- '**/*.mdx' -- '**/*.txt' -- '**/*.rst' -- '**/*.php' -- '**/*.lua' diff --git a/.cocoindex_code/target_sqlite.db b/.cocoindex_code/target_sqlite.db deleted file mode 100644 index 55fe3ef..0000000 Binary files a/.cocoindex_code/target_sqlite.db and /dev/null differ diff --git a/app/Controllers/Test/TestsController.php b/app/Controllers/Test/TestsController.php index c47c243..aed5a0c 100644 --- a/app/Controllers/Test/TestsController.php +++ b/app/Controllers/Test/TestsController.php @@ -96,23 +96,18 @@ class TestsController extends BaseController $row['testdefgrp'] = $this->modelGrp->getGroupMembers($id); } elseif ($typeCode === 'GROUP') { $row['testdefgrp'] = $this->modelGrp->getGroupMembers($id); - } elseif ($typeCode !== 'TITLE') { - $row['testdeftech'] = $this->model->getTestTechWithRelations($id); - - if (!empty($row['testdeftech'])) { - $techData = $row['testdeftech'][0]; - $refType = $techData['RefType']; - $resultType = $techData['ResultType'] ?? ''; - - if (TestValidationService::usesRefNum($resultType, $refType)) { - $row['refnum'] = $this->modelRefNum->getFormattedByTestSiteID($id); - } - - if (TestValidationService::usesRefTxt($resultType, $refType)) { - $row['reftxt'] = $this->modelRefTxt->getFormattedByTestSiteID($id); - } - } - } + } elseif ($typeCode !== 'TITLE') { + $refType = $row['RefType'] ?? ''; + $resultType = $row['ResultType'] ?? ''; + + if (TestValidationService::usesRefNum($resultType, $refType)) { + $row['refnum'] = $this->modelRefNum->getFormattedByTestSiteID($id); + } + + if (TestValidationService::usesRefTxt($resultType, $refType)) { + $row['reftxt'] = $this->modelRefTxt->getFormattedByTestSiteID($id); + } + } return $this->respond([ 'status' => 'success', diff --git a/app/Models/Test/TestDefSiteModel.php b/app/Models/Test/TestDefSiteModel.php index f147b8d..38a993c 100644 --- a/app/Models/Test/TestDefSiteModel.php +++ b/app/Models/Test/TestDefSiteModel.php @@ -228,11 +228,16 @@ class TestDefSiteModel extends BaseModel { * @param int $id * @return array|null */ - public function getTestById($id) - { - $row = $this->select('testdefsite.*') - ->where('testdefsite.TestSiteID', $id) - ->find($id); + public function getTestById($id) + { + $row = $this->db->table('testdefsite') + ->select('testdefsite.*, d.DisciplineName, dept.DepartmentName') + ->join('discipline d', 'd.DisciplineID = testdefsite.DisciplineID', 'left') + ->join('department dept', 'dept.DepartmentID = testdefsite.DepartmentID', 'left') + ->where('testdefsite.TestSiteID', $id) + ->where('testdefsite.EndDate IS NULL') + ->get() + ->getRowArray(); if (!$row) { return null; @@ -245,21 +250,4 @@ class TestDefSiteModel extends BaseModel { return $rows[0]; } - /** - * Get technical test with discipline and department relations - * - * @param int $testSiteID - * @return array - */ - public function getTestTechWithRelations($testSiteID) - { - return $this->db->table('testdefsite') - ->select('testdefsite.*, d.DisciplineName, dept.DepartmentName') - ->join('discipline d', 'd.DisciplineID=testdefsite.DisciplineID', 'left') - ->join('department dept', 'dept.DepartmentID=testdefsite.DepartmentID', 'left') - ->where('testdefsite.TestSiteID', $testSiteID) - ->where('testdefsite.EndDate IS NULL') - ->get() - ->getResultArray(); - } -} +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c0e70f9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "clqms01-be", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/tests/feature/Test/TestShowResponseTest.php b/tests/feature/Test/TestShowResponseTest.php new file mode 100644 index 0000000..a58d8c8 --- /dev/null +++ b/tests/feature/Test/TestShowResponseTest.php @@ -0,0 +1,38 @@ +where('TestSiteCode', 'GLU')->where('EndDate IS NULL')->first(); + if (!$test) { + $test = $model->where('TestType', 'TEST')->where('EndDate IS NULL')->first(); + } + + $this->assertNotEmpty($test, 'No active technical test record found for show endpoint test.'); + + $response = $this->call('get', 'api/test/' . $test['TestSiteID']); + + $response->assertStatus(200); + + $json = json_decode($response->getJSON(), true); + + $this->assertSame('success', $json['status'] ?? null); + $this->assertArrayHasKey('data', $json); + $this->assertArrayNotHasKey('testdeftech', $json['data']); + $this->assertArrayHasKey('TestSiteID', $json['data']); + $this->assertArrayHasKey('ResultType', $json['data']); + } +}