[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:
|
version:
|
||||||
@echo $(VERSION)
|
@echo $(VERSION)
|
||||||
|
|
||||||
|
openapi:
|
||||||
|
@curl http://localhost:8000/openapi.json -o doc/openapi.json
|
||||||
|
|
||||||
create-venv:
|
create-venv:
|
||||||
python3 -m venv .venv --prompt="fooderapi-venv" --system-site-packages
|
python3 -m venv .venv --prompt="fooderapi-venv" --system-site-packages
|
||||||
bash -c "source .venv/bin/activate && pip install -r requirements/local.txt"
|
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
|
name: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class PresetCreateModel(BaseModel):
|
||||||
|
name: str
|
||||||
|
|
||||||
|
|
||||||
class LoadPresetAsMealModel(BaseModel):
|
class LoadPresetAsMealModel(BaseModel):
|
||||||
preset_id: int
|
preset_id: int
|
||||||
name: str | None = None
|
name: str | None = None
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,25 @@ async def test_list_presets_without_auth_returns_401(client):
|
||||||
assert response.status_code == 401
|
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 ---
|
# --- update preset ---
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from fooder.context import AuthContextDependency, Context
|
||||||
from fooder.controller.preset import PresetController
|
from fooder.controller.preset import PresetController
|
||||||
from fooder.controller.preset_entry import PresetEntryController
|
from fooder.controller.preset_entry import PresetEntryController
|
||||||
from fooder.model.entry import EntryCreateModel, EntryUpdateModel
|
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
|
from fooder.model.preset_entry import PresetEntryModel
|
||||||
|
|
||||||
router = APIRouter()
|
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)
|
@router.patch("/{preset_id}", response_model=PresetModel)
|
||||||
async def update_preset(
|
async def update_preset(
|
||||||
preset_id: int,
|
preset_id: int,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue