[preset create] view for creating empty preset
Some checks failed
Python lint and test / linttest (push) Failing after 8s
Some checks failed
Python lint and test / linttest (push) Failing after 8s
This commit is contained in:
parent
2a5b40ea7b
commit
c9bef35303
5 changed files with 38 additions and 2 deletions
3
Makefile
3
Makefile
|
|
@ -30,6 +30,9 @@ lint: black mypy flake
|
|||
version:
|
||||
@echo $(VERSION)
|
||||
|
||||
openapi:
|
||||
@curl http://localhost:8000/openapi.json -o doc/openapi.json
|
||||
|
||||
create-venv:
|
||||
python3 -m venv .venv --prompt="fooderapi-venv" --system-site-packages
|
||||
bash -c "source .venv/bin/activate && pip install -r requirements/local.txt"
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -23,6 +23,10 @@ class PresetUpdateModel(BaseModel):
|
|||
name: str | None = None
|
||||
|
||||
|
||||
class PresetCreateModel(BaseModel):
|
||||
name: str
|
||||
|
||||
|
||||
class LoadPresetAsMealModel(BaseModel):
|
||||
preset_id: int
|
||||
name: str | None = None
|
||||
|
|
|
|||
|
|
@ -92,6 +92,25 @@ async def test_list_presets_without_auth_returns_401(client):
|
|||
assert response.status_code == 401
|
||||
|
||||
|
||||
# --- create preset ---
|
||||
|
||||
|
||||
async def test_create_preset_returns_201(auth_client):
|
||||
response = await auth_client.post("/api/preset/", json={"name": "Preset name"})
|
||||
assert response.status_code == 201
|
||||
|
||||
|
||||
async def test_create_preset_sets_name(auth_client):
|
||||
response = await auth_client.post("/api/preset/", json={"name": "Preset name"})
|
||||
assert response.status_code == 201
|
||||
assert response.json()["name"] == "Preset name"
|
||||
|
||||
|
||||
async def test_create_preset_without_auth_returns_401(client):
|
||||
response = await client.post("/api/preset/", json={"name": "x"})
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
# --- update preset ---
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from fooder.context import AuthContextDependency, Context
|
|||
from fooder.controller.preset import PresetController
|
||||
from fooder.controller.preset_entry import PresetEntryController
|
||||
from fooder.model.entry import EntryCreateModel, EntryUpdateModel
|
||||
from fooder.model.preset import PresetModel, PresetUpdateModel
|
||||
from fooder.model.preset import PresetCreateModel, PresetModel, PresetUpdateModel
|
||||
from fooder.model.preset_entry import PresetEntryModel
|
||||
|
||||
router = APIRouter()
|
||||
|
|
@ -23,6 +23,16 @@ async def list_presets(
|
|||
)
|
||||
|
||||
|
||||
@router.post("/", response_model=PresetModel, status_code=201)
|
||||
async def create_preset(
|
||||
data: PresetCreateModel,
|
||||
ctx: Context = Depends(_auth_ctx),
|
||||
):
|
||||
async with ctx.repo.transaction():
|
||||
ctrl = await PresetController.create(ctx, data.name)
|
||||
return ctrl.obj
|
||||
|
||||
|
||||
@router.patch("/{preset_id}", response_model=PresetModel)
|
||||
async def update_preset(
|
||||
preset_id: int,
|
||||
|
|
|
|||
Loading…
Reference in a new issue