// Test inputs for params data validation const paramsLexicon = { lexicon: 1, id: 'test.params.data', defs: { main: { type: 'query', parameters: { type: 'params', properties: { repo: { type: 'string' }, limit: { type: 'integer', minimum: 1, maximum: 100 }, cursor: { type: 'string' }, enabled: { type: 'boolean' }, tags: { type: 'array', items: { type: 'string', maxLength: 50 }, }, }, required: ['repo'], }, }, }, }; const allTypesLexicon = { lexicon: 1, id: 'test.params.alltypes', defs: { main: { type: 'query', parameters: { type: 'params', properties: { name: { type: 'string', maxLength: 5 }, count: { type: 'integer', minimum: 1 }, enabled: { type: 'boolean' }, metadata: { type: 'unknown' }, }, }, }, }, }; export const paramsDataInputs = [ { name: 'params-data-valid-with-required', lexicons: [paramsLexicon], collection: 'test.params.data', record: { repo: 'alice.bsky.social', limit: 50, }, }, { name: 'params-data-valid-with-optional', lexicons: [paramsLexicon], collection: 'test.params.data', record: { repo: 'alice.bsky.social', }, }, { name: 'params-data-valid-all-types', lexicons: [allTypesLexicon], collection: 'test.params.alltypes', record: { name: 'test', count: 42, enabled: true, metadata: { key: 'value' }, }, }, { name: 'params-data-valid-with-array', lexicons: [paramsLexicon], collection: 'test.params.data', record: { repo: 'alice.bsky.social', tags: ['foo', 'bar'], }, }, { name: 'params-data-invalid-missing-required', lexicons: [paramsLexicon], collection: 'test.params.data', record: { limit: 50, }, }, { name: 'params-data-invalid-wrong-type', lexicons: [ { lexicon: 1, id: 'test.params.wrongtype', defs: { main: { type: 'query', parameters: { type: 'params', properties: { limit: { type: 'integer' }, }, }, }, }, }, ], collection: 'test.params.wrongtype', record: { limit: 'not a number', }, }, { name: 'params-data-invalid-string-too-long', lexicons: [allTypesLexicon], collection: 'test.params.alltypes', record: { name: 'toolongname', }, }, { name: 'params-data-invalid-integer-below-minimum', lexicons: [allTypesLexicon], collection: 'test.params.alltypes', record: { count: 0, }, }, { name: 'params-data-invalid-array-wrong-item-type', lexicons: [ { lexicon: 1, id: 'test.params.arraytype', defs: { main: { type: 'query', parameters: { type: 'params', properties: { ids: { type: 'array', items: { type: 'integer' }, }, }, }, }, }, }, ], collection: 'test.params.arraytype', record: { ids: ['one', 'two'], }, }, { name: 'params-data-valid-empty-schema', lexicons: [ { lexicon: 1, id: 'test.params.empty', defs: { main: { type: 'query', parameters: { type: 'params', }, }, }, }, ], collection: 'test.params.empty', record: {}, }, { name: 'params-data-valid-unknown-parameters-allowed', lexicons: [ { lexicon: 1, id: 'test.params.extra', defs: { main: { type: 'query', parameters: { type: 'params', properties: { repo: { type: 'string' }, }, }, }, }, }, ], collection: 'test.params.extra', record: { repo: 'alice.bsky.social', extra: 'allowed', }, }, ];