OSDN Git Service

Merge pull request #375 from Bytom/dev
[bytom/bytom-spv.git] / blockchain / assets_test.go
1 package blockchain
2
3 import (
4         "context"
5         "io/ioutil"
6         "os"
7         "reflect"
8         "testing"
9
10         dbm "github.com/tendermint/tmlibs/db"
11
12         "github.com/bytom/blockchain/asset"
13         "github.com/bytom/blockchain/txdb"
14         "github.com/bytom/crypto/ed25519/chainkd"
15         "github.com/bytom/protocol"
16         "github.com/bytom/protocol/bc"
17         "github.com/bytom/testutil"
18 )
19
20 func TestUpdateAssetTags(t *testing.T) {
21         dirPath, err := ioutil.TempDir(".", "")
22         if err != nil {
23                 t.Fatal(err)
24         }
25         defer os.RemoveAll(dirPath)
26
27         testDB := dbm.NewDB("testdb", "leveldb", "temp")
28         defer os.RemoveAll("temp")
29
30         store := txdb.NewStore(testDB)
31         txPool := protocol.NewTxPool()
32         chain, err := protocol.NewChain(bc.Hash{}, store, txPool)
33         if err != nil {
34                 t.Fatal(err)
35         }
36
37         reg := asset.NewRegistry(testDB, chain)
38         ctx := context.Background()
39
40         asset, err := reg.Define([]chainkd.XPub{testutil.TestXPub}, 1, nil, "asset-alias",
41                 map[string]interface{}{
42                         "test_tag": "v0",
43                 })
44         if err != nil {
45                 testutil.FatalErr(t, err)
46         }
47
48         // Update by ID
49         wantTags := map[string]interface{}{
50                 "test_tag": "v1",
51         }
52
53         if reg.UpdateTags(ctx, asset.AssetID.String(), wantTags) != nil {
54                 testutil.FatalErr(t, err)
55         }
56
57         asset1, err := reg.FindByAlias(ctx, *asset.Alias)
58         if err != nil {
59                 testutil.FatalErr(t, err)
60         }
61
62         gotTags := asset1.Tags
63         if !reflect.DeepEqual(gotTags, wantTags) {
64                 t.Fatalf("tags:\ngot:  %v\nwant: %v", gotTags, wantTags)
65         }
66
67         // Update by alias
68         wantTags = map[string]interface{}{
69                 "test_tag": "v2",
70         }
71
72         if reg.UpdateTags(ctx, *asset.Alias, wantTags) != nil {
73                 testutil.FatalErr(t, err)
74         }
75
76         asset2, err := reg.FindByAlias(ctx, *asset.Alias)
77         if err != nil {
78                 testutil.FatalErr(t, err)
79         }
80
81         gotTags = asset2.Tags
82         if !reflect.DeepEqual(gotTags, wantTags) {
83                 t.Fatalf("tags:\ngot:  %v\nwant: %v", gotTags, wantTags)
84         }
85 }