# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
description: 'JSON object evals'

prompts:
  - 'Output a JSON object that contains the keys `color` and `countries`, describing the following object: {{item}}'

providers:
  - id: openai:chat:gpt-4.1-mini
    config:
      response_format:
        type: json_object

tests:
  - vars:
      item: Banana
    assert:
      - type: is-json
      - type: javascript
        # Parse the JSON and test the contents
        value: JSON.parse(output).color === 'yellow' && JSON.parse(output).countries.includes('Ecuador')

  - vars:
      item: Passion fruit
    options:
      # Parse the JSON before all assertions
      transform: JSON.parse(output)
    assert:
      - type: is-json
        # Optional JSON schema
        value:
          required:
            - 'color'
            - 'countries'
          type: object
          properties:
            color:
              type: string
            countries:
              type: array
              items:
                type: string
      - type: javascript
        # JSON.parse is no longer necessary here
        value: output.color === 'purple' && output.countries.includes('Brazil')
      - type: contains-any
        transform: output.countries
        value:
          - Guatemala
          - Costa Rica
          - India
          - Indonesia
# Uncomment to parse JSON outputs for ALL tests
# defaultTest:
#   options:
#     transform: JSON.parse(output)
