(t *testing.T)
| 1026 | } |
| 1027 | |
| 1028 | func TestBucket_ForEachBucket(t *testing.T) { |
| 1029 | db := btesting.MustCreateDB(t) |
| 1030 | |
| 1031 | expectedItems := [][]byte{ |
| 1032 | []byte("csubbucket"), |
| 1033 | []byte("zsubbucket"), |
| 1034 | } |
| 1035 | |
| 1036 | verifyReads := func(b *bolt.Bucket) { |
| 1037 | var items [][]byte |
| 1038 | err := b.ForEachBucket(func(k []byte) error { |
| 1039 | items = append(items, k) |
| 1040 | return nil |
| 1041 | }) |
| 1042 | assert.NoErrorf(t, err, "b.ForEach failed") |
| 1043 | assert.Equal(t, expectedItems, items, "what we iterated (ForEach) is not what we put") |
| 1044 | } |
| 1045 | |
| 1046 | err := db.Update(func(tx *bolt.Tx) error { |
| 1047 | b, err := tx.CreateBucket([]byte("widgets")) |
| 1048 | require.NoError(t, err, "bucket creation failed") |
| 1049 | |
| 1050 | require.NoErrorf(t, b.Put([]byte("foo"), []byte("0000")), "put 'foo' failed") |
| 1051 | _, err = b.CreateBucket([]byte("zsubbucket")) |
| 1052 | require.NoErrorf(t, err, "creation of subbucket failed") |
| 1053 | require.NoErrorf(t, b.Put([]byte("baz"), []byte("0001")), "put 'baz' failed") |
| 1054 | require.NoErrorf(t, b.Put([]byte("bar"), []byte("0002")), "put 'bar' failed") |
| 1055 | _, err = b.CreateBucket([]byte("csubbucket")) |
| 1056 | require.NoErrorf(t, err, "creation of subbucket failed") |
| 1057 | |
| 1058 | verifyReads(b) |
| 1059 | |
| 1060 | return nil |
| 1061 | }) |
| 1062 | assert.NoErrorf(t, err, "db.Update failed") |
| 1063 | err = db.View(func(tx *bolt.Tx) error { |
| 1064 | b := tx.Bucket([]byte("widgets")) |
| 1065 | require.NotNil(t, b, "bucket opening failed") |
| 1066 | verifyReads(b) |
| 1067 | return nil |
| 1068 | }) |
| 1069 | assert.NoErrorf(t, err, "db.View failed") |
| 1070 | } |
| 1071 | |
| 1072 | func TestBucket_ForEachBucket_NoBuckets(t *testing.T) { |
| 1073 | db := btesting.MustCreateDB(t) |
nothing calls this directly
no test coverage detected