{
  "id": "ULI-003",
  "name": "Update QuoteLineItem fields",
  "description": "Updating a QuoteLineItem's Quantity and UnitPrice should persist the new values.",
  "object": "quote_product__c",
  "method": "PATCH",
  "endpoint": "/services/data/v63.0/sobjects/quote_product__c/uli003-qli-000001",
  "payload": {
    "Quantity__c": 7
  },
  "setup": [
    {
      "object": "Account",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Account",
      "payload": {
        "Name": "ULI-003 Account {timestamp}",
        "Industry": "Others",
        "BillingCountryCode": "{billing_country_code}"
      },
      "id_var": "account_id"
    },
    {
      "object": "Opportunity",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Opportunity",
      "payload": {
        "AccountId": "{account_id}",
        "Name": "ULI-003 Opp {timestamp}",
        "StageName": "Prospecting",
        "CloseDate": "2026-12-31",
        "ForecastCategory": "Pipeline"
      },
      "id_var": "opportunity_id"
    },
    {
      "object": "Quote",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Quote",
      "payload": {
        "Name": "ULI-003 Quote {timestamp}",
        "OpportunityId": "{opportunity_id}",
        "Status": "Draft",
        "OwnerId": "0055g000001i4R9AAI"
      },
      "id_var": "quote_id"
    },
    {
      "object": "Product2",
      "method": "POST",
      "endpoint": "/services/data/v63.0/sobjects/Product2",
      "payload": {
        "Name": "ULI-003 Product {timestamp}",
        "ProductCode": "ULI-003-{timestamp}",
        "Family": "TiDB Cloud",
        "IsActive": true
      },
      "id_var": "product_id"
    },
    {
      "type": "sql",
      "name": "Create QuoteLineItem for ULI-003 (fixed Id for PATCH)",
      "sql": "INSERT INTO quote_product__c (Id, Name, Quote__c, Product__c, Quantity__c, IsDeleted, CreatedDate, LastModifiedDate, SystemModstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
      "params": [
        "uli003-qli-000001",
        "ULI-003 QLI {timestamp}",
        "{quote_id}",
        "{product_id}",
        3,
        0,
        "{db_timestamp}",
        "{db_timestamp}",
        "{db_timestamp}"
      ]
    }
  ],
  "expects": {
    "status_code": 204
  },
  "query_after": {
    "object": "quote_product__c",
    "record_id": "uli003-qli-000001",
    "assertions": [
      {
        "field": "Quantity__c",
        "operator": "equals",
        "value": 7
      }
    ]
  },
  "teardown": [
    {
      "type": "sql",
      "sql": "DELETE FROM quote_product__c WHERE Id = %s",
      "params": ["uli003-qli-000001"]
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Quote/{quote_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Opportunity/{opportunity_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Account/{account_id}"
    },
    {
      "method": "DELETE",
      "endpoint": "/services/data/v63.0/sobjects/Product2/{product_id}"
    }
  ],
  "priority": "P1",
  "scene": "quote_line"
}
