github.com/attic-labs/noms@v0.0.0-20210827224422-e5fa29d95e8b/samples/go/decent/lib/model_test.go (about)

     1  // See: https://github.com/attic-labs/noms/issues/3808
     2  // +build ignore
     3  
     4  // Copyright 2017 Attic Labs, Inc. All rights reserved.
     5  // Licensed under the Apache License, version 2.0:
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  
     8  package lib
     9  
    10  import (
    11  	"testing"
    12  	"time"
    13  
    14  	"github.com/attic-labs/noms/go/chunks"
    15  	"github.com/attic-labs/noms/go/datas"
    16  	"github.com/attic-labs/noms/go/marshal"
    17  	"github.com/attic-labs/noms/go/util/datetime"
    18  	"github.com/stretchr/testify/assert"
    19  )
    20  
    21  func TestBasics(t *testing.T) {
    22  	a := assert.New(t)
    23  	db := datas.NewDatabase(chunks.NewMemoryStoreFactory().CreateStore(""))
    24  	ds := db.GetDataset("foo")
    25  	ml, err := getAllMessages(ds)
    26  	a.NoError(err)
    27  	a.Equal(0, len(ml))
    28  
    29  	ds, err = AddMessage("body1", "aa", time.Unix(0, 0), ds)
    30  	a.NoError(err)
    31  	ml, err = getAllMessages(ds)
    32  	a.NoError(err)
    33  	expected := []Message{
    34  		Message{
    35  			Author:     "aa",
    36  			Body:       "body1",
    37  			ClientTime: datetime.DateTime{time.Unix(0, 0)},
    38  			Ordinal:    0,
    39  		},
    40  	}
    41  	a.Equal(expected, ml)
    42  
    43  	ds, err = AddMessage("body2", "bob", time.Unix(1, 0), ds)
    44  	a.NoError(err)
    45  	ml, err = getAllMessages(ds)
    46  	expected = append(
    47  		[]Message{
    48  			Message{
    49  				Author:     "bob",
    50  				Body:       "body2",
    51  				ClientTime: datetime.DateTime{time.Unix(1, 0)},
    52  				Ordinal:    1,
    53  			},
    54  		},
    55  		expected...,
    56  	)
    57  	a.NoError(err)
    58  	a.Equal(expected, ml)
    59  }
    60  
    61  func getAllMessages(ds datas.Dataset) (r []Message, err error) {
    62  	doneChan := make(chan struct{})
    63  	mm, keys, _ := ListMessages(ds, nil, doneChan)
    64  	for k := range keys {
    65  		mv := mm.Get(k)
    66  		var m Message
    67  		marshal.MustUnmarshal(mv, &m)
    68  		r = append(r, m)
    69  	}
    70  	doneChan <- struct{}{}
    71  	return r, nil
    72  }