package main import ( "testing" "time" ) func TestChatState(t *testing.T) { procedure := "getUserBasicProfile" s := chatState{} s.Name = "waiting for username" s.Expire = int32(time.Now().Unix() + 200) s.Send.Message = map[string]string{ "txt": "What is your date of birth?", "icon": "/mnt/data/abc.jpg"} s.Send.Type = "text" s.Receive.Hint = "hint" s.Receive.Validator = "validator email" s.Receive.Message = map[string]string{ "rtxt": "should be 3 chars at least", "ricon": "icon path should be available"} //save n, err := setCurrentState("id", procedure, s) AssertEqual(t, err, nil, "save state should be successful") //read out m, _ := getCurrentState("id", procedure) //compare AssertEqual(t, m.Name, n.Name, "Name should be equal") AssertEqual(t, m.Expire, n.Expire, "Expire should be equal") AssertEqual(t, m.Send.Type, n.Send.Type, "Send.Type should be equal") AssertEqual(t, m.Send.Message["txt"], n.Send.Message["txt"], "Message[txt] should be equal") AssertEqual(t, m.Send.Message["icon"], n.Send.Message["icon"], "Message[icon] should be equal") AssertEqual(t, m.Receive.Message["rtxt"], n.Receive.Message["rtxt"], "Message[rtxt] should be equal") AssertEqual(t, m.Receive.Message["ricon"], n.Receive.Message["ricon"], "Message[ricon] should be equal") err = deleteChatState("id", procedure) AssertEqual(t, err, nil, "delete chatState should be good") } func TestStartProcedure(t *testing.T) { s := startProcedure("id", "TestDummy") AssertEqual(t, s != nil, true, "TestDummy should return error") s = startProcedure("id", "TestEcho") AssertEqual(t, s, nil, "TestEqual should return success") }