From c74f360dd01d4655ccd6bf205c0efe4d1efaa128 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:23:33 +0000 Subject: [PATCH] feat(mining): Increase test coverage for service and manager Added tests for GetMiner and ListMiners in the manager, and for the GetInfo and Doctor endpoints in the service. This increases the overall test coverage of the pkg/mining package. --- pkg/mining/manager_test.go | 52 ++++++++++++++++++++++++++++++++++++++ pkg/mining/service_test.go | 29 +++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/pkg/mining/manager_test.go b/pkg/mining/manager_test.go index 16dc08f..972bb4b 100644 --- a/pkg/mining/manager_test.go +++ b/pkg/mining/manager_test.go @@ -102,3 +102,55 @@ func TestStopMiner(t *testing.T) { t.Error("Expected an error when stopping a non-existent miner, but got nil") } } + +// TestGetMiner tests the GetMiner function +func TestGetMiner(t *testing.T) { + m := setupTestManager(t) + defer m.Stop() + + config := &Config{ + HTTPPort: 9003, + Pool: "test:1234", + Wallet: "testwallet", + } + + // Case 1: Get an existing miner + startedMiner, _ := m.StartMiner("xmrig", config) + retrievedMiner, err := m.GetMiner(startedMiner.GetName()) + if err != nil { + t.Fatalf("Expected to get miner, but got error: %v", err) + } + if retrievedMiner.GetName() != startedMiner.GetName() { + t.Errorf("Expected to get miner %s, but got %s", startedMiner.GetName(), retrievedMiner.GetName()) + } + + // Case 2: Attempt to get a non-existent miner + _, err = m.GetMiner("nonexistent") + if err == nil { + t.Error("Expected an error when getting a non-existent miner, but got nil") + } +} + +// TestListMiners tests the ListMiners function +func TestListMiners(t *testing.T) { + m := setupTestManager(t) + defer m.Stop() + + // Case 1: List miners when empty + miners := m.ListMiners() + if len(miners) != 0 { + t.Errorf("Expected 0 miners, but got %d", len(miners)) + } + + // Case 2: List miners when not empty + config := &Config{ + HTTPPort: 9004, + Pool: "test:1234", + Wallet: "testwallet", + } + _, _ = m.StartMiner("xmrig", config) + miners = m.ListMiners() + if len(miners) != 1 { + t.Errorf("Expected 1 miner, but got %d", len(miners)) + } +} diff --git a/pkg/mining/service_test.go b/pkg/mining/service_test.go index 34488cf..d4fc74b 100644 --- a/pkg/mining/service_test.go +++ b/pkg/mining/service_test.go @@ -92,6 +92,35 @@ func TestHandleListMiners(t *testing.T) { } } +func TestHandleGetInfo(t *testing.T) { + router, _ := setupTestRouter() + + // Case 1: Successful response + req, _ := http.NewRequest("GET", "/info", nil) + w := httptest.NewRecorder() + router.ServeHTTP(w, req) + + if w.Code != http.StatusOK { + t.Errorf("expected status %d, got %d", http.StatusOK, w.Code) + } +} + +func TestHandleDoctor(t *testing.T) { + router, mockManager := setupTestRouter() + mockManager.ListAvailableMinersFunc = func() []AvailableMiner { + return []AvailableMiner{{Name: "xmrig"}} + } + + // Case 1: Successful response + req, _ := http.NewRequest("POST", "/doctor", nil) + w := httptest.NewRecorder() + router.ServeHTTP(w, req) + + if w.Code != http.StatusOK { + t.Errorf("expected status %d, got %d", http.StatusOK, w.Code) + } +} + func TestHandleStartMiner(t *testing.T) { router, mockManager := setupTestRouter() mockManager.StartMinerFunc = func(minerType string, config *Config) (Miner, error) {