package middleware

import (
	"context"
	"testing"
)

func TestGetUserID_Empty(t *testing.T) {
	t.Parallel()

	ctx := context.Background()
	if id := GetUserID(ctx); id != "" {
		t.Errorf("expected empty user ID, got %q", id)
	}
}

func TestGetUserID_Set(t *testing.T) {
	t.Parallel()

	ctx := context.WithValue(context.Background(), UserIDKey, "abc-123")
	if id := GetUserID(ctx); id != "abc-123" {
		t.Errorf("expected abc-123, got %q", id)
	}
}

func TestGetUserEmail_Empty(t *testing.T) {
	t.Parallel()

	ctx := context.Background()
	if email := GetUserEmail(ctx); email != "" {
		t.Errorf("expected empty email, got %q", email)
	}
}

func TestGetUserEmail_Set(t *testing.T) {
	t.Parallel()

	ctx := context.WithValue(context.Background(), UserEmailKey, "test@example.com")
	if email := GetUserEmail(ctx); email != "test@example.com" {
		t.Errorf("expected test@example.com, got %q", email)
	}
}

func TestGetUserTier_Default(t *testing.T) {
	t.Parallel()

	ctx := context.Background()
	if tier := GetUserTier(ctx); tier != "free" {
		t.Errorf("expected default tier 'free', got %q", tier)
	}
}

func TestGetUserTier_Set(t *testing.T) {
	t.Parallel()

	ctx := context.WithValue(context.Background(), UserTierKey, "pro")
	if tier := GetUserTier(ctx); tier != "pro" {
		t.Errorf("expected 'pro', got %q", tier)
	}
}
