From 8e2cf7f38f1fe3609bd7d53557b03662e9bead78 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: Thu, 24 May 2018 17:27:01 +0900 Subject: [PATCH] Add: test_db_connect_manager --- src/game/global/global_variables.js | 14 +- src/game/lib/db_connect_manager.js | 56 ++++++-- src/game/result/history_board.js | 2 +- ...h_record.php => ranking_record 복사본.php} | 0 ..._day_record.php => ranking_record_day.php} | 0 ...our_record.php => ranking_record_hour.php} | 0 .../server/record/ranking_record_month.php | 49 +++++++ test/db_connect_manager.html | 23 ++++ test/test_db_connect_manager.js | 123 ++++++++++++++++++ test/test_ranking_record_manager.js | 13 +- 10 files changed, 256 insertions(+), 24 deletions(-) rename src/web/server/record/{ranking_month_record.php => ranking_record 복사본.php} (100%) rename src/web/server/record/{ranking_day_record.php => ranking_record_day.php} (100%) rename src/web/server/record/{ranking_hour_record.php => ranking_record_hour.php} (100%) create mode 100644 src/web/server/record/ranking_record_month.php create mode 100644 test/db_connect_manager.html create mode 100644 test/test_db_connect_manager.js diff --git a/src/game/global/global_variables.js b/src/game/global/global_variables.js index a42c7dc..f94f4b1 100644 --- a/src/game/global/global_variables.js +++ b/src/game/global/global_variables.js @@ -22,13 +22,13 @@ const GAME_SCREEN_SIZE = { x: 1024, y: 768 } let sessionStorageManager = new SessionStorageManager(); { - if(isDebugMode()) { - sessionStorageManager.playerName = "부현율"; - sessionStorageManager.playerUserID = 8; - sessionStorageManager.playingAppName = "space_invaders"; - sessionStorageManager.score = 1000; - sessionStorageManager.highScore = 2000; - } + // if(isDebugMode()) { + // sessionStorageManager.playerName = "부현율"; + // sessionStorageManager.playerUserID = 8; + // sessionStorageManager.playingAppName = "space_invaders"; + // sessionStorageManager.score = 1000; + // sessionStorageManager.highScore = 2000; + // } console.log("maestroID : " + sessionStorageManager.maestroID); console.log("playerName : " + sessionStorageManager.playerName); diff --git a/src/game/lib/db_connect_manager.js b/src/game/lib/db_connect_manager.js index aa841f1..2111c7e 100644 --- a/src/game/lib/db_connect_manager.js +++ b/src/game/lib/db_connect_manager.js @@ -1,16 +1,21 @@ class DBConnectManager { constructor() { + this.path = this.getPath(); + this.directoryName = this.getDirectoryName(this.path); + this.phpPath = this.getPHPPath(this.directoryName); + this.maestroID = 0; this.playerUserID = 0; this.appName = ""; + this.dateAndTime = null; } - setMaestro(maestroID) { + setMaestroID(maestroID) { this.maestroID = maestroID; } - setPlayer(userID) { + setPlayerID(userID) { this.playerUserID = userID; } @@ -18,9 +23,33 @@ class DBConnectManager { this.appName = appName; } + setDateTime(date, time) { + this.dateAndTime = date + time; + } + + resetDateTime() { + this.dateAndTime = null; + } + + getPath() { + return window.location.pathname; + } + + getDirectoryName(path) { + let pathAndFileNames = path.split("/"); + return pathAndFileNames[pathAndFileNames.length - 2]; + } + + getPHPPath(directoryName) { + if(directoryName === "test") // mouse_typing/test/ + return "../src/web/"; + else // mousetyping/src/web/client/ + return "../"; + } + requestCheckUserLogin(userName, enterCode, onSucceededListener, onFailedListener) { let xhr = new XMLHttpRequest(); - xhr.open("POST", "../../web/server/user/login.php", true); + xhr.open("POST", this.phpPath + "server/user/login.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { @@ -32,7 +61,7 @@ class DBConnectManager { onFailedListener(jsonData); } }; - xhr.send("name=" + sessionStorageManager.playerName + "&enter_code=" + enterCode); + xhr.send("name=" + userName + "&enter_code=" + enterCode); } requestPlayerHistory(listener) { @@ -52,7 +81,7 @@ class DBConnectManager { let self = this; let xhr = new XMLHttpRequest(); - xhr.open("POST", "../../web/server/record/history_record.php", true); + xhr.open("POST", this.phpPath + "server/record/history_record.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { @@ -128,7 +157,7 @@ class DBConnectManager { let self = this; let xhr = new XMLHttpRequest(); - xhr.open("POST", this.getPHPUrl(type), true); + xhr.open("POST", this.getRankingRecordUrl(type), true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { @@ -146,22 +175,27 @@ class DBConnectManager { xhr.send(params); } - getPHPUrl(type) { + getRankingRecordUrl(type) { + let rankingRecordURL = this.phpPath; + switch(type) { case DBConnectManager.TYPE_MY_RANKING_HOUR: case DBConnectManager.TYPE_ALL_RANKING_HOUR: - return "../../web/server/record/ranking_hour_record.php"; + rankingRecordURL += "server/record/ranking_record_hour.php"; + break; case DBConnectManager.TYPE_MY_RANKING_DAY: case DBConnectManager.TYPE_ALL_RANKING_DAY: - return "../../web/server/record/ranking_day_record.php"; + rankingRecordURL += "server/record/ranking_record_day.php"; + break; case DBConnectManager.TYPE_MY_RANKING_MONTH: case DBConnectManager.TYPE_ALL_RANKING_MONTH: - return "../../web/server/record/ranking_month_record.php"; + rankingRecordURL += "server/record/ranking_record_month.php"; + break; } - return ""; + return rankingRecordURL; } parseJSONtoRankingRecord(type, json) { diff --git a/src/game/result/history_board.js b/src/game/result/history_board.js index b34633b..a9a2321 100644 --- a/src/game/result/history_board.js +++ b/src/game/result/history_board.js @@ -14,7 +14,7 @@ class HistoryBoard { .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); this.dbConnectManager.requestPlayerHistory( historyRecordManager => { - let maxIndex = historyRecordManager.count; + let maxIndex = historyRecordManager.count - 1; if(maxIndex > 6) maxIndex = 6; diff --git a/src/web/server/record/ranking_month_record.php b/src/web/server/record/ranking_record 복사본.php similarity index 100% rename from src/web/server/record/ranking_month_record.php rename to src/web/server/record/ranking_record 복사본.php diff --git a/src/web/server/record/ranking_day_record.php b/src/web/server/record/ranking_record_day.php similarity index 100% rename from src/web/server/record/ranking_day_record.php rename to src/web/server/record/ranking_record_day.php diff --git a/src/web/server/record/ranking_hour_record.php b/src/web/server/record/ranking_record_hour.php similarity index 100% rename from src/web/server/record/ranking_hour_record.php rename to src/web/server/record/ranking_record_hour.php diff --git a/src/web/server/record/ranking_record_month.php b/src/web/server/record/ranking_record_month.php new file mode 100644 index 0000000..9fccb50 --- /dev/null +++ b/src/web/server/record/ranking_record_month.php @@ -0,0 +1,49 @@ +prepare($query); +$stmt->bind_param('s', $app_name); +$stmt->execute(); + +$stmt->bind_result($userID, $name, $high_score); + +$score_record_array = array(); +while($stmt->fetch()) { + $score_record['UserID'] = $userID; + $score_record['Name'] = $name; + $score_record['HighScore'] = $high_score; + array_push($score_record_array, $score_record); +} +$return_array['rankingMonth'] = $score_record_array; + +echo json_encode($return_array, JSON_UNESCAPED_UNICODE); + + +$db_conn->close(); + +?> \ No newline at end of file diff --git a/test/db_connect_manager.html b/test/db_connect_manager.html new file mode 100644 index 0000000..6095284 --- /dev/null +++ b/test/db_connect_manager.html @@ -0,0 +1,23 @@ + + + + + + DB Connect Manager + + + +
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/test/test_db_connect_manager.js b/test/test_db_connect_manager.js new file mode 100644 index 0000000..a850461 --- /dev/null +++ b/test/test_db_connect_manager.js @@ -0,0 +1,123 @@ +let dbConnectManager = new DBConnectManager(); +dbConnectManager.setMaestroID(0); +dbConnectManager.setPlayerID(0); +dbConnectManager.setDateTime("2018-05-16", "14:50:00"); + +QUnit.test( "User login", function( assert ) { + let returnPlayerID = -1; + + let done = assert.async(); + setTimeout(function() { + dbConnectManager.requestCheckUserLogin( + "test", "111111", + (jsonData) => { + returnPlayerID = jsonData["UserID"]; + assert.equal(returnPlayerID, 31); + done(); + }, + (jsonData) => { + console.log(jsonData); + done(); + } + ); + }); +}); + +QUnit.test( "Player history", function( assert ) { + sessionStorageManager.playerUserID = "8"; // 부현율 + sessionStorageManager.playingAppName = "space_invaders"; + let date = "2018-05-16"; + let time = "14:50:00"; + + let done = assert.async(); + setTimeout(function() { + dbConnectManager.requestPlayerHistory( + (historyRecordManager) => { + console.log(historyRecordManager); + + assert.equal(historyRecordManager.getAppNameAt(0), "korean_left_lower"); + assert.equal(historyRecordManager.getDateAt(0), "2018-04-02"); + assert.equal(historyRecordManager.getScoreAt(0), 22); + + assert.equal(historyRecordManager.getAppNameAt(4), "korean_word"); + assert.equal(historyRecordManager.getDateAt(4), "2018-05-09"); + assert.equal(historyRecordManager.getScoreAt(4), 85.1965); + + done(); + } + ); + }); +}); + +QUnit.test( "Player ranking", function( assert ) { + sessionStorageManager.playerUserID = "8"; // 부현율 + sessionStorageManager.playingAppName = "space_invaders"; + let date = "2018-05-16"; + let time = "14:50:00"; + + let done = assert.async(3); + + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_HOUR, + (type, rankingRecordManager) => { + console.log(rankingRecordManager); + + assert.equal(rankingRecordManager.getRankAt(0), 1, "hour"); + assert.equal(rankingRecordManager.getScoreAt(0), 245.547, "hour"); + assert.equal(rankingRecordManager.getUserIDAt(0), 5, "hour"); + assert.equal(rankingRecordManager.getUserNameAt(0), "김지유", "hour"); + + assert.equal(rankingRecordManager.getRankAt(5), 6, "hour"); + assert.equal(rankingRecordManager.getScoreAt(5), 52.7276, "hour"); + assert.equal(rankingRecordManager.getUserIDAt(5), 14, "hour"); + assert.equal(rankingRecordManager.getUserNameAt(5), "송가윤", "hour"); + + done(); + } + ); + }); + + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_DAY, + (type, rankingRecordManager) => { + console.log(rankingRecordManager); + + assert.equal(rankingRecordManager.getRankAt(0), 1, "day"); + assert.equal(rankingRecordManager.getScoreAt(0), 313.304, "day"); + assert.equal(rankingRecordManager.getUserIDAt(0), 19, "day"); + assert.equal(rankingRecordManager.getUserNameAt(0), "오지운", "day"); + + assert.equal(rankingRecordManager.getRankAt(17), 18, "day"); + assert.equal(rankingRecordManager.getScoreAt(17), 65.337, "day"); + assert.equal(rankingRecordManager.getUserIDAt(17), 20, "day"); + assert.equal(rankingRecordManager.getUserNameAt(17), "김민성", "day"); + + done(); + } + ); + }); + + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_MONTH, + (type, rankingRecordManager) => { + console.log(rankingRecordManager); + + assert.equal(rankingRecordManager.getRankAt(0), 1); + assert.equal(rankingRecordManager.getScoreAt(0), 617.231); + assert.equal(rankingRecordManager.getUserIDAt(0), 50); + assert.equal(rankingRecordManager.getUserNameAt(0), "강민준"); + + assert.equal(rankingRecordManager.getRankAt(17), 18); + assert.equal(rankingRecordManager.getScoreAt(17), 216.279); + assert.equal(rankingRecordManager.getUserIDAt(17), 9); + assert.equal(rankingRecordManager.getUserNameAt(17), "신예성"); + + done(); + } + ); + }); + +}); \ No newline at end of file diff --git a/test/test_ranking_record_manager.js b/test/test_ranking_record_manager.js index 78a5446..440f111 100644 --- a/test/test_ranking_record_manager.js +++ b/test/test_ranking_record_manager.js @@ -1,10 +1,10 @@ let rankingRecordManager = new RankingRecordManager(); -rankingRecordManager.push(new RankingRecord(4, "김남희", 1400)); -rankingRecordManager.push(new RankingRecord(5, "고봉순", 900)); -rankingRecordManager.push(new RankingRecord(6, "파르마", 800)); -rankingRecordManager.push(new RankingRecord(7, "박지상", 700)); -rankingRecordManager.push(new RankingRecord(8, "신현주", 600)); +rankingRecordManager.push(new RankingRecord(4, 1, "김남희", 1400)); +rankingRecordManager.push(new RankingRecord(5, 2, "고봉순", 900)); +rankingRecordManager.push(new RankingRecord(6, 3, "파르마", 800)); +rankingRecordManager.push(new RankingRecord(7, 4, "박지상", 700)); +rankingRecordManager.push(new RankingRecord(8, 5, "신현주", 600)); QUnit.test( "push", function( assert ) { assert.equal(rankingRecordManager.count, 5); @@ -14,6 +14,9 @@ QUnit.test( "getAt", function( assert ) { assert.equal(rankingRecordManager.getRankAt(0), 4); assert.equal(rankingRecordManager.getRankAt(4), 8); + assert.equal(rankingRecordManager.getUserIDAt(0), 1); + assert.equal(rankingRecordManager.getUserIDAt(4), 5); + assert.equal(rankingRecordManager.getUserNameAt(0), "김남희"); assert.equal(rankingRecordManager.getUserNameAt(4), "신현주");