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 }