openbrewerydb / openbrewerydb-fastapi

Open Brewery DB REST API using FastAPI
MIT License
3 stars 1 forks source link

Build tests #18

Open chrisjm opened 1 year ago

chrisjm commented 1 year ago

From OBDB Rails API spec tests

Breweries API
  GET /breweries/meta
    returns meta data about all breweries
    returns status code 200
    returns meta data filtered by by_postal
    returns meta data with per_page
    returns meta data with page
    returns meta data filtered by by_state
    returns meta data filtered by by_country
  DELETE /breweries/:id
    return a routing error
  POST /breweries
    when the request is valid
      returns returns a routing error
  GET /breweries/:id
    when the record does not exist
      returns a not found message
      returns status code 404
    when the record exists
      returns status code 200
  PUT /breweries/:id
    when the record exists
      returns a routing error
  GET /breweries/random
    returns a brewery
    does not return more breweries than the max allowed
    returns a number of breweries when size param
    returns status code 200
  GET /breweries
    when distance param is passed
      throws a 400 error when invalid params
      returns 200 when valid params
    when sort param is passed
      returns a sorted list of breweries
    when no params are passed
      returns the default number of breweries
      returns Cache-Control headers
      returns status code 200
    when by_state param is passed
      sanitizes for SQL LIKE %
      sanitizes for SQL LIKE \
      returns a filtered list of breweries
      returns empty list when abbreviation
      returns a filtered list when utf-8
      returns empty list when mispelled
      returns a filtered list of breweries with snake case
      returns empty list with kebab case
    when exclude_types param is passed
      returns a filtered list of breweries - single
      returns a filtered list of breweries - multiple
    when by_type param is passed
      returns a filtered list of breweries, when valid type
      throws a 400 error, when invalid type
    when by_city param is passed
      returns a filtered list of breweries
    when by_country param is passed
      returns a filtered list of breweries
    when postal param is passed
      returns a filtered list of breweries for US postal code ZIP+4
      returns a filtered list of breweries for international postal codes
      returns a filtered list of breweries for US postal codes
    when page param is passed
      returns another page of breweries
    when invalid params are passed
      returns a status of 200
      returns the default number of breweries
    when by_name param is passed
      returns a filtered list of breweries
    when per_page param is passed
      returns a limited number breweries
      does not exceed the maximum number of breweries per page

Brewery
  #address
    returns a full address
  #model_validation
    when country is US
      when state is nil
        fails validation
      when state is present
        validates successfully
    when country is not US
      validates successfully

Per the above link, this should be a relatively easy translation assuming Ruby and Python knowledge. If not, let me (@chrisjm) know :)

chrisjm commented 1 year ago

Related to #19