add test for the wall app
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
c4776d81dd
commit
9e287e4e6a
15 changed files with 3022 additions and 1 deletions
142
internal/store/snapshot_test.go
Normal file
142
internal/store/snapshot_test.go
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
package store_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/syonad/clonepack/internal/store"
|
||||
)
|
||||
|
||||
func newSnapshotStore(t *testing.T) (*store.SQLiteSnapshotStore, int64) {
|
||||
t.Helper()
|
||||
db := newTestDB(t)
|
||||
repoID := insertTestRepo(t, db)
|
||||
return store.NewSnapshotStore(db), repoID
|
||||
}
|
||||
|
||||
func TestCreateAndGetSnapshot(t *testing.T) {
|
||||
s, repoID := newSnapshotStore(t)
|
||||
ctx := context.Background()
|
||||
|
||||
id, err := s.CreateSnapshot(ctx, repoID, "v1.0")
|
||||
if err != nil {
|
||||
t.Fatalf("CreateSnapshot: %v", err)
|
||||
}
|
||||
|
||||
snap, err := s.GetSnapshot(ctx, id)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSnapshot: %v", err)
|
||||
}
|
||||
if snap.RepoID != repoID {
|
||||
t.Errorf("RepoID: got %d, want %d", snap.RepoID, repoID)
|
||||
}
|
||||
if snap.Label != "v1.0" {
|
||||
t.Errorf("Label: got %q, want v1.0", snap.Label)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetSnapshot_notFound(t *testing.T) {
|
||||
s, _ := newSnapshotStore(t)
|
||||
_, err := s.GetSnapshot(context.Background(), 9999)
|
||||
if err != store.ErrNotFound {
|
||||
t.Errorf("expected ErrNotFound, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestListSnapshots(t *testing.T) {
|
||||
s, repoID := newSnapshotStore(t)
|
||||
ctx := context.Background()
|
||||
|
||||
snaps, err := s.ListSnapshots(ctx, repoID)
|
||||
if err != nil {
|
||||
t.Fatalf("ListSnapshots (empty): %v", err)
|
||||
}
|
||||
if len(snaps) != 0 {
|
||||
t.Errorf("expected 0 snapshots, got %d", len(snaps))
|
||||
}
|
||||
|
||||
s.CreateSnapshot(ctx, repoID, "snap-1")
|
||||
s.CreateSnapshot(ctx, repoID, "snap-2")
|
||||
|
||||
snaps, err = s.ListSnapshots(ctx, repoID)
|
||||
if err != nil {
|
||||
t.Fatalf("ListSnapshots: %v", err)
|
||||
}
|
||||
if len(snaps) != 2 {
|
||||
t.Fatalf("expected 2 snapshots, got %d", len(snaps))
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddAndGetSnapshotPackages(t *testing.T) {
|
||||
s, repoID := newSnapshotStore(t)
|
||||
ctx := context.Background()
|
||||
|
||||
snapID, _ := s.CreateSnapshot(ctx, repoID, "with-pkgs")
|
||||
|
||||
pkgs := []store.SnapshotPackage{
|
||||
{Name: "curl", Version: "7.88", Arch: "amd64", Location: "Packages/curl.rpm", Checksum: "abc", ChecksumType: "sha256", Size: 1000},
|
||||
{Name: "wget", Version: "1.21", Arch: "amd64", Location: "Packages/wget.rpm", Checksum: "def", ChecksumType: "sha256", Size: 2000},
|
||||
}
|
||||
if err := s.AddSnapshotPackages(ctx, snapID, pkgs); err != nil {
|
||||
t.Fatalf("AddSnapshotPackages: %v", err)
|
||||
}
|
||||
|
||||
got, err := s.GetSnapshotPackages(ctx, snapID)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSnapshotPackages: %v", err)
|
||||
}
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("expected 2 packages, got %d", len(got))
|
||||
}
|
||||
if got[0].Name != "curl" {
|
||||
t.Errorf("pkg[0].Name: got %q, want curl", got[0].Name)
|
||||
}
|
||||
if got[1].Size != 2000 {
|
||||
t.Errorf("pkg[1].Size: got %d, want 2000", got[1].Size)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddSnapshotPackages_empty(t *testing.T) {
|
||||
s, repoID := newSnapshotStore(t)
|
||||
ctx := context.Background()
|
||||
|
||||
snapID, _ := s.CreateSnapshot(ctx, repoID, "empty")
|
||||
if err := s.AddSnapshotPackages(ctx, snapID, nil); err != nil {
|
||||
t.Fatalf("AddSnapshotPackages with nil: %v", err)
|
||||
}
|
||||
pkgs, _ := s.GetSnapshotPackages(ctx, snapID)
|
||||
if len(pkgs) != 0 {
|
||||
t.Errorf("expected 0 packages, got %d", len(pkgs))
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteSnapshot(t *testing.T) {
|
||||
s, repoID := newSnapshotStore(t)
|
||||
ctx := context.Background()
|
||||
|
||||
snapID, _ := s.CreateSnapshot(ctx, repoID, "to-delete")
|
||||
pkgs := []store.SnapshotPackage{
|
||||
{Name: "curl", Version: "7.88", Arch: "amd64", Location: "loc", Checksum: "abc", ChecksumType: "sha256", Size: 100},
|
||||
}
|
||||
s.AddSnapshotPackages(ctx, snapID, pkgs)
|
||||
|
||||
if err := s.DeleteSnapshot(ctx, snapID); err != nil {
|
||||
t.Fatalf("DeleteSnapshot: %v", err)
|
||||
}
|
||||
if _, err := s.GetSnapshot(ctx, snapID); err != store.ErrNotFound {
|
||||
t.Errorf("expected ErrNotFound after delete, got %v", err)
|
||||
}
|
||||
// Cascade: packages should also be gone.
|
||||
remaining, _ := s.GetSnapshotPackages(ctx, snapID)
|
||||
if len(remaining) != 0 {
|
||||
t.Errorf("expected cascade delete of packages, got %d", len(remaining))
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteSnapshot_notFound(t *testing.T) {
|
||||
s, _ := newSnapshotStore(t)
|
||||
err := s.DeleteSnapshot(context.Background(), 9999)
|
||||
if err != store.ErrNotFound {
|
||||
t.Errorf("expected ErrNotFound, got %v", err)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue