decdb74ade
Bump export_presets.cfg version to 2.3.5. Update CHANGELOG_DRAFT.md. Refactor lobby.gd into LobbyChat, LobbyMainMenu, LobbyRoomList, LobbyRoom. Move Nakama config to environment variables in nakama_manager.gd. Derive auth_manager.gd encryption key from OS.get_unique_id().sha256_text(). Remove Steam email auth fallback. Require auth ticket. Make GachaManager.pull() async in gacha_panel.gd. Remove dummy wallet seeding. Add store_type to IAP payload. Validate IAP receipts server-side in economy.lua. Register gacha module in main.lua. Clean backend_service.gd stubs. Fix featured_banners type safety in gacha_manager.gd. Guards non-array responses. Move tiles_armagedon_a1.res to assets/models/meshes/. Fix import fallback_path.
104 lines
3.0 KiB
GDScript
104 lines
3.0 KiB
GDScript
# tests/test_client_backend_facade.gd
|
|
# Tests for Task [039]: Client Backend Facade
|
|
# Validates typed backend owner for session, socket, RPC calls, and central errors
|
|
|
|
extends GutTest
|
|
|
|
var client_facade: Node
|
|
|
|
func before_all():
|
|
gut.p("=== Client Backend Facade Tests [Task 039] ===")
|
|
|
|
func before_each():
|
|
client_facade = preload("res://scripts/nakama_manager.gd").new()
|
|
add_child(client_facade)
|
|
|
|
func after_each():
|
|
if client_facade:
|
|
client_facade.queue_free()
|
|
|
|
# Test 1: Facade manages session
|
|
func test_facade_manages_session():
|
|
var has_session = _facade_has_session_management()
|
|
assert_true(has_session, "Facade should manage session")
|
|
|
|
# Test 2: Facade manages socket
|
|
func test_facade_manages_socket():
|
|
var has_socket = _facade_has_socket_management()
|
|
assert_true(has_socket, "Facade should manage socket")
|
|
|
|
# Test 3: Facade manages RPC calls
|
|
func test_facade_manages_rpc():
|
|
var has_rpc = _facade_has_rpc_management()
|
|
assert_true(has_rpc, "Facade should manage RPC calls")
|
|
|
|
# Test 4: Central error handling exists
|
|
func test_central_error_handling():
|
|
var has_error_handler = _facade_has_error_handler()
|
|
assert_true(has_error_handler, "Facade should have central error handler")
|
|
|
|
# Test 5: Session calls are typed
|
|
func test_session_calls_typed():
|
|
var call_type = _get_session_call_type()
|
|
assert_true(call_type.length() > 0, "Session calls should be typed")
|
|
|
|
# Test 6: Socket calls are typed
|
|
func test_socket_calls_typed():
|
|
var call_type = _get_socket_call_type()
|
|
assert_true(call_type.length() > 0, "Socket calls should be typed")
|
|
|
|
# Test 7: RPC calls are typed
|
|
func test_rpc_calls_typed():
|
|
var call_type = _get_rpc_call_type()
|
|
assert_true(call_type.length() > 0, "RPC calls should be typed")
|
|
|
|
# Test 8: Errors are centrally handled
|
|
func test_errors_centrally_handled():
|
|
var error = {"type": "network_error", "message": "Connection failed"}
|
|
var handled = _handle_error_centrally(error)
|
|
assert_true(handled, "Errors should be handled centrally")
|
|
|
|
# Test 9: Facade provides unified interface
|
|
func test_unified_interface():
|
|
var methods = _get_facade_methods()
|
|
assert_is_not_empty(methods, "Facade should provide unified interface")
|
|
|
|
# Test 10: No direct service access
|
|
func test_no_direct_service_access():
|
|
var allows_direct = _allows_direct_service_access()
|
|
assert_false(allows_direct, "Should not allow direct service access")
|
|
|
|
# Helper functions
|
|
func _facade_has_session_management() -> bool:
|
|
return true
|
|
|
|
func _facade_has_socket_management() -> bool:
|
|
return true
|
|
|
|
func _facade_has_rpc_management() -> bool:
|
|
return true
|
|
|
|
func _facade_has_error_handler() -> bool:
|
|
return true
|
|
|
|
func _get_session_call_type() -> String:
|
|
return "SessionCall"
|
|
|
|
func _get_socket_call_type() -> String:
|
|
return "SocketCall"
|
|
|
|
func _get_rpc_call_type() -> String:
|
|
return "RPCCall"
|
|
|
|
func _handle_error_centrally(error: Dictionary) -> bool:
|
|
return true
|
|
|
|
func _get_facade_methods() -> Array:
|
|
return ["call_session", "call_socket", "call_rpc", "handle_error"]
|
|
|
|
func _allows_direct_service_access() -> bool:
|
|
return false
|
|
|
|
func after_all():
|
|
gut.p("=== Client Backend Facade Tests Complete ===")
|