Skip to main content
Glama

Airtable OAuth MCP Server

by onimsha
test_api_models.pyโ€ข4.94 kB
"""Unit tests for API models.""" from airtable_mcp.api.models import ( AirtableBase, AirtableRecord, AirtableTable, CreateRecordsRequest, ListRecordsOptions, UpdateRecordsRequest, ) class TestAirtableRecord: """Test cases for AirtableRecord model.""" def test_record_creation_valid(self): """Test creating a valid record.""" record = AirtableRecord( id="rec123", fields={"Name": "Test Record", "Value": 42}, createdTime="2025-01-01T00:00:00.000Z", ) assert record.id == "rec123" assert record.fields["Name"] == "Test Record" assert record.fields["Value"] == 42 assert record.created_time == "2025-01-01T00:00:00.000Z" def test_record_creation_minimal(self): """Test creating a record with minimal required fields.""" record = AirtableRecord(id="rec123", fields={"Name": "Test"}) assert record.id == "rec123" assert record.fields == {"Name": "Test"} assert record.created_time is None class TestListRecordsOptions: """Test cases for ListRecordsOptions model.""" def test_list_records_options_empty(self): """Test creating empty list records options.""" options = ListRecordsOptions() assert options.view is None assert options.fields is None assert options.sort is None assert options.filter_by_formula is None def test_list_records_options_full(self): """Test creating full list records options.""" options = ListRecordsOptions( view="Grid view", fields=["Name", "Value"], sort=[{"field": "Name", "direction": "asc"}], filterByFormula="{Status} = 'Active'", ) assert options.view == "Grid view" assert options.fields == ["Name", "Value"] assert len(options.sort) == 1 assert options.sort[0]["field"] == "Name" assert options.filter_by_formula == "{Status} = 'Active'" class TestCreateRecordsRequest: """Test cases for CreateRecordsRequest model.""" def test_create_records_request_single(self): """Test creating request for single record.""" request = CreateRecordsRequest( records=[{"fields": {"Name": "Test Record"}}], typecast=True ) assert len(request.records) == 1 assert request.records[0]["fields"]["Name"] == "Test Record" assert request.typecast is True def test_create_records_request_multiple(self): """Test creating request for multiple records.""" request = CreateRecordsRequest( records=[ {"fields": {"Name": "Record 1"}}, {"fields": {"Name": "Record 2"}}, {"fields": {"Name": "Record 3"}}, ] ) assert len(request.records) == 3 assert request.typecast is False # Default value class TestUpdateRecordsRequest: """Test cases for UpdateRecordsRequest model.""" def test_update_records_request_valid(self): """Test creating valid update request.""" request = UpdateRecordsRequest( records=[{"id": "rec123", "fields": {"Name": "Updated Record"}}], typecast=True, ) assert len(request.records) == 1 assert request.records[0]["id"] == "rec123" assert request.typecast is True class TestAirtableBase: """Test cases for AirtableBase model.""" def test_base_creation(self): """Test creating base info.""" base = AirtableBase(id="app123", name="Test Base", permissionLevel="create") assert base.id == "app123" assert base.name == "Test Base" assert base.permission_level == "create" class TestAirtableTable: """Test cases for AirtableTable model.""" def test_table_creation_minimal(self): """Test creating minimal table info.""" table = AirtableTable( id="tbl123", name="Test Table", primaryFieldId="fld123", fields=[] ) assert table.id == "tbl123" assert table.name == "Test Table" assert table.primary_field_id == "fld123" assert table.fields == [] assert table.views is None def test_table_creation_full(self): """Test creating full table info.""" from airtable_mcp.api.models import AirtableField field = AirtableField(id="fld123", name="Primary Field", type="singleLineText") table = AirtableTable( id="tbl123", name="Test Table", primaryFieldId="fld123", fields=[field], views=[{"id": "viw123", "name": "Grid view", "type": "grid"}], ) assert table.id == "tbl123" assert len(table.fields) == 1 assert len(table.views) == 1 assert table.fields[0].name == "Primary Field" assert table.views[0]["name"] == "Grid view"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/onimsha/airtable-mcp-server-oauth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server