@@ -2006,86 +2006,146 @@ func Test_ShowHistoryWithID_MissingWorkflowID(t *testing.T) {
20062006 assert .ErrorContains (t , err , fmt .Sprintf ("%s is required" , FlagDomain ))
20072007}
20082008
2009- func Test_ConstructStartWorkflowRequest_MissingFlags (t * testing.T ) {
2010- app := NewCliApp (& clientFactoryMock {})
2011- set := flag .NewFlagSet ("test" , 0 )
2012- c := cli .NewContext (app , set , nil )
2013- _ , err := constructStartWorkflowRequest (c )
2014- assert .ErrorContains (t , err , fmt .Sprintf ("%s is required" , FlagDomain ))
2015-
2016- set .String (FlagDomain , "test-domain" , "domain" )
2017- _ , err = constructStartWorkflowRequest (c )
2018- assert .ErrorContains (t , err , fmt .Sprintf ("%s is required" , FlagTaskList ))
2019-
2020- set .String (FlagTaskList , "test-tasklist" , "tasklist" )
2021- _ , err = constructStartWorkflowRequest (c )
2022- assert .ErrorContains (t , err , fmt .Sprintf ("%s is required" , FlagWorkflowType ))
2023-
2024- set .String (FlagWorkflowType , "test-workflow-type" , "workflow_type" )
2025- _ , err = constructStartWorkflowRequest (c )
2026- assert .ErrorContains (t , err , fmt .Sprintf ("%s format is invalid" , FlagExecutionTimeout ))
2027-
2028- set .String (FlagExecutionTimeout , "10" , "execution_timeout" )
2029- set .Int (FlagWorkflowIDReusePolicy , 1 , "workflowidreusepolicy" )
2030- _ , err = constructStartWorkflowRequest (c )
2031- assert .NoError (t , err )
2032-
2033- // invalid workflowID reuse policy
2034- ctx := clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2035- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2036- clitest .IntArgument (FlagWorkflowIDReusePolicy , - 10 ))
2037- _ , err = constructStartWorkflowRequest (ctx )
2038- assert .ErrorContains (t , err , "value is not in supported range" )
2039-
2040- // process Json error
2041- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2042- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2043- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagInput , "invalid json" ))
2044- _ , err = constructStartWorkflowRequest (ctx )
2045- assert .ErrorContains (t , err , "input is not valid JSON" )
2046-
2047- // error processing first run at
2048- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2049- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2050- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2051- clitest .StringArgument (FirstRunAtTime , "10:00" ))
2052- _ , err = constructStartWorkflowRequest (ctx )
2053- assert .ErrorContains (t , err , "time format invalid" )
2054-
2055- // error processing header
2056- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2057- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2058- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2059- clitest .StringArgument (FlagHeaderFile , "invalid file" ))
2060- _ , err = constructStartWorkflowRequest (ctx )
2061- assert .ErrorContains (t , err , "error when process header" )
2062-
2063- // error processing memo
2064- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2065- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2066- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2067- clitest .StringArgument (FlagMemoFile , "invalid file" ), clitest .StringArgument (FlagSearchAttributesKey , "key" ))
2068- _ , err = constructStartWorkflowRequest (ctx )
2069- assert .ErrorContains (t , err , "Error processing memo" )
2070-
2071- // error processing search attributes
2072- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2073- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2074- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2075- clitest .StringArgument (FlagSearchAttributesKey , "key" ))
2076- _ , err = constructStartWorkflowRequest (ctx )
2077- assert .ErrorContains (t , err , "error processing search attributes" )
2009+ func Test_ConstructStartWorkflowRequest (t * testing.T ) {
2010+ baseArgs := []clitest.CliArgument {
2011+ clitest .StringArgument (FlagDomain , "test-domain" ),
2012+ clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2013+ clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ),
2014+ }
20782015
2079- ctx = clitest .NewCLIContext (t , app , clitest .StringArgument (FlagDomain , "test-domain" ), clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2080- clitest .StringArgument (FlagWorkflowType , "test-workflow-type" ), clitest .StringArgument (FlagExecutionTimeout , "10" ),
2081- clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ), clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2082- clitest .StringArgument (FlagSearchAttributesKey , "key" ), clitest .StringArgument (FlagSearchAttributesVal , "val" ))
2083- _ , err = constructStartWorkflowRequest (ctx )
2084- assert .NoError (t , err )
2085- }
2016+ tests := []struct {
2017+ name string
2018+ cliArguments []clitest.CliArgument
2019+ expectedError bool
2020+ expectedErrorMessage string
2021+ }{
2022+ {
2023+ name : "missing domain" ,
2024+ cliArguments : []clitest.CliArgument {},
2025+ expectedError : true ,
2026+ expectedErrorMessage : fmt .Sprintf ("%s is required" , FlagDomain ),
2027+ },
2028+ {
2029+ name : "missing task list" ,
2030+ cliArguments : []clitest.CliArgument {
2031+ clitest .StringArgument (FlagDomain , "test-domain" ),
2032+ },
2033+ expectedError : true ,
2034+ expectedErrorMessage : fmt .Sprintf ("%s is required" , FlagTaskList ),
2035+ },
2036+ {
2037+ name : "missing workflow type" ,
2038+ cliArguments : []clitest.CliArgument {
2039+ clitest .StringArgument (FlagDomain , "test-domain" ),
2040+ clitest .StringArgument (FlagTaskList , "test-tasklist" ),
2041+ },
2042+ expectedError : true ,
2043+ expectedErrorMessage : fmt .Sprintf ("%s is required" , FlagWorkflowType ),
2044+ },
2045+ {
2046+ name : "invalid execution timeout" ,
2047+ cliArguments : baseArgs ,
2048+ expectedError : true ,
2049+ expectedErrorMessage : fmt .Sprintf ("%s format is invalid" , FlagExecutionTimeout ),
2050+ },
2051+ {
2052+ name : "invalid workflowID reuse policy" ,
2053+ cliArguments : append (
2054+ baseArgs ,
2055+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2056+ clitest .IntArgument (FlagWorkflowIDReusePolicy , - 10 ),
2057+ ),
2058+ expectedError : true ,
2059+ expectedErrorMessage : "value is not in supported range" ,
2060+ },
2061+ {
2062+ name : "process JSON error" ,
2063+ cliArguments : append (
2064+ baseArgs ,
2065+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2066+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2067+ clitest .StringArgument (FlagInput , "invalid json" ),
2068+ ),
2069+ expectedError : true ,
2070+ expectedErrorMessage : "input is not valid JSON" ,
2071+ },
2072+ {
2073+ name : "error processing first run at" ,
2074+ cliArguments : append (
2075+ baseArgs ,
2076+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2077+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2078+ clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2079+ clitest .StringArgument (FirstRunAtTime , "10:00" ),
2080+ ),
2081+ expectedError : true ,
2082+ expectedErrorMessage : "time format invalid" ,
2083+ },
2084+ {
2085+ name : "error processing header" ,
2086+ cliArguments : append (
2087+ baseArgs ,
2088+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2089+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2090+ clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2091+ clitest .StringArgument (FlagHeaderFile , "invalid file" ),
2092+ ),
2093+ expectedError : true ,
2094+ expectedErrorMessage : "error when process header" ,
2095+ },
2096+ {
2097+ name : "error processing memo" ,
2098+ cliArguments : append (
2099+ baseArgs ,
2100+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2101+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2102+ clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2103+ clitest .StringArgument (FlagSearchAttributesKey , "key" ),
2104+ clitest .StringArgument (FlagMemoFile , "invalid file" ),
2105+ ),
2106+ expectedError : true ,
2107+ expectedErrorMessage : "error processing memo" ,
2108+ },
2109+ {
2110+ name : "error processing search attributes" ,
2111+ cliArguments : append (
2112+ baseArgs ,
2113+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2114+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2115+ clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2116+ clitest .StringArgument (FlagSearchAttributesKey , "key" ),
2117+ ),
2118+ expectedError : true ,
2119+ expectedErrorMessage : "error processing search attributes" ,
2120+ },
2121+ {
2122+ name : "no error" ,
2123+ cliArguments : append (
2124+ baseArgs ,
2125+ clitest .StringArgument (FlagExecutionTimeout , "10" ),
2126+ clitest .IntArgument (FlagWorkflowIDReusePolicy , 1 ),
2127+ clitest .StringArgument (FlagCronSchedule , "* * * * *" ),
2128+ clitest .StringArgument (FlagSearchAttributesKey , "key" ),
2129+ clitest .StringArgument (FlagSearchAttributesVal , "val" ),
2130+ ),
2131+ expectedError : false ,
2132+ expectedErrorMessage : "" ,
2133+ },
2134+ }
20862135
2087- func Test_NewTest (t * testing.T ) {
2136+ for _ , tc := range tests {
2137+ t .Run (tc .name , func (t * testing.T ) {
2138+ app := NewCliApp (& clientFactoryMock {})
2139+ ctx := clitest .NewCLIContext (t , app , tc .cliArguments ... )
2140+ _ , err := constructStartWorkflowRequest (ctx )
20882141
2142+ if tc .expectedError {
2143+ assert .ErrorContains (t , err , tc .expectedErrorMessage )
2144+ } else {
2145+ assert .NoError (t , err )
2146+ }
2147+ })
2148+ }
20892149}
20902150
20912151func Test_StartWorkflowHelper_RetryErrorMapping (t * testing.T ) {
0 commit comments