package main

import (
	"fmt"
	"log"
	"testing"

	_ "github.com/jackc/pgx/v5/stdlib"
	"github.com/jmoiron/sqlx"
)

func TestCartIsolation(t *testing.T) {
	db, err := sqlx.Open("pgx", "postgres://postgres:123@localhost:55432/saveinmed?sslmode=disable")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// Clear cart for test companies
	buyer1 := "019c4d81-a6a4-770d-99f7-dd04256ee020" // Ricardo
	buyer2 := "019c4ca7-7619-776d-b729-30bd44b43a69" // Farmácia

	db.Exec("DELETE FROM cart_items WHERE buyer_id IN ($1, $2)", buyer1, buyer2)

	// Add item for buyer1
	productID := "019c4cf9-5ea1-7c88-919d-5a015d7f1b34" // Dipirona Sódica 500mg
	db.Exec("INSERT INTO cart_items (id, buyer_id, product_id, quantity, unit_cents, created_at, updated_at) VALUES ($1, $2, $3, 1, 100, NOW(), NOW())",
		"018db2f1-0000-7000-8000-000000000101", buyer1, productID)

	// Check buyer1 cart
	var count1 int
	db.Get(&count1, "SELECT COUNT(*) FROM cart_items WHERE buyer_id = $1", buyer1)
	if count1 != 1 {
		t.Errorf("Buyer 1 should have 1 item, got %d", count1)
	}

	// Check buyer2 cart
	var count2 int
	db.Get(&count2, "SELECT COUNT(*) FROM cart_items WHERE buyer_id = $1", buyer2)
	if count2 != 0 {
		t.Errorf("Buyer 2 should have 0 items, got %d", count2)
	}

	fmt.Printf("\nCart Isolation Test: Buyer 1 count=%d, Buyer 2 count=%d\n", count1, count2)
}

func TestCheckPrices(t *testing.T) {
	db, err := sqlx.Open("pgx", "postgres://postgres:123@localhost:55432/saveinmed?sslmode=disable")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	var products []struct {
		Name       string `db:"name"`
		PriceCents int64  `db:"price_cents"`
	}

	err = db.Select(&products, "SELECT name, price_cents FROM products WHERE name LIKE '%Dipirona%'")
	if err != nil {
		t.Fatal(err)
	}

	fmt.Printf("\n--- Dipirona Prices ---\n")
	for _, p := range products {
		fmt.Printf("Product: %s, PriceCents: %d\n", p.Name, p.PriceCents)
	}
}
