package api

import "testing"

func TestParseAPIErrorFastAPIDetailString(t *testing.T) {
	err := parseAPIError(409, []byte(`{"detail":"E-mail já cadastrado."}`))
	if err.Message != "E-mail já cadastrado." {
		t.Fatalf("message = %q", err.Message)
	}
	if err.Status != 409 {
		t.Fatalf("status = %d", err.Status)
	}
}

func TestParseAPIErrorFastAPIDetailArray(t *testing.T) {
	raw := `{"detail":[{"type":"value_error","loc":["body","password"],"msg":"Senha deve conter pelo menos uma letra"}]}`
	err := parseAPIError(422, []byte(raw))
	if err.Message != "Senha deve conter pelo menos uma letra" {
		t.Fatalf("message = %q", err.Message)
	}
}

func TestParseAPIErrorProductBody(t *testing.T) {
	raw := `{"error":{"code":"ACTIVE_LIMIT","message":"Limite atingido"}}`
	err := parseAPIError(403, []byte(raw))
	if err.Code != "ACTIVE_LIMIT" || err.Message != "Limite atingido" {
		t.Fatalf("got code=%q msg=%q", err.Code, err.Message)
	}
}
