]> git.giacomolli.uk - onechat/blob - rebuild_helper_test.go
Receive images in WhatsApp batches
[onechat] / rebuild_helper_test.go
1 package main
2
3 import (
4 "fmt"
5 "io/fs"
6 "os"
7 "path/filepath"
8 "testing"
9 "time"
10
11 "github.com/stretchr/testify/require"
12 )
13
14 func newRebuildTestAgent(t *testing.T) *Agent {
15 t.Helper()
16
17 agent, err := openAgent(filepath.Join(t.TempDir(), "agent"))
18 require.NoError(t, err)
19
20 return agent
21 }
22
23 func rebuildTestLog(t *testing.T, root string, entries []DatedMessage) {
24 t.Helper()
25
26 memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer(), discardLog())
27 require.NoError(t, err)
28
29 for _, entry := range entries {
30 _, err = memory.AppendDated(entry.Kind, entry.Text, entry.Date)
31 require.NoError(t, err)
32 }
33
34 require.NoError(t, memory.Wait(t.Context()))
35 require.NoError(t, memory.Close())
36 }
37
38 func rebuildTestSnapshot(t *testing.T, root string) map[string]string {
39 t.Helper()
40
41 files := make(map[string]string)
42 err := filepath.WalkDir(root, func(path string, entry fs.DirEntry, err error) error {
43 if err != nil {
44 return fmt.Errorf("read snapshot entry: %w", err)
45 }
46
47 if entry.IsDir() {
48 return nil
49 }
50
51 relative, err := filepath.Rel(root, path)
52 if err != nil {
53 return fmt.Errorf("find snapshot relative path: %w", err)
54 }
55
56 data, err := os.ReadFile(path)
57 if err != nil {
58 return fmt.Errorf("read snapshot file: %w", err)
59 }
60
61 info, err := entry.Info()
62 if err != nil {
63 return fmt.Errorf("read snapshot mode: %w", err)
64 }
65
66 files[relative] = info.Mode().String() + string(data)
67
68 return nil
69 })
70 require.NoError(t, err)
71
72 return files
73 }