github.com/jfrog/jfrog-cli-core/v2@v2.52.0/utils/reposnapshot/node_test.go (about)

     1  package reposnapshot
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  // Convert node to wrapper and back to verify conversions.
    10  func TestConversions(t *testing.T) {
    11  	root := createTestSnapshotTree(t)
    12  	node2 := getChild(root, "2")
    13  	// Set fields to contain a non-empty value.
    14  	node2.NodeStatus = Completed
    15  
    16  	wrapper, err := root.convertToWrapper()
    17  	assert.NoError(t, err)
    18  
    19  	convertedRoot := wrapper.convertToNode()
    20  	node2converted := getChild(convertedRoot, "2")
    21  	assert.Equal(t, ".", node2.parent.name)
    22  	assert.Equal(t, Completed, node2converted.NodeStatus)
    23  }
    24  
    25  func TestCheckCompleted(t *testing.T) {
    26  	zero, one, two := createThreeNodesTree(t)
    27  
    28  	// Set completed and expect false
    29  	checkCompleted(t, false, zero, one, two)
    30  
    31  	// Mark done exploring and zero all file counts
    32  	markDoneExploring(t, zero, one, two)
    33  	decrementFilesCount(t, one, two, two)
    34  
    35  	// Run check completed one all nodes from down to top
    36  	checkCompleted(t, true, two, one, zero)
    37  }
    38  
    39  func TestCalculateTransferredFilesAndSize(t *testing.T) {
    40  	zero, one, two := createThreeNodesTree(t)
    41  
    42  	// Run calculate and expect that the total files count and size in "zero" are zero
    43  	totalFilesCount, totalFilesSize, err := zero.CalculateTransferredFilesAndSize()
    44  	assert.NoError(t, err)
    45  	assert.Zero(t, totalFilesSize)
    46  	assert.Zero(t, totalFilesCount)
    47  
    48  	// Mark done exploring
    49  	markDoneExploring(t, zero, one, two)
    50  
    51  	// Zero the files count of "two"
    52  	decrementFilesCount(t, two, two)
    53  	checkCompleted(t, true, two)
    54  
    55  	// Run calculate and expect that "zero" will contain the files count and size of "two"
    56  	totalFilesCount, totalFilesSize, err = zero.CalculateTransferredFilesAndSize()
    57  	assert.NoError(t, err)
    58  	assert.EqualValues(t, 1, totalFilesSize)
    59  	assert.EqualValues(t, 2, totalFilesCount)
    60  
    61  	// Zero the file count of "one"
    62  	decrementFilesCount(t, one)
    63  	checkCompleted(t, true, one, zero)
    64  
    65  	// Run calculate and expect that "zero" will contain the files count and size of "one" and "two"
    66  	totalFilesCount, totalFilesSize, err = zero.CalculateTransferredFilesAndSize()
    67  	assert.NoError(t, err)
    68  	assert.EqualValues(t, 1, totalFilesSize)
    69  	assert.EqualValues(t, 3, totalFilesCount)
    70  }
    71  
    72  // Create the following tree structure 0 --> 1 -- > 2
    73  func createThreeNodesTree(t *testing.T) (zero, one, two *Node) {
    74  	zero = createNodeBase(t, "0", 0, nil)
    75  	one = createNodeBase(t, "1", 1, zero)
    76  	two = createNodeBase(t, "2", 2, one)
    77  	addChildren(zero, one)
    78  	addChildren(one, two)
    79  	return
    80  }
    81  
    82  func checkCompleted(t *testing.T, expected bool, nodes ...*Node) {
    83  	for _, node := range nodes {
    84  		assert.NoError(t, node.CheckCompleted())
    85  		actual, err := node.IsCompleted()
    86  		assert.NoError(t, err)
    87  		assert.Equal(t, expected, actual)
    88  	}
    89  }
    90  
    91  func markDoneExploring(t *testing.T, nodes ...*Node) {
    92  	for _, node := range nodes {
    93  		assert.NoError(t, node.MarkDoneExploring())
    94  	}
    95  }
    96  
    97  func decrementFilesCount(t *testing.T, nodes ...*Node) {
    98  	for _, node := range nodes {
    99  		assert.NoError(t, node.DecrementFilesCount())
   100  	}
   101  }