github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fs/accounting/transfer_test.go (about)

     1  package accounting
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"io"
     7  	"testing"
     8  
     9  	"github.com/rclone/rclone/fs/rc"
    10  	"github.com/rclone/rclone/fstest/mockfs"
    11  	"github.com/rclone/rclone/fstest/mockobject"
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestTransfer(t *testing.T) {
    17  	ctx := context.Background()
    18  	s := NewStats(ctx)
    19  
    20  	o := mockobject.Object("obj")
    21  	srcFs, err := mockfs.NewFs(ctx, "srcFs", "srcFs", nil)
    22  	require.NoError(t, err)
    23  	dstFs, err := mockfs.NewFs(ctx, "dstFs", "dstFs", nil)
    24  	require.NoError(t, err)
    25  
    26  	tr := newTransfer(s, o, srcFs, dstFs)
    27  
    28  	t.Run("Snapshot", func(t *testing.T) {
    29  		snap := tr.Snapshot()
    30  		assert.Equal(t, "obj", snap.Name)
    31  		assert.Equal(t, int64(0), snap.Size)
    32  		assert.Equal(t, int64(0), snap.Bytes)
    33  		assert.Equal(t, false, snap.Checked)
    34  		assert.Equal(t, false, snap.StartedAt.IsZero())
    35  		assert.Equal(t, true, snap.CompletedAt.IsZero())
    36  		assert.Equal(t, nil, snap.Error)
    37  		assert.Equal(t, "", snap.Group)
    38  		assert.Equal(t, "srcFs:srcFs", snap.SrcFs)
    39  		assert.Equal(t, "dstFs:dstFs", snap.DstFs)
    40  	})
    41  
    42  	t.Run("Done", func(t *testing.T) {
    43  		tr.Done(ctx, io.EOF)
    44  		snap := tr.Snapshot()
    45  		assert.Equal(t, "obj", snap.Name)
    46  		assert.Equal(t, int64(0), snap.Size)
    47  		assert.Equal(t, int64(0), snap.Bytes)
    48  		assert.Equal(t, false, snap.Checked)
    49  		assert.Equal(t, false, snap.StartedAt.IsZero())
    50  		assert.Equal(t, false, snap.CompletedAt.IsZero())
    51  		assert.Equal(t, true, errors.Is(snap.Error, io.EOF))
    52  		assert.Equal(t, "", snap.Group)
    53  		assert.Equal(t, "srcFs:srcFs", snap.SrcFs)
    54  		assert.Equal(t, "dstFs:dstFs", snap.DstFs)
    55  	})
    56  
    57  	t.Run("rcStats", func(t *testing.T) {
    58  		out := tr.rcStats()
    59  		assert.Equal(t, rc.Params{
    60  			"name":  "obj",
    61  			"size":  int64(0),
    62  			"srcFs": "srcFs:srcFs",
    63  			"dstFs": "dstFs:dstFs",
    64  		}, out)
    65  	})
    66  }