"""Focused real API coverage for atomic sales completion."""
import pytest
pytest_plugins=('test_workspace',)
def h(user):
 from app.core.security import create_access_token
 return {'Authorization':f'Bearer {create_access_token(str(user.id))}'}
def test_paid_sale_deducts_stock_and_is_idempotent(client,verified_user):
 w=client.post('/api/businesses/onboarding',json={'name':'POS','main_branch_name':'Main','country':'Nigeria','currency':'NGN','default_language':'en'},headers=h(verified_user)).json();b=w['business']['id'];branch=w['accessible_branches'][0]['id']
 p=client.post(f'/api/businesses/{b}/products',json={'name':'P','product_type':'SINGLE','selling_price':'10'},headers=h(verified_user)).json()
 client.post(f'/api/businesses/{b}/branches/{branch}/stock-adjustments',json={'product_id':p['id'],'quantity_changed':'5','reason':'RESTOCK'},headers=h(verified_user))
 body={'branch_id':branch,'receipt_number':'R-1','items':[{'product_id':p['id'],'quantity':'2','unit_price':'10'}],'payments':[{'amount':'20','payment_method':'CASH'}]}
 a=client.post(f'/api/businesses/{b}/sales',json=body,headers={**h(verified_user),'Idempotency-Key':'sale-1'});assert a.status_code==201,a.text;assert a.json()['sale']['payment_status']=='PAID'
 assert client.post(f'/api/businesses/{b}/sales',json=body,headers={**h(verified_user),'Idempotency-Key':'sale-1'}).status_code==201
 inv=client.get(f'/api/businesses/{b}/branches/{branch}/inventory',headers=h(verified_user)).json();assert inv[0]['quantity']==3
def test_credit_requires_customer_and_insufficient_stock_rolls_back(client,verified_user):
 w=client.post('/api/businesses/onboarding',json={'name':'POS2','main_branch_name':'Main','country':'Nigeria','currency':'NGN','default_language':'en'},headers=h(verified_user)).json();b=w['business']['id'];branch=w['accessible_branches'][0]['id']
 p=client.post(f'/api/businesses/{b}/products',json={'name':'P','product_type':'SINGLE','selling_price':'10'},headers=h(verified_user)).json()
 body={'branch_id':branch,'receipt_number':'R-1','items':[{'product_id':p['id'],'quantity':'1','unit_price':'10'}]}
 assert client.post(f'/api/businesses/{b}/sales',json=body,headers={**h(verified_user),'Idempotency-Key':'x'}).status_code==422
 body['payments']=[{'amount':'10','payment_method':'POS'}]
 assert client.post(f'/api/businesses/{b}/sales',json=body,headers={**h(verified_user),'Idempotency-Key':'y'}).status_code==422
