Skip to content

Commit be1138f

Browse files
cvclaude
andcommitted
refactor: Use specific testify assertions instead of True/False
Replace generic assert.True/False with more descriptive alternatives: - strings.Contains → assert.Contains - bytes.Equal → assert.Equal - regexp.MatchString → assert.Regexp - assert.False(x != y) → assert.Equal/Empty/Zero - require.False(len(x) == 0) → require.NotEmpty - error message checks → assert.ErrorContains This improves test failure messages by leveraging testify's built-in formatting for each assertion type. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent b47dade commit be1138f

File tree

12 files changed

+54
-49
lines changed

12 files changed

+54
-49
lines changed

internal/api/client_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func TestEncryptPayloadUsingKey_EmptyPayload(t *testing.T) {
210210
encrypted, err := client.encryptPayloadUsingKey("")
211211
require.NoError(t, err, "Failed to encrypt empty payload: %v")
212212

213-
assert.False(t, encrypted != "", "Expected empty encrypted payload for empty input")
213+
assert.Empty(t, encrypted)
214214
}
215215

216216
// TestEncryptPayloadUsingKey_MissingKey tests error when encryption key is missing

internal/api/client_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ func TestAPIRequest_EncryptionError(t *testing.T) {
8787

8888
// APIRequest retries on EncryptionError by fetching new keys
8989
// Since our mock server always returns the same error, it eventually fails with wrapped error
90-
expectedMsg := "failed to retrieve encryption keys"
91-
assert.Truef(t, strings.Contains(err.Error(), expectedMsg), "Expected error containing %q, got: %v", expectedMsg, err)
90+
assert.ErrorContains(t, err, "failed to retrieve encryption keys")
9291
}
9392

9493
// TestAPIRequest_TokenExpired tests handling of expired token error
@@ -117,8 +116,7 @@ func TestAPIRequest_TokenExpired(t *testing.T) {
117116

118117
// APIRequest retries on TokenExpiredError by re-logging in
119118
// Since re-login will fail (mock server only handles one endpoint), we get a wrapped error
120-
expectedMsg := "failed to login"
121-
assert.Truef(t, strings.Contains(err.Error(), expectedMsg), "Expected error containing %q, got: %v", expectedMsg, err)
119+
assert.ErrorContains(t, err, "failed to login")
122120
}
123121

124122
// TestAPIRequest_RequestInProgress tests handling of request in progress error

internal/api/types_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,11 @@ func TestVehicleStatusResponse_Unmarshal(t *testing.T) {
187187
assert.EqualValuesf(t, -122.4194, alert.PositionInfo.Longitude, "Expected Longitude -122.4194, got %f", alert.PositionInfo.Longitude)
188188

189189
door := alert.Door
190-
assert.False(t, door.DrStatDrv != 0 || door.DrStatPsngr != 0 || door.DrStatRl != 0 || door.DrStatRr != 0 || door.DrStatTrnkLg != 0, "Expected all doors to be locked (0)")
190+
assert.Zero(t, door.DrStatDrv)
191+
assert.Zero(t, door.DrStatPsngr)
192+
assert.Zero(t, door.DrStatRl)
193+
assert.Zero(t, door.DrStatRr)
194+
assert.Zero(t, door.DrStatTrnkLg)
191195
}
192196

193197
func TestEVVehicleStatusResponse_Unmarshal(t *testing.T) {

internal/api/undisplayed_fields_test.go

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
103103
// DriveInformation.OdoDispValue
104104
remoteInfos, ok := getMapSlice(responseData, "remoteInfos")
105105
require.True(t, ok, "remoteInfos not found in response")
106-
require.False(t, len(remoteInfos) == 0, "remoteInfos is empty")
106+
require.NotEmpty(t, remoteInfos)
107107
driveInfo, ok := getMap(remoteInfos[0], "DriveInformation")
108108
require.True(t, ok, "DriveInformation not found in response")
109109
odometer, ok := getFloat64(driveInfo, "OdoDispValue")
@@ -115,7 +115,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
115115
// alertInfos[].Door.DrStatHood
116116
alertInfos, ok := getMapSlice(responseData, "alertInfos")
117117
require.True(t, ok, "alertInfos not found in response")
118-
require.False(t, len(alertInfos) == 0, "alertInfos is empty")
118+
require.NotEmpty(t, alertInfos)
119119
door, ok := getMap(alertInfos[0], "Door")
120120
require.True(t, ok, "Door not found in response")
121121
hoodStatus, ok := getFloat64(door, "DrStatHood")
@@ -127,7 +127,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
127127
// alertInfos[].Door.FuelLidOpenStatus
128128
alertInfos, ok := getMapSlice(responseData, "alertInfos")
129129
require.True(t, ok, "alertInfos not found in response")
130-
require.False(t, len(alertInfos) == 0, "alertInfos is empty")
130+
require.NotEmpty(t, alertInfos)
131131
door, ok := getMap(alertInfos[0], "Door")
132132
require.True(t, ok, "Door not found in response")
133133
fuelLid, ok := getFloat64(door, "FuelLidOpenStatus")
@@ -139,7 +139,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
139139
// alertInfos[].Door.LockLinkSwDrv/Psngr/Rl/Rr
140140
alertInfos, ok := getMapSlice(responseData, "alertInfos")
141141
require.True(t, ok, "alertInfos not found in response")
142-
require.False(t, len(alertInfos) == 0, "alertInfos is empty")
142+
require.NotEmpty(t, alertInfos)
143143
door, ok := getMap(alertInfos[0], "Door")
144144
require.True(t, ok, "Door not found in response")
145145

@@ -155,7 +155,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
155155
// alertInfos[].Pw.PwPosDrv/Psngr/Rl/Rr
156156
alertInfos, ok := getMapSlice(responseData, "alertInfos")
157157
require.True(t, ok, "alertInfos not found in response")
158-
require.False(t, len(alertInfos) == 0, "alertInfos is empty")
158+
require.NotEmpty(t, alertInfos)
159159
pw, ok := getMap(alertInfos[0], "Pw")
160160
require.True(t, ok, "Pw not found in response")
161161

@@ -171,7 +171,7 @@ func TestUndisplayedFieldsInVehicleStatus(t *testing.T) {
171171
// alertInfos[].HazardLamp.HazardSw
172172
alertInfos, ok := getMapSlice(responseData, "alertInfos")
173173
require.True(t, ok, "alertInfos not found in response")
174-
require.False(t, len(alertInfos) == 0, "alertInfos is empty")
174+
require.NotEmpty(t, alertInfos)
175175
hazard, ok := getMap(alertInfos[0], "HazardLamp")
176176
require.True(t, ok, "HazardLamp not found in response")
177177
hazardSw, ok := getFloat64(hazard, "HazardSw")
@@ -238,7 +238,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
238238
t.Run("VerifyACChargeTimeField", func(t *testing.T) {
239239
// ChargeInfo.MaxChargeMinuteAC
240240
resultData, ok := getMapSlice(responseData, "resultData")
241-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
241+
require.True(t, ok, "resultData not found in response")
242+
require.NotEmpty(t, resultData)
242243
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
243244
require.True(t, ok, "PlusBInformation not found in response")
244245
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -253,7 +254,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
253254
t.Run("VerifyQuickChargeTimeField", func(t *testing.T) {
254255
// ChargeInfo.MaxChargeMinuteQBC
255256
resultData, ok := getMapSlice(responseData, "resultData")
256-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
257+
require.True(t, ok, "resultData not found in response")
258+
require.NotEmpty(t, resultData)
257259
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
258260
require.True(t, ok, "PlusBInformation not found in response")
259261
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -268,7 +270,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
268270
t.Run("VerifyBatteryHeaterAutoField", func(t *testing.T) {
269271
// ChargeInfo.CstmzStatBatHeatAutoSW
270272
resultData, ok := getMapSlice(responseData, "resultData")
271-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
273+
require.True(t, ok, "resultData not found in response")
274+
require.NotEmpty(t, resultData)
272275
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
273276
require.True(t, ok, "PlusBInformation not found in response")
274277
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -283,7 +286,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
283286
t.Run("VerifyBatteryHeaterOnField", func(t *testing.T) {
284287
// ChargeInfo.BatteryHeaterON
285288
resultData, ok := getMapSlice(responseData, "resultData")
286-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
289+
require.True(t, ok, "resultData not found in response")
290+
require.NotEmpty(t, resultData)
287291
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
288292
require.True(t, ok, "PlusBInformation not found in response")
289293
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -298,7 +302,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
298302
t.Run("VerifyInteriorTempField", func(t *testing.T) {
299303
// RemoteHvacInfo.InteriorTemp
300304
resultData, ok := getMapSlice(responseData, "resultData")
301-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
305+
require.True(t, ok, "resultData not found in response")
306+
require.NotEmpty(t, resultData)
302307
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
303308
require.True(t, ok, "PlusBInformation not found in response")
304309
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -313,7 +318,8 @@ func TestUndisplayedFieldsInEVVehicleStatus(t *testing.T) {
313318
t.Run("VerifyTargetTempField", func(t *testing.T) {
314319
// RemoteHvacInfo.TargetTemp
315320
resultData, ok := getMapSlice(responseData, "resultData")
316-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
321+
require.True(t, ok, "resultData not found in response")
322+
require.NotEmpty(t, resultData)
317323
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
318324
require.True(t, ok, "PlusBInformation not found in response")
319325
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")
@@ -394,7 +400,8 @@ func TestVehicleStatusWithVariedValues(t *testing.T) {
394400

395401
// Verify varied values
396402
alertInfos, ok := getMapSlice(responseData, "alertInfos")
397-
require.False(t, !ok || len(alertInfos) == 0, "alertInfos not found in response")
403+
require.True(t, ok, "alertInfos not found in response")
404+
require.NotEmpty(t, alertInfos)
398405
door, ok := getMap(alertInfos[0], "Door")
399406
require.True(t, ok, "Door not found")
400407
hoodStatus, ok := getFloat64(door, "DrStatHood")
@@ -422,7 +429,8 @@ func TestVehicleStatusWithVariedValues(t *testing.T) {
422429
assert.EqualValues(t, 1, hazardSw)
423430

424431
remoteInfos, ok := getMapSlice(responseData, "remoteInfos")
425-
require.False(t, !ok || len(remoteInfos) == 0, "remoteInfos not found in response")
432+
require.True(t, ok, "remoteInfos not found in response")
433+
require.NotEmpty(t, remoteInfos)
426434
driveInfo, ok := getMap(remoteInfos[0], "DriveInformation")
427435
require.True(t, ok, "DriveInformation not found")
428436
odometer, ok := getFloat64(driveInfo, "OdoDispValue")
@@ -477,7 +485,8 @@ func TestEVVehicleStatusWithVariedValues(t *testing.T) {
477485

478486
// Verify varied values
479487
resultData, ok := getMapSlice(responseData, "resultData")
480-
require.False(t, !ok || len(resultData) == 0, "resultData not found in response")
488+
require.True(t, ok, "resultData not found in response")
489+
require.NotEmpty(t, resultData)
481490
plusBInfo, ok := getMap(resultData[0], "PlusBInformation")
482491
require.True(t, ok, "PlusBInformation not found in response")
483492
vehicleInfo, ok := getMap(plusBInfo, "VehicleInfo")

internal/cli/root_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"context"
66
"os"
7-
"strings"
87
"syscall"
98
"testing"
109
"time"
@@ -25,7 +24,7 @@ func TestRootCmd_Version(t *testing.T) {
2524
require.NoError(t, err, "Execute() error = %v")
2625

2726
result := output.String()
28-
assert.Truef(t, strings.Contains(result, "mcs version"), "Expected version output, got: %s", result)
27+
assert.Contains(t, result, "mcs version")
2928
}
3029

3130
func TestRootCmd_Help(t *testing.T) {
@@ -39,9 +38,9 @@ func TestRootCmd_Help(t *testing.T) {
3938
require.NoError(t, err, "Execute() error = %v")
4039

4140
result := output.String()
42-
assert.Truef(t, strings.Contains(result, "mcs"), "Expected help output to contain 'mcs', got: %s", result)
41+
assert.Contains(t, result, "mcs")
4342
// Check for content from the Long description
44-
assert.Truef(t, strings.Contains(result, "manufacturer API"), "Expected help output to contain 'manufacturer API', got: %s", result)
43+
assert.Contains(t, result, "manufacturer API")
4544
}
4645

4746
func TestRootCmd_NoArgs(t *testing.T) {

internal/cli/skill_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func TestSkillUninstallCommand_Execute(t *testing.T) {
267267
output := outBuf.String()
268268
assert.NotEqual(t, 0, len(output), "Expected output message")
269269
if len(tt.expectedOutput) > 0 {
270-
assert.Truef(t, bytes.Contains([]byte(output), []byte(tt.expectedOutput)), "Expected output to contain '%s', got '%s'", tt.expectedOutput, output)
270+
assert.Contains(t, output, tt.expectedOutput)
271271
}
272272

273273
// Verify directory is removed

internal/cli/status_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cli
22

33
import (
44
"bytes"
5-
"strings"
65
"testing"
76
"time"
87

@@ -475,7 +474,7 @@ func TestFormatTiresStatus(t *testing.T) {
475474
result, err := formatTiresStatus(tireInfo, false)
476475
require.NoError(t, err, "Unexpected error: %v")
477476

478-
assert.Truef(t, strings.Contains(result, tt.expectedPart), "Expected output to contain '%s', got '%s'", tt.expectedPart, result)
477+
assert.Contains(t, result, tt.expectedPart)
479478
})
480479
}
481480
}
@@ -513,7 +512,7 @@ func TestFormatLocationStatus(t *testing.T) {
513512
require.NoError(t, err, "Unexpected error: %v")
514513

515514
for _, expected := range tt.expectedContains {
516-
assert.Truef(t, strings.Contains(result, expected), "Expected output to contain '%s', got '%s'", expected, result)
515+
assert.Contains(t, result, expected)
517516
}
518517
})
519518
}
@@ -1256,15 +1255,15 @@ func TestFormatTimestamp(t *testing.T) {
12561255
result := formatTimestamp(tt.timestamp)
12571256

12581257
if tt.expectedFormat != "" {
1259-
assert.Truef(t, strings.Contains(result, tt.expectedFormat), "Expected result to contain '%s', got '%s'", tt.expectedFormat, result)
1258+
assert.Contains(t, result, tt.expectedFormat)
12601259
// Should also contain relative time in parentheses
12611260
assert.Contains(t, result, "(")
12621261
assert.Contains(t, result, ")")
12631262

12641263
}
12651264

12661265
for _, expected := range tt.expectedContains {
1267-
assert.Truef(t, strings.Contains(result, expected), "Expected result to contain '%s', got '%s'", expected, result)
1266+
assert.Contains(t, result, expected)
12681267
}
12691268
})
12701269
}
@@ -1513,7 +1512,7 @@ func TestDisplayStatusWithVehicle(t *testing.T) {
15131512

15141513
output := buf.String()
15151514
for _, expected := range tt.expectedOutput {
1516-
assert.Truef(t, strings.Contains(output, expected), "Expected output to contain '%s', got '%s'", expected, output)
1515+
assert.Contains(t, output, expected)
15171516
}
15181517
})
15191518
}
@@ -1688,7 +1687,7 @@ func TestDisplayAllStatus(t *testing.T) {
16881687
}
16891688
} else {
16901689
for _, expected := range tt.expectedOutput {
1691-
assert.Truef(t, strings.Contains(result, expected), "Expected output to contain '%s', got '%s'", expected, result)
1690+
assert.Contains(t, result, expected)
16921691
}
16931692
}
16941693
})

internal/crypto/crypto_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package crypto
22

33
import (
4-
"bytes"
54
"crypto/aes"
65
"testing"
76

@@ -82,7 +81,7 @@ func TestPKCS7Unpad(t *testing.T) {
8281
}
8382

8483
if !tt.wantErr {
85-
assert.Truef(t, bytes.Equal(result, tt.want), "PKCS7Unpad() = %v, want %v", result, tt.want)
84+
assert.Equal(t, tt.want, result)
8685
}
8786

8887
})
@@ -94,7 +93,7 @@ func TestPKCS7PadUnpad_RoundTrip(t *testing.T) {
9493
padded := PKCS7Pad(data, aes.BlockSize)
9594
unpadded, err := PKCS7Unpad(padded)
9695
require.NoError(t, err, "PKCS7Unpad() error = %v")
97-
assert.Truef(t, bytes.Equal(unpadded, data), "Round trip failed: got %v, want %v", unpadded, data)
96+
assert.Equal(t, data, unpadded)
9897
}
9998

10099
func TestEncryptDecryptAES128CBC(t *testing.T) {
@@ -108,7 +107,7 @@ func TestEncryptDecryptAES128CBC(t *testing.T) {
108107
decrypted, err := DecryptAES128CBC(encrypted, key, iv)
109108
require.NoError(t, err, "DecryptAES128CBC() error = %v")
110109

111-
assert.Truef(t, bytes.Equal(decrypted, plaintext), "DecryptAES128CBC() = %v, want %v", decrypted, plaintext)
110+
assert.Equal(t, plaintext, decrypted)
112111
}
113112

114113
func TestEncryptAES128CBC_InvalidKey(t *testing.T) {

internal/sensordata/key_event_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package sensordata
22

33
import (
4-
"strings"
54
"testing"
65
"time"
76

@@ -72,8 +71,8 @@ func TestKeyEventList_ToString(t *testing.T) {
7271
result := list.ToString()
7372

7473
// Should contain both events
75-
assert.True(t, strings.Contains(result, "2,5000,517;"), "Expected ToString to contain first event")
76-
assert.True(t, strings.Contains(result, "2,30,517,1;"), "Expected ToString to contain second event")
74+
assert.Contains(t, result, "2,5000,517;", "first event")
75+
assert.Contains(t, result, "2,30,517,1;", "second event")
7776
}
7877

7978
func TestKeyEventList_ToString_Empty(t *testing.T) {

internal/sensordata/sensor_data_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package sensordata
22

33
import (
4-
"regexp"
54
"strings"
65
"testing"
76
"time"
@@ -39,7 +38,7 @@ func TestSensorDataBuilder_GenerateSensorData(t *testing.T) {
3938

4039
// Format is: 1,a,<aes_key>,<hmac_key>$<encrypted_data>$<timestamps>
4140
// Check that it ends with timestamps in format: $<num>,<num>,<num>
42-
assert.True(t, regexp.MustCompile(`\$[0-9]+,[0-9]+,[0-9]+$`).MatchString(result), "Expected timestamp format at end: $<num>,<num>,<num>")
41+
assert.Regexp(t, `\$[0-9]+,[0-9]+,[0-9]+$`, result, "expected timestamp format at end")
4342
}
4443

4544
func TestCountSeparators(t *testing.T) {

0 commit comments

Comments
 (0)