mirror of
https://github.com/henrygd/beszel.git
synced 2026-08-17 12:46:22 +00:00
- Report battery data for individual devices - Select a representative battery for legacy fields and alerts - Average named battery data independently - Display multiple batteries in system charts - Add cross-platform coverage and transport tests
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package system
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/fxamacker/cbor/v2"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStatsBatteryTransport(t *testing.T) {
|
|
stats := Stats{Battery: [2]uint8{0, 1}, Batteries: map[string]uint8{"Primary": 0, "Mouse": 75}}
|
|
|
|
jsonData, err := json.Marshal(stats)
|
|
require.NoError(t, err)
|
|
var jsonPayload map[string]any
|
|
require.NoError(t, json.Unmarshal(jsonData, &jsonPayload))
|
|
assert.Equal(t, []any{float64(0), float64(1)}, jsonPayload["bat"])
|
|
assert.Equal(t, map[string]any{"Primary": float64(0), "Mouse": float64(75)}, jsonPayload["bats"])
|
|
|
|
cborData, err := cbor.Marshal(stats)
|
|
require.NoError(t, err)
|
|
var decoded Stats
|
|
require.NoError(t, cbor.Unmarshal(cborData, &decoded))
|
|
assert.Equal(t, stats.Battery, decoded.Battery)
|
|
assert.Equal(t, stats.Batteries, decoded.Batteries)
|
|
}
|
|
|
|
func TestStatsLegacyBatteryPayload(t *testing.T) {
|
|
data, err := json.Marshal(Stats{Battery: [2]uint8{50, 4}})
|
|
require.NoError(t, err)
|
|
var payload map[string]any
|
|
require.NoError(t, json.Unmarshal(data, &payload))
|
|
assert.Contains(t, payload, "bat")
|
|
assert.NotContains(t, payload, "bats")
|
|
}
|