github.com/getgauge/gauge@v1.6.9/execution/result/conceptResult_test.go (about)

     1  /*----------------------------------------------------------------
     2   *  Copyright (c) ThoughtWorks, Inc.
     3   *  Licensed under the Apache License, Version 2.0
     4   *  See LICENSE in the project root for license information.
     5   *----------------------------------------------------------------*/
     6  
     7  package result
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/getgauge/gauge-proto/go/gauge_messages"
    13  	gc "gopkg.in/check.v1"
    14  )
    15  
    16  func Test(t *testing.T) { gc.TestingT(t) }
    17  
    18  type MySuite struct{}
    19  
    20  var _ = gc.Suite(&MySuite{})
    21  
    22  func (s *MySuite) TestUpdateConceptExecutionResultWithARecoverableStep(c *gc.C) {
    23  	cptStep := &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}
    24  	item1 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}}
    25  	step2Res := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{RecoverableError: true, Failed: true}}
    26  	item2 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: step2Res}}
    27  	item3 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}}
    28  	cptRes := NewConceptResult(&gauge_messages.ProtoConcept{ConceptStep: cptStep, Steps: []*gauge_messages.ProtoItem{item1, item2, item3}})
    29  
    30  	cptRes.UpdateConceptExecResult()
    31  
    32  	c.Assert(cptRes.GetFailed(), gc.Equals, true)
    33  	c.Assert(cptRes.GetRecoverable(), gc.Equals, true)
    34  }
    35  
    36  func (s *MySuite) TestUpdateConceptExecutionResultWithNonRecoverableFailure(c *gc.C) {
    37  	cptStep := &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}
    38  	item1 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}}
    39  	step2Res := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{Failed: true, ErrorMessage: "step failure"}}
    40  	item2 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: step2Res}}
    41  	item3 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}}
    42  	cptRes := NewConceptResult(&gauge_messages.ProtoConcept{ConceptStep: cptStep, Steps: []*gauge_messages.ProtoItem{item1, item2, item3}})
    43  
    44  	cptRes.UpdateConceptExecResult()
    45  
    46  	c.Assert(cptRes.GetFailed(), gc.Equals, true)
    47  	c.Assert(cptRes.GetRecoverable(), gc.Equals, false)
    48  	c.Assert(cptRes.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetErrorMessage(), gc.Equals, "step failure")
    49  }
    50  
    51  func (s *MySuite) TestUpdateConceptExecutionResultWithRecoverableAndNonRecoverableSteps(c *gc.C) {
    52  	cptStep := &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}
    53  	step1Res := &gauge_messages.ProtoExecutionResult{Failed: true, RecoverableError: true, ErrorMessage: "a recoverable step"}
    54  	item1 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: step1Res}}}
    55  	step2Res := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{Failed: true, ErrorMessage: "step failure"}}
    56  	item2 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: step2Res}}
    57  	item3 := &gauge_messages.ProtoItem{ItemType: gauge_messages.ProtoItem_Step, Step: &gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{}}}}
    58  	cptRes := NewConceptResult(&gauge_messages.ProtoConcept{ConceptStep: cptStep, Steps: []*gauge_messages.ProtoItem{item1, item2, item3}})
    59  
    60  	cptRes.UpdateConceptExecResult()
    61  
    62  	c.Assert(cptRes.GetFailed(), gc.Equals, true)
    63  	c.Assert(cptRes.GetRecoverable(), gc.Equals, false)
    64  	c.Assert(cptRes.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetErrorMessage(), gc.Equals, "step failure")
    65  }