// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========

import { describe, expect, it } from 'vitest'
import { REDIS_OPS } from './index.ts'

describe('REDIS_OPS table', () => {
  it('registers the expected 15 ops with resource=redis', () => {
    expect(REDIS_OPS).toHaveLength(15)
    for (const op of REDIS_OPS) {
      expect(op.resource).toBe('redis')
    }
  })

  it('registers format-specific read variants via filetype', () => {
    const formats = REDIS_OPS.filter((op) => op.name === 'read' && op.filetype !== null).map(
      (op) => op.filetype,
    )
    expect(formats.sort()).toEqual(['.feather', '.hdf5', '.parquet'])
  })

  it('marks writes correctly', () => {
    const writes = REDIS_OPS.filter((op) => op.write).map((op) => op.name)
    expect(writes.sort()).toEqual(
      [
        'append',
        'create',
        'mkdir',
        'rename',
        'rmdir',
        'setattr',
        'truncate',
        'unlink',
        'write',
      ].sort(),
    )
  })
})
