item_test.go.tmpl

65 lines
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
package models_test

import (
	"testing"

	"<<.Module>>/<<.Dir>>/models"
)

func TestItemInsert(t *testing.T) {
	id, err := models.Items.Insert(&models.Item{Title: "Test Item", Description: "A test"})
	if err != nil {
		t.Fatal(err)
	}
	if id == "" {
		t.Fatal("expected non-empty ID")
	}

	item, err := models.Items.Get(id)
	if err != nil {
		t.Fatal(err)
	}
	if item.Title != "Test Item" {
		t.Errorf("Title = %q, want %q", item.Title, "Test Item")
	}
	if item.Description != "A test" {
		t.Errorf("Description = %q, want %q", item.Description, "A test")
	}
	if item.CreatedAt.IsZero() {
		t.Error("CreatedAt should be set automatically")
	}
}

func TestItemUpdate(t *testing.T) {
	id, err := models.Items.Insert(&models.Item{Title: "Original"})
	if err != nil {
		t.Fatal(err)
	}

	item, _ := models.Items.Get(id)
	item.Title = "Updated"
	if err := models.Items.Update(item); err != nil {
		t.Fatal(err)
	}

	got, _ := models.Items.Get(id)
	if got.Title != "Updated" {
		t.Errorf("Title = %q, want %q", got.Title, "Updated")
	}
}

func TestItemDelete(t *testing.T) {
	id, err := models.Items.Insert(&models.Item{Title: "Delete Me"})
	if err != nil {
		t.Fatal(err)
	}

	if err := models.Items.DeleteByID(id); err != nil {
		t.Fatal(err)
	}

	_, err = models.Items.Get(id)
	if err == nil {
		t.Error("expected error after delete, got nil")
	}
}