test: improve test coverage on save gender

This commit is contained in:
Carlosokumu 2025-03-05 08:27:44 +03:00
parent f7b81ab629
commit 4dbe69954c
Signed by: carlos
GPG Key ID: 7BD6BC8160A5C953

View File

@ -713,59 +713,74 @@ func TestSaveGender(t *testing.T) {
// Set the flag in the State
mockState := state.NewState(108)
mockState.SetFlag(flag_allow_update)
// Define test cases
tests := []struct {
name string
setupfunc func()
input []byte
expectedGender string
expectedResult resource.Result
executingSymbol string
}{
{
name: "Valid Male Input",
input: []byte("1"),
name: "Valid Male Input with `flag_allow_update_set` set",
input: []byte("1"),
setupfunc: func() {
mockState.SetFlag(flag_allow_update)
},
expectedGender: "male",
executingSymbol: "set_male",
expectedResult: resource.Result{
FlagSet: []uint32{flag_gender_set},
},
},
{
name: "Valid Female Input",
input: []byte("2"),
name: "Valid Female Input when `flag_allow_update` is not set but `flag_gender_set` is set",
input: []byte("2"),
setupfunc: func() {
mockState.ResetFlag(flag_allow_update)
mockState.SetFlag(flag_gender_set)
},
expectedResult: resource.Result{},
expectedGender: "female",
executingSymbol: "set_female",
},
{
name: "Valid Unspecified Input",
name: "Valid Unspecified Input when both `flag_allow_update` and `flag_gender_set` are not set",
setupfunc: func() {
mockState.ResetFlag(flag_allow_update)
mockState.ResetFlag(flag_gender_set)
},
input: []byte("3"),
executingSymbol: "set_unspecified",
expectedResult: resource.Result{},
expectedGender: "unspecified",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.setupfunc()
mockState.ExecPath = append(mockState.ExecPath, tt.executingSymbol)
if err := store.WriteEntry(ctx, sessionId, storedb.DATA_TEMPORARY_VALUE, []byte(tt.expectedGender)); err != nil {
t.Fatal(err)
}
mockState.ExecPath = append(mockState.ExecPath, tt.executingSymbol)
// Create the MenuHandlers instance with the mock store
h := &MenuHandlers{
userdataStore: store,
st: mockState,
flagManager: fm,
profile: &profile.Profile{Max: 6},
}
expectedResult := resource.Result{}
// Call the method
res, err := h.SaveGender(ctx, "save_gender", tt.input)
expectedResult.FlagSet = []uint32{flag_gender_set}
// Assert results
assert.NoError(t, err)
assert.Equal(t, expectedResult, res)
assert.Equal(t, tt.expectedResult, res)
// Verify that the DATA_GENDER entry has been updated with the temporary value
storedGender, _ := store.ReadEntry(ctx, sessionId, storedb.DATA_GENDER)