From 01476d5408b4a89f69385ea85f1bee4c39ab669a Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Wed, 2 Oct 2024 13:22:00 +0300 Subject: [PATCH] update tests --- menu_traversal_test.go | 104 +++++++++++++++++++++++++++++++++++++++-- test_data.json | 87 ++++++++++++++++++++++++++++++++-- 2 files changed, 182 insertions(+), 9 deletions(-) diff --git a/menu_traversal_test.go b/menu_traversal_test.go index 861a09d..b200322 100644 --- a/menu_traversal_test.go +++ b/menu_traversal_test.go @@ -313,6 +313,38 @@ func TestMyAccount_Change_Language(t *testing.T) { } } +func TestMyAccount_Change_Language_Incorrect_Pin(t *testing.T) { + en, fn := enginetest.TestEngine("session1234112") + defer fn() + ctx := context.Background() + sessions := testData + for _, session := range sessions { + groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_language_change_incorectpin") + for _, group := range groups { + for index, step := range group.Steps { + t.Logf("step %v with input %v", index, step.Input) + cont, err := en.Exec(ctx, []byte(step.Input)) + if err != nil { + t.Errorf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) + return + } + if !cont { + break + } + w := bytes.NewBuffer(nil) + if _, err := en.Flush(ctx, w); err != nil { + t.Errorf("Test case '%s' failed during Flush: %v", group.Name, err) + } + b := w.Bytes() + if !bytes.Equal(b, []byte(step.ExpectedContent)) { + t.Fatalf("expected:\n\t%s\ngot:\n\t%s\n", step.ExpectedContent, b) + } + + } + } + } +} + func TestMyAccount_Edit_firstname(t *testing.T) { en, fn := enginetest.TestEngine("session1234112") defer fn() @@ -537,13 +569,13 @@ func TestMyAccount_View_Profile(t *testing.T) { } } -func TestMyAccount_Check_Balance(t *testing.T) { +func TestMyAccount_Check_My_Balance(t *testing.T) { en, fn := enginetest.TestEngine("session1234112") defer fn() ctx := context.Background() sessions := testData for _, session := range sessions { - groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_balance") + groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_my_balance") for _, group := range groups { for index, step := range group.Steps { t.Logf("step %v with input %v", index, step.Input) @@ -569,13 +601,77 @@ func TestMyAccount_Check_Balance(t *testing.T) { } } -func TestMyAccount_Check_Balance_IncorrectPin(t *testing.T) { +func TestMyAccount_Check_My_Balance_IncorrectPin(t *testing.T) { en, fn := enginetest.TestEngine("session1234112") defer fn() ctx := context.Background() sessions := testData for _, session := range sessions { - groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_balance_incorrect_pin") + groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_my_balance_incorrect_pin") + for _, group := range groups { + for index, step := range group.Steps { + t.Logf("step %v with input %v", index, step.Input) + cont, err := en.Exec(ctx, []byte(step.Input)) + if err != nil { + t.Errorf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) + return + } + if !cont { + break + } + w := bytes.NewBuffer(nil) + if _, err := en.Flush(ctx, w); err != nil { + t.Errorf("Test case '%s' failed during Flush: %v", group.Name, err) + } + b := w.Bytes() + if !bytes.Equal(b, []byte(step.ExpectedContent)) { + t.Fatalf("expected:\n\t%s\ngot:\n\t%s\n", step.ExpectedContent, b) + } + + } + } + } +} + +func TestMyAccount_Check_Community_Balance(t *testing.T) { + en, fn := enginetest.TestEngine("session1234112") + defer fn() + ctx := context.Background() + sessions := testData + for _, session := range sessions { + groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_community_balance") + for _, group := range groups { + for index, step := range group.Steps { + t.Logf("step %v with input %v", index, step.Input) + cont, err := en.Exec(ctx, []byte(step.Input)) + if err != nil { + t.Errorf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) + return + } + if !cont { + break + } + w := bytes.NewBuffer(nil) + if _, err := en.Flush(ctx, w); err != nil { + t.Errorf("Test case '%s' failed during Flush: %v", group.Name, err) + } + b := w.Bytes() + if !bytes.Equal(b, []byte(step.ExpectedContent)) { + t.Fatalf("expected:\n\t%s\ngot:\n\t%s\n", step.ExpectedContent, b) + } + + } + } + } +} + +func TestMyAccount_Check_Community_Balance_IncorrectPin(t *testing.T) { + en, fn := enginetest.TestEngine("session1234112") + defer fn() + ctx := context.Background() + sessions := testData + for _, session := range sessions { + groups := driver.FilterGroupsByName(session.Groups, "menu_my_account_check_community_balance_incorrect_pin") for _, group := range groups { for index, step := range group.Steps { t.Logf("step %v with input %v", index, step.Input) diff --git a/test_data.json b/test_data.json index a6737f4..66d9702 100644 --- a/test_data.json +++ b/test_data.json @@ -239,6 +239,29 @@ ] }, + { + "name": "menu_my_account_language_change_incorectpin", + "steps": [ + { + "input":"", + "expectedContent": "Balance: 0.003 CELO\n\n1:Send\n2:My Vouchers\n3:My Account\n4:Help\n9:Quit" + + }, + { + "input": "3", + "expectedContent": "My Account\n1:Profile\n2:Change language\n3:Check balances\n4:Check statement\n5:PIN options\n6:My Address\n0:Back" + }, + { + "input": "2", + "expectedContent": "Please enter your PIN:" + }, + { + "input": "1235", + "expectedContent": "Incorrect pin\n1:retry\n9:Quit" + } + + ] + }, { "name": "menu_my_account_edit_firstname", "steps": [ @@ -324,7 +347,7 @@ "expectedContent": "My profile\n1:Edit name\n2:Edit family name\n3:Edit gender\n4:Edit year of birth\n5:Edit location\n6:Edit offerings\n7:View profile\n0:Back" }, { - "input": "2", + "input": "3", "expectedContent": "Select gender: \n1:Male\n2:Female\n3:Unspecified\n0:Back" }, { @@ -465,7 +488,7 @@ }, { "input": "1234", - "expectedContent": "My profile:\nName: foo foo\nGender: foo\nAge: 79\nLocation: 1945\nYou provide: 1945\n\n0:Back" + "expectedContent": "My profile:\nName: foo bar\nGender: Female\nAge: 79\nLocation: Kilifi\nYou provide: Bananas\n\n0:Back" }, { "input": "0", @@ -483,7 +506,7 @@ ] }, { - "name": "menu_my_account_check_balance", + "name": "menu_my_account_check_my_balance", "steps": [ { "input":"", @@ -504,13 +527,40 @@ }, { "input": "1234", - "expectedContent": "Please enter your PIN:" + "expectedContent": "Your balance is: 0.00 SRFYour account balance is 0.003 CELO" } ] }, { - "name": "menu_my_account_check_balance_incorrect_pin", + "name": "menu_my_account_check_community_balance", + "steps": [ + { + "input":"", + "expectedContent": "Balance: 0.003 CELO\n\n1:Send\n2:My Vouchers\n3:My Account\n4:Help\n9:Quit" + + }, + { + "input": "3", + "expectedContent": "My Account\n1:Profile\n2:Change language\n3:Check balances\n4:Check statement\n5:PIN options\n6:My Address\n0:Back" + }, + { + "input": "3", + "expectedContent": "Balances:\n1:My balance\n2:Community balance\n0:Back" + }, + { + "input": "2", + "expectedContent": "Please enter your PIN:" + }, + { + "input": "1234", + "expectedContent": "Your balance is: 0.00 SRFYour account balance is 0.003 CELO" + } + + ] + }, + { + "name": "menu_my_account_check_my_balance_incorrect_pin", "steps": [ { "input":"", @@ -536,6 +586,33 @@ ] }, + { + "name": "menu_my_account_check_community_balance_incorrect_pin", + "steps": [ + { + "input":"", + "expectedContent": "Balance: 0.003 CELO\n\n1:Send\n2:My Vouchers\n3:My Account\n4:Help\n9:Quit" + + }, + { + "input": "3", + "expectedContent": "My Account\n1:Profile\n2:Change language\n3:Check balances\n4:Check statement\n5:PIN options\n6:My Address\n0:Back" + }, + { + "input": "3", + "expectedContent": "Balances:\n1:My balance\n2:Community balance\n0:Back" + }, + { + "input": "2", + "expectedContent": "Please enter your PIN:" + }, + { + "input": "1235", + "expectedContent": "Incorrect pin\n1:retry\n9:Quit" + } + + ] + }, { "name": "menu_my_account_my_address", "steps": [