From 8e7fe46905ab62820e7496972ebd3486280bd1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Sat, 10 Aug 2019 17:44:29 +0900 Subject: [PATCH] Fix: menu app data list --- src/web/php/db/menu_collection.php | 40 +++++- src/web/php/menu/menu_list.php | 2 +- test/tdd.js | 188 +++++++++++++++++++++++++++-- 3 files changed, 213 insertions(+), 17 deletions(-) diff --git a/src/web/php/db/menu_collection.php b/src/web/php/db/menu_collection.php index b7d3f0d..d768b41 100644 --- a/src/web/php/db/menu_collection.php +++ b/src/web/php/db/menu_collection.php @@ -178,26 +178,54 @@ class MenuCollection extends DBMethodContainer // highest record list - public function getHighestRecordList($maestroID, $playerID, $appGroup, $language) + public function getHighestRecordList($maestroID, $playerID, $appList) { switch($appGroup) { case 0: // typing finger position case 1: // typing practice - case 3: // typing play - return $this->getTypingHighestRecordList($maestroID, $playerID, $appGroup, $language); + return $this->getTypingHighestRecordList($maestroID, $playerID, $appList); case 2: // return $this->getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language); + case 3: // typing play case 4: // mouse play - // return $this->getMouseHighestRecordList($maestroID, $playerID, $appGroup); + return null; break; } } - public function getTypingHighestRecordList($maestroID, $playerID, $appGroup, $language) + public function getTypingHighestRecordList($maestroID, $playerID, $appList) { - return null; + $highestRecordArray = array(); + $count = count($appList); + for($i = 0; $i < $count; $i++) { + $appID = $appList[$i]["appID"]; + $highestRecord["appID"] = $appID; + $highestRecord["HighestRecord"] = $this->getTypingHighestRecord($maestroID, $playerID, $appID); + array_push($highestRecordArray, $highestRecord); + + } + return $highestRecordArray; + } + + public function getTypingHighestRecord($maestroID, $playerID, $appID) + { + $query = " + SELECT HighestRecord + FROM app_highest_record + WHERE MaestroID=? AND PlayerID=? AND AppID=?"; + $stmt = $this->mysqli->prepare($query); + $stmt->bind_param("iii", $maestroID, $playerID, $appID); + $stmt->execute(); + $stmt->bind_result($highestRecord); + $returnValue = $stmt->fetch(); + $stmt->close(); + + if($returnValue === NULL || $returnValue === FALSE) + return 0; + + return $highestRecord; } public function getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language) diff --git a/src/web/php/menu/menu_list.php b/src/web/php/menu/menu_list.php index 4b6522d..c0d3fbd 100644 --- a/src/web/php/menu/menu_list.php +++ b/src/web/php/menu/menu_list.php @@ -28,7 +28,7 @@ include "./../db/menu_collection.php"; $menuCollection = new MenuCollection($dbConnector->getMysqli()); $appList = $menuCollection->getAppList($maestroID, $playerID, $appGroup, $language); $activeAppList = $menuCollection->getActiveAppList($maestroID, $playerID, $appGroup, $language); -$highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appGroup, $language); +$highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList); $jsonBuilder->setData("appGroupName", $menuCollection->getAppGroupName($appGroup)); $jsonBuilder->setData("languageName", $menuCollection->getLanguageName($language)); diff --git a/test/tdd.js b/test/tdd.js index c848a91..d4b7e24 100644 --- a/test/tdd.js +++ b/test/tdd.js @@ -9,7 +9,28 @@ QUnit.test( "AppList", function( assert ) { dbService.setMaestroID(MAESTRO_ID); dbService.setPlayerID(PLAYER_ID); - var done = assert.async(); + var asyncFingerPositionKorean = assert.async(); + setTimeout(function() { + var appGroup = 0; // finger position + var language = 0; // Korean + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "appGroup : finger position, Korean"); + assert.equal(jsonData.appList.length, 8, "appList"); + assert.equal(jsonData.activeAppList.length, 8, "activeAppList"); + assert.equal(jsonData.highestRecordList.length, 8, "highestRecordList"); + asyncFingerPositionKorean(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncFingerPositionKorean(); + }).bind(this) + ); + }); + + var asyncFingerPositionEnglish = assert.async(); setTimeout(function() { var appGroup = 0; // finger position var language = 1; // English @@ -17,20 +38,20 @@ QUnit.test( "AppList", function( assert ) { appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "appGroup : finger position, English"); + assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : finger position, English"); assert.equal(jsonData.appList.length, 7, "appList"); assert.equal(jsonData.activeAppList.length, 5, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); - done(); + assert.equal(jsonData.highestRecordList.length, 7, "highestRecordList"); + asyncFingerPositionEnglish(); }).bind(this), (function(jsonData) { console.log(replyJSON); - done(); + asyncFingerPositionEnglish(); }).bind(this) ); }); - var done2 = assert.async(); + var asyncPracticeKorean = assert.async(); setTimeout(function() { var appGroup = 1; // typing practice var language = 0; // Korean @@ -38,15 +59,162 @@ QUnit.test( "AppList", function( assert ) { appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "appGroup : typing practice, Korean"); + assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, Korean"); assert.equal(jsonData.appList.length, 10, "appList"); assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); - done2(); + assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + asyncPracticeKorean(); }).bind(this), (function(jsonData) { console.log(replyJSON); - done2(); + asyncPracticeKorean(); + }).bind(this) + ); + }); + + var asyncPracticeEnglish = assert.async(); + setTimeout(function() { + var appGroup = 1; // typing practice + var language = 1; // English + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, English"); + assert.equal(jsonData.appList.length, 8, "appList"); + assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + asyncPracticeEnglish(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncPracticeEnglish(); + }).bind(this) + ); + }); + + var asyncTestKorean = assert.async(); + setTimeout(function() { + var appGroup = 2; // typing test + var language = 0; // Korean + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, Korean"); + assert.equal(jsonData.appList.length, 10, "appList"); + assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + asyncTestKorean(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncTestKorean(); + }).bind(this) + ); + }); + + var asyncTestEnglish = assert.async(); + setTimeout(function() { + var appGroup = 2; // typing test + var language = 1; // English + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, English"); + assert.equal(jsonData.appList, 10, "appList"); + assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + asyncTestEnglish(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncTestEnglish(); + }).bind(this) + ); + }); + + var asyncTypingPlayKorean = assert.async(); + setTimeout(function() { + var appGroup = 3; // typing play + var language = 0; // Korean + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, Korean"); + assert.equal(jsonData.appList.length, 2, "appList"); + assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); + assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + asyncTypingPlayKorean(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncTypingPlayKorean(); + }).bind(this) + ); + }); + + var asyncTypingPlayEnglish = assert.async(); + setTimeout(function() { + var appGroup = 3; // typing play + var language = 1; // English + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, English"); + assert.equal(jsonData.appList.length, 2, "appList"); + assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); + assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + asyncTypingPlayEnglish(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncTypingPlayEnglish(); + }).bind(this) + ); + }); + + var asyncMousePlayKorean = assert.async(); + setTimeout(function() { + var appGroup = 4; // mouse play + var language = 0; // Korean + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, Korean"); + assert.equal(jsonData.appList.length, 10, "appList"); + assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + asyncMousePlayKorean(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncMousePlayKorean(); + }).bind(this) + ); + }); + + var asyncMousePlayEnglish = assert.async(); + setTimeout(function() { + var appGroup = 4; // mouse play + var language = 1; // English + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, English"); + assert.equal(jsonData.appList.length, 10, "appList"); + assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + asyncMousePlayEnglish(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncMousePlayEnglish(); }).bind(this) ); });