Skip to content

Commit 5a07114

Browse files
committed
Implement ConfigGetDirResponseAssertion for improved CONFIG GET dir validation
1 parent 8b6b21c commit 5a07114

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package resp_assertions
2+
3+
import (
4+
"fmt"
5+
6+
resp_value "github.com/codecrafters-io/redis-tester/internal/resp/value"
7+
)
8+
9+
type ConfigGetDirResponseAssertion struct {
10+
ExpectedDirValue string
11+
}
12+
13+
func NewConfigGetDirResponseAssertion(expectedDirValue string) RESPAssertion {
14+
return ConfigGetDirResponseAssertion{ExpectedDirValue: expectedDirValue}
15+
}
16+
17+
func (a ConfigGetDirResponseAssertion) Run(value resp_value.Value) error {
18+
arrayTypeAssertion := DataTypeAssertion{ExpectedType: resp_value.ARRAY}
19+
20+
if err := arrayTypeAssertion.Run(value); err != nil {
21+
return err
22+
}
23+
24+
if len(value.Array()) != 2 {
25+
return fmt.Errorf("Expected 2 elements in array, got %d (%s)", len(value.Array()), value.FormattedString())
26+
}
27+
28+
firstElement := value.Array()[0]
29+
secondElement := value.Array()[1]
30+
31+
err := NewBulkStringAssertion("dir").Run(firstElement)
32+
if err != nil {
33+
return err
34+
}
35+
36+
if secondElement.Type != resp_value.BULK_STRING {
37+
return fmt.Errorf("Expected element 1 to be a bulk string, got %s", secondElement.Type)
38+
}
39+
40+
if secondElement.String() != a.ExpectedDirValue && secondElement.String() != a.ExpectedDirValue+"/" {
41+
return fmt.Errorf("Expected element 1 to be %q, got %q", a.ExpectedDirValue, secondElement.String())
42+
}
43+
44+
return nil
45+
}

internal/test_rdb_config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func testRdbConfig(stageHarness *test_case_harness.TestCaseHarness) error {
3838
commandTestCase := test_cases.SendCommandTestCase{
3939
Command: "CONFIG",
4040
Args: []string{"GET", "dir"},
41-
Assertion: resp_assertions.NewOrderedBulkStringArrayAssertion([]string{"dir", tmpDir}),
41+
Assertion: resp_assertions.NewConfigGetDirResponseAssertion(tmpDir),
4242
ShouldSkipUnreadDataCheck: false,
4343
}
4444

0 commit comments

Comments
 (0)