agentsclimarketplace

Testing patterns

Skill ComeOnOliver/skillshub/skills/aiskillstore/marketplace/cleanexpo/testing-patterns

🧠 The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.

Install
npx -y skills add ComeOnOliver/skillshub --skill testing-patterns

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Vitest testing patterns and strategies for unit tests, agent tests, and API tests with Supabase mocking

SKILL.md

3.0 KB, 753 tokens by cl100k_base, as published. Nobody here has run it

Testing Patterns Skill

Vitest Testing Strategy

When to Use: Writing tests for new features, agents, API routes


Framework: Vitest

Command: npm run test Required: 100% pass rate Location: tests/ directory


Unit Test Pattern

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { MyService } from '@/lib/services/my-service';

describe('MyService', () => {
  let service: MyService;

  beforeEach(() => {
    vi.clearAllMocks();
    service = new MyService();
  });

  it('should process data correctly', () => {
    const input = { value: 42 };
    const result = service.process(input);

    expect(result).toBeDefined();
    expect(result.value).toBe(42);
  });

  it('should handle errors', () => {
    expect(() => service.process(null)).toThrow();
  });
});

Agent Test Pattern

import { describe, it, expect, vi } from 'vitest';
import { MyAgent } from '@/lib/agents/my-agent';

// Mock Supabase
vi.mock('@supabase/supabase-js', () => ({
  createClient: vi.fn(() => ({
    from: vi.fn(() => ({
      select: vi.fn().mockReturnThis(),
      eq: vi.fn().mockResolvedValue({ data: [], error: null })
    }))
  }))
}));

describe('MyAgent', () => {
  it('processes task successfully', async () => {
    const agent = new MyAgent();
    const task = {
      id: 'test-1',
      workspace_id: 'ws-123',
      task_type: 'test',
      payload: {},
      priority: 5,
      retry_count: 0,
      max_retries: 3
    };

    const result = await agent.processTask(task);

    expect(result).toBeDefined();
  });
});

API Test Pattern

import { describe, it, expect } from 'vitest';
import { GET } from '@/app/api/my-endpoint/route';
import { NextRequest } from 'next/server';

describe('GET /api/my-endpoint', () => {
  it('requires workspace_id', async () => {
    const req = new NextRequest('http://localhost:3008/api/my-endpoint');

    const response = await GET(req);
    const data = await response.json();

    expect(response.status).toBe(400);
    expect(data.error).toContain('workspaceId required');
  });
});

Mocking Supabase

const mockSelect = vi.fn().mockReturnThis();
const mockEq = vi.fn().mockReturnThis();
const mockInsert = vi.fn().mockReturnThis();
const mockFrom = vi.fn(() => ({
  select: mockSelect,
  eq: mockEq,
  insert: mockInsert
}));

vi.mock('@supabase/supabase-js', () => ({
  createClient: vi.fn(() => ({
    from: mockFrom
  }))
}));

// Set return values
mockEq.mockResolvedValue({ data: [{ id: '1', name: 'Test' }], error: null });

Coverage Requirements

  • Unit Tests: All services, utilities, helpers
  • Integration Tests: API routes, agent workflows
  • E2E Tests: Critical user flows (Playwright)

Target: 100% pass rate (no failures allowed)


Standard: All code must have tests, all tests must pass

What ships with it

9.4 KB alongside SKILL.md

GitHub clipped this repository’s file list, so this is at least 1 file and may be more.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.