@@ -78,6 +78,59 @@ class ShippingLabelPackagesFormViewModelTests: XCTestCase {
7878 XCTAssertEqual ( viewModel. itemViewModels. last? . selectedPackageID, package2. packageID)
7979 }
8080
81+ func test_doneButtonEnabled_returns_true_when_all_packages_are_valid( ) {
82+ // Given
83+ let order = MockOrders ( ) . empty ( ) . copy ( siteID: sampleSiteID)
84+ let package1 = ShippingLabelPackageAttributes ( packageID: " Box 1 " , totalWeight: " 12 " , productIDs: [ 1 , 2 , 3 ] )
85+ let package2 = ShippingLabelPackageAttributes ( packageID: " Box 2 " , totalWeight: " 5.5 " , productIDs: [ 1 , 2 , 3 ] )
86+
87+ // When
88+ let viewModel = ShippingLabelPackagesFormViewModel ( order: order,
89+ packagesResponse: nil ,
90+ selectedPackages: [ package1, package2] ) { _ in }
91+
92+ // Then
93+ XCTAssertTrue ( viewModel. doneButtonEnabled)
94+ }
95+
96+ func test_doneButtonEnabled_returns_false_when_not_all_packages_are_valid( ) {
97+ // Given
98+ let order = MockOrders ( ) . empty ( ) . copy ( siteID: sampleSiteID)
99+ let package1 = ShippingLabelPackageAttributes ( packageID: " Box 1 " , totalWeight: " 12 " , productIDs: [ 1 , 2 , 3 ] )
100+ let package2 = ShippingLabelPackageAttributes ( packageID: " Box 2 " , totalWeight: " 5.5 " , productIDs: [ 1 , 2 , 3 ] )
101+
102+ // When
103+ let viewModel = ShippingLabelPackagesFormViewModel ( order: order,
104+ packagesResponse: nil ,
105+ selectedPackages: [ package1, package2] ) { _ in }
106+ viewModel. itemViewModels. first? . totalWeight = " 0 "
107+
108+ // Then
109+ XCTAssertFalse ( viewModel. doneButtonEnabled)
110+ }
111+
112+ func test_onCompletion_returns_correctly( ) {
113+ // Given
114+ let order = MockOrders ( ) . empty ( ) . copy ( siteID: sampleSiteID)
115+ let package1 = ShippingLabelPackageAttributes ( packageID: " Box 1 " , totalWeight: " 12 " , productIDs: [ 1 , 2 , 3 ] )
116+ let package2 = ShippingLabelPackageAttributes ( packageID: " Box 2 " , totalWeight: " 5.5 " , productIDs: [ 1 , 2 , 3 ] )
117+
118+ var result : [ ShippingLabelPackageAttributes ] = [ ]
119+ let completionHandler : ShippingLabelPackagesFormViewModel . Completion = { packages in
120+ result = packages
121+ }
122+ // When
123+ let viewModel = ShippingLabelPackagesFormViewModel ( order: order,
124+ packagesResponse: nil ,
125+ selectedPackages: [ package1, package2] ,
126+ onCompletion: completionHandler)
127+ viewModel. confirmPackageSelection ( )
128+
129+ // Then
130+ XCTAssertEqual ( result. count, 2 )
131+ XCTAssertEqual ( result. first? . packageID, package1. packageID)
132+ XCTAssertEqual ( result. last? . packageID, package2. packageID)
133+ }
81134}
82135
83136// MARK: - Utils
0 commit comments