runOn:
    -
        minServerVersion: "4.0"
        topology: ["replicaset"]
    -
        minServerVersion: "4.1.8"
        topology: ["sharded"]

database_name: &database_name "transaction-tests"
collection_name: &collection_name "test"

data: []
tests:
  - description: Client side error in command starting transaction

    operations:
      - name: startTransaction
        object: session0
      - name: updateOne
        object: collection
        arguments:
          session: session0
          filter: { _id: 1 }
          update: { x: 1 }
        error: true
      - name: assertSessionTransactionState
        object: testRunner
        arguments:
          session: session0
          state: starting

  - description: Client side error when transaction is in progress

    operations:
      - name: startTransaction
        object: session0
      - name: insertOne
        object: collection
        arguments:
          session: session0
          document: { _id: 1 }
        result:
          insertedId: 1
      - name: updateOne
        object: collection
        arguments:
          session: session0
          filter: { _id: 1 }
          update: { x: 1 }
        error: true
      - name: assertSessionTransactionState
        object: testRunner
        arguments:
          session: session0
          state: in_progress
