{
  "id": "OLI-003",
  "name": "Update OpportunityLineItem quantity",
  "description": "Updating a temporary OpportunityLineItem should persist the new quantity and unit price.",
  "object": "OpportunityLineItem",
  "method": "PATCH",
  "endpoint": "/services/data/v63.0/sobjects/OpportunityLineItem/{opportunity_line_item_id}",
  "payload": {
    "Quantity": 10,
    "UnitPrice": 250.00
  },
  "expects": {
    "status_code": 204
  },
  "query_after": {
    "object": "OpportunityLineItem",
    "assertions": [
      {
        "field": "Quantity",
        "operator": "equals",
        "value": 10
      },
      {
        "field": "UnitPrice",
        "operator": "equals",
        "value": 250.00
      }
    ]
  },
  "setup": [
    {
      "type": "sql",
      "name": "Insert temporary Opportunity for OLI-003",
      "sql": "INSERT INTO Opportunity (Id, Name, CloseDate, ForecastCategory, StageName, Probability, IsDeleted, CreatedDate, LastModifiedDate, SystemModstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
      "params": [
        "{run_uuid}",
        "OLI-003 Opportunity {run_uuid}",
        "2026-04-30",
        "Pipeline",
        "Prospecting",
        10,
        0,
        "{db_timestamp}",
        "{db_timestamp}",
        "{db_timestamp}"
      ]
    },
    {
      "object": "Product2",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Product2",
      "payload": {
        "Name": "OLI-003 Product {run_uuid}",
        "ProductCode": "OLI-003-{run_uuid}",
        "Family": "TiDB Cloud",
        "IsActive": true
      },
      "id_var": "product_id"
    },
    {
      "object": "Pricebook2",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Pricebook2",
      "payload": {
        "Name": "OLI-003 Pricebook {run_uuid}",
        "IsActive": true,
        "IsArchived": false,
        "IsStandard": false
      },
      "id_var": "pricebook2_id"
    },
    {
      "object": "PricebookEntry",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/PricebookEntry",
      "payload": {
        "Product2Id": "{product_id}",
        "Pricebook2Id": "{pricebook2_id}",
        "UnitPrice": 125.00,
        "IsActive": true,
        "UseStandardPrice": false
      },
      "id_var": "pricebook_entry_id"
    },
    {
      "object": "OpportunityLineItem",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/OpportunityLineItem",
      "payload": {
        "OpportunityId": "{run_uuid}",
        "PricebookEntryId": "{pricebook_entry_id}",
        "Quantity": 2,
        "UnitPrice": 125.00,
        "Description": "OLI-003 test line item"
      },
      "id_var": "opportunity_line_item_id"
    }
  ],
  "teardown": [
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/OpportunityLineItem/{opportunity_line_item_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/PricebookEntry/{pricebook_entry_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Pricebook2/{pricebook2_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Product2/{product_id}"
    },
    {
      "type": "sql",
      "sql": "DELETE FROM Opportunity WHERE Id = %s",
      "params": [
        "{run_uuid}"
      ]
    }
  ],
  "priority": "P1",
  "scene": "opportunity_line"
}
