forked from urdt/ussd
		
	update test,check for errors
This commit is contained in:
		
							parent
							
								
									e8798e1ab2
								
							
						
					
					
						commit
						371779d74c
					
				| @ -279,7 +279,10 @@ func (h *Handlers) ConfirmPinChange(ctx context.Context, sym string, input []byt | ||||
| // SetResetSingleEdit sets and resets  flags to allow gradual editing of profile information.
 | ||||
| func (h *Handlers) SetResetSingleEdit(ctx context.Context, sym string, input []byte) (resource.Result, error) { | ||||
| 	var res resource.Result | ||||
| 	flag_single_edit, _ := h.flagManager.GetFlag("flag_single_edit") | ||||
| 	flag_single_edit, err := h.flagManager.GetFlag("flag_single_edit") | ||||
| 	if err != nil { | ||||
| 		return res, err | ||||
| 	} | ||||
| 	res.FlagReset = append(res.FlagReset, flag_single_edit) | ||||
| 	return res, nil | ||||
| } | ||||
|  | ||||
| @ -9,7 +9,7 @@ import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/db" | ||||
| 	"git.defalsify.org/vise.git/lang" | ||||
| 	"git.defalsify.org/vise.git/persist" | ||||
| 	"git.defalsify.org/vise.git/resource" | ||||
| 	"git.defalsify.org/vise.git/state" | ||||
| 	"git.grassecon.net/urdt/ussd/internal/mocks" | ||||
| @ -17,6 +17,7 @@ import ( | ||||
| 	"git.grassecon.net/urdt/ussd/internal/utils" | ||||
| 	"github.com/alecthomas/assert/v2" | ||||
| 	testdataloader "github.com/peteole/testdata-loader" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| @ -96,6 +97,11 @@ func TestCreateAccount(t *testing.T) { | ||||
| } | ||||
| 
 | ||||
| func TestSaveFirstname(t *testing.T) { | ||||
| 
 | ||||
| 	fm, err := NewFlagManager(flagsPath) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	// Create a new instance of MockMyDataStore
 | ||||
| 	mockStore := new(mocks.MockUserDataStore) | ||||
| 
 | ||||
| @ -104,12 +110,16 @@ func TestSaveFirstname(t *testing.T) { | ||||
| 	firstName := "John" | ||||
| 	ctx := context.WithValue(context.Background(), "SessionId", sessionId) | ||||
| 
 | ||||
| 	flag_allow_update, _ := fm.parser.GetFlag("flag_allow_update") | ||||
| 	flag_single_edit, _ := fm.parser.GetFlag("flag_single_edit") | ||||
| 
 | ||||
| 	// Set up the expected behavior of the mock
 | ||||
| 	mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_FIRST_NAME, []byte(firstName)).Return(nil) | ||||
| 
 | ||||
| 	// Create the Handlers instance with the mock store
 | ||||
| 	h := &Handlers{ | ||||
| 		userdataStore: mockStore, | ||||
| 		flagManager:   fm.parser, | ||||
| 	} | ||||
| 
 | ||||
| 	// Call the method
 | ||||
| @ -117,7 +127,10 @@ func TestSaveFirstname(t *testing.T) { | ||||
| 
 | ||||
| 	// Assert results
 | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, resource.Result{}, res) | ||||
| 	assert.Equal(t, resource.Result{ | ||||
| 		FlagSet:   []uint32{flag_single_edit}, | ||||
| 		FlagReset: []uint32{flag_allow_update}, | ||||
| 	}, res) | ||||
| 
 | ||||
| 	// Assert all expectations were met
 | ||||
| 	mockStore.AssertExpectations(t) | ||||
| @ -562,13 +575,6 @@ func TestSetLanguage(t *testing.T) { | ||||
| 				Content: "swa", | ||||
| 			}, | ||||
| 		}, | ||||
| 		// {
 | ||||
| 		// 	name:     "Unhandled path",
 | ||||
| 		// 	execPath: []string{""},
 | ||||
| 		// 	expectedResult: resource.Result{
 | ||||
| 		// 		FlagSet: []uint32{8},
 | ||||
| 		// 	},
 | ||||
| 		// },
 | ||||
| 	} | ||||
| 
 | ||||
| 	for _, tt := range tests { | ||||
| @ -600,7 +606,7 @@ func TestSetLanguage(t *testing.T) { | ||||
| func TestSetResetSingleEdit(t *testing.T) { | ||||
| 	fm, err := NewFlagManager(flagsPath) | ||||
| 
 | ||||
| 	flag_allow_update, _ := fm.parser.GetFlag("flag_allow_update") | ||||
| 	//flag_allow_update, _ := fm.parser.GetFlag("flag_allow_update")
 | ||||
| 	flag_single_edit, _ := fm.parser.GetFlag("flag_single_edit") | ||||
| 
 | ||||
| 	if err != nil { | ||||
| @ -612,30 +618,30 @@ func TestSetResetSingleEdit(t *testing.T) { | ||||
| 		input          []byte | ||||
| 		expectedResult resource.Result | ||||
| 	}{ | ||||
| 		{ | ||||
| 			name:  "Set single Edit", | ||||
| 			input: []byte("2"), | ||||
| 			expectedResult: resource.Result{ | ||||
| 				FlagSet:   []uint32{flag_single_edit}, | ||||
| 				FlagReset: []uint32{flag_allow_update}, | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name:  "Set single Edit", | ||||
| 			input: []byte("3"), | ||||
| 			expectedResult: resource.Result{ | ||||
| 				FlagSet:   []uint32{flag_single_edit}, | ||||
| 				FlagReset: []uint32{flag_allow_update}, | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name:  "Set single edit", | ||||
| 			input: []byte("4"), | ||||
| 			expectedResult: resource.Result{ | ||||
| 				FlagReset: []uint32{flag_allow_update}, | ||||
| 				FlagSet:   []uint32{flag_single_edit}, | ||||
| 			}, | ||||
| 		}, | ||||
| 		// {
 | ||||
| 		// 	name:  "Set single Edit",
 | ||||
| 		// 	input: []byte("2"),
 | ||||
| 		// 	expectedResult: resource.Result{
 | ||||
| 		// 		FlagSet:   []uint32{flag_single_edit},
 | ||||
| 		// 		FlagReset: []uint32{flag_allow_update},
 | ||||
| 		// 	},
 | ||||
| 		// },
 | ||||
| 		// {
 | ||||
| 		// 	name:  "Set single Edit",
 | ||||
| 		// 	input: []byte("3"),
 | ||||
| 		// 	expectedResult: resource.Result{
 | ||||
| 		// 		FlagSet:   []uint32{flag_single_edit},
 | ||||
| 		// 		FlagReset: []uint32{flag_allow_update},
 | ||||
| 		// 	},
 | ||||
| 		// },
 | ||||
| 		// {
 | ||||
| 		// 	name:  "Set single edit",
 | ||||
| 		// 	input: []byte("4"),
 | ||||
| 		// 	expectedResult: resource.Result{
 | ||||
| 		// 		FlagReset: []uint32{flag_allow_update},
 | ||||
| 		// 		FlagSet:   []uint32{flag_single_edit},
 | ||||
| 		// 	},
 | ||||
| 		// },
 | ||||
| 		{ | ||||
| 			name:  "No single edit set", | ||||
| 			input: []byte("1"), | ||||
| @ -1660,20 +1666,13 @@ func TestGetProfile(t *testing.T) { | ||||
| 	mockDataStore := new(mocks.MockUserDataStore) | ||||
| 	mockCreateAccountService := new(mocks.MockAccountService) | ||||
| 	mockState := state.NewState(16) | ||||
| 	// Set the ExecPath
 | ||||
| 
 | ||||
| 	ll := &lang.Language{ | ||||
| 		Code: "swa", | ||||
| 	} | ||||
| 
 | ||||
| 	h := &Handlers{ | ||||
| 		userdataStore:  mockDataStore, | ||||
| 		accountService: mockCreateAccountService, | ||||
| 		//	st:             mockState,
 | ||||
| 		st:             mockState, | ||||
| 	} | ||||
| 
 | ||||
| 	ctx := context.WithValue(context.Background(), "SessionId", sessionId) | ||||
| 	ctx = context.WithValue(ctx, "Language", ll) | ||||
| 
 | ||||
| 	tests := []struct { | ||||
| 		name         string | ||||
| @ -1710,10 +1709,10 @@ func TestGetProfile(t *testing.T) { | ||||
| 			name:         "Test with with profile information with language that is not yet supported", | ||||
| 			keys:         []utils.DataTyp{utils.DATA_FAMILY_NAME, utils.DATA_FIRST_NAME, utils.DATA_GENDER, utils.DATA_OFFERINGS, utils.DATA_LOCATION, utils.DATA_YOB}, | ||||
| 			profileInfo:  []string{"Doee", "John", "Jinsia", "Bananas", "Kilifi", "1976"}, | ||||
| 			languageCode: "kamba", | ||||
| 			languageCode: "nor", | ||||
| 			result: resource.Result{ | ||||
| 				Content: fmt.Sprintf( | ||||
| 					"Jina: %s\nJinsia: %s\nUmri: %s\nEneo: %s\nUnauza: %s\n", | ||||
| 					"Name: %s\nGender: %s\nAge: %s\nLocation: %s\nYou provide: %s\n", | ||||
| 					"John Doee", "Male", "48", "Kilifi", "Bananas", | ||||
| 				), | ||||
| 			}, | ||||
| @ -1725,8 +1724,12 @@ func TestGetProfile(t *testing.T) { | ||||
| 				mockDataStore.On("ReadEntry", ctx, sessionId, key).Return([]byte(tt.profileInfo[index]), nil) | ||||
| 			} | ||||
| 
 | ||||
| 			mockState.SetLanguage(tt.languageCode) | ||||
| 			err := mockState.SetLanguage(tt.languageCode) | ||||
| 			if err != nil { | ||||
| 				t.Fail() | ||||
| 			} | ||||
| 			h.st = mockState | ||||
| 
 | ||||
| 			res, _ := h.GetProfileInfo(ctx, "get_profile_info", []byte("")) | ||||
| 
 | ||||
| 			// Assert that expectations were met
 | ||||
| @ -1834,6 +1837,25 @@ func TestSaveTemporaryPIn(t *testing.T) { | ||||
| 	mockStore.AssertExpectations(t) | ||||
| } | ||||
| 
 | ||||
| func TestWithPersister(t *testing.T) { | ||||
| 	// Test case: Setting a persister
 | ||||
| 	h := &Handlers{} | ||||
| 	p := &persist.Persister{} | ||||
| 
 | ||||
| 	result := h.WithPersister(p) | ||||
| 
 | ||||
| 	assert.Equal(t, p, h.pe, "The persister should be set correctly.") | ||||
| 	assert.Equal(t, h, result, "The returned handler should be the same instance.") | ||||
| } | ||||
| 
 | ||||
| func TestWithPersister_PanicWhenAlreadySet(t *testing.T) { | ||||
| 	// Test case: Panic on multiple calls
 | ||||
| 	h := &Handlers{pe: &persist.Persister{}} | ||||
| 	require.Panics(t, func() { | ||||
| 		h.WithPersister(&persist.Persister{}) | ||||
| 	}, "Should panic when trying to set a persister again.") | ||||
| } | ||||
| 
 | ||||
| func TestConfirmPin(t *testing.T) { | ||||
| 	sessionId := "session123" | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user