@@ -208,26 +208,35 @@ final class ProductVariationSelectorViewModelTests: XCTestCase {
208208 func test_selectVariation_invokes_onVariationSelected_closure_for_existing_variation( ) {
209209 // Given
210210 var selectedVariationID : Int64 ?
211- let product = Product . fake ( ) . copy ( productID: sampleProductID)
211+ var selectedProductID : Int64 ?
212+
213+ let product = Product . fake ( ) . copy ( siteID: sampleSiteID, productID: sampleProductID)
212214 let productVariation = sampleProductVariation. copy ( productVariationID: 1 )
213215 insert ( productVariation)
216+ insert ( product)
217+
214218 let viewModel = ProductVariationSelectorViewModel ( siteID: sampleSiteID,
215219 product: product,
216220 storageManager: storageManager,
217- onVariationSelected: { selectedVariationID = $0. productVariationID } )
221+ onVariationSelected: { variation, product in
222+ selectedVariationID = variation. productVariationID
223+ selectedProductID = product. productID
224+ } )
218225
219226 // When
220227 viewModel. selectVariation ( productVariation. productVariationID)
221228
222229 // Then
223230 XCTAssertEqual ( selectedVariationID, productVariation. productVariationID)
231+ XCTAssertEqual ( selectedProductID, product. productID)
224232 }
225233
226234 func test_selecting_a_variation_set_its_row_to_selected( ) {
227235 // Given
228- let product = Product . fake ( ) . copy ( productID: sampleProductID)
236+ let product = Product . fake ( ) . copy ( siteID : sampleSiteID , productID: sampleProductID)
229237 let productVariation = sampleProductVariation. copy ( productVariationID: 1 )
230238 insert ( productVariation)
239+ insert ( product)
231240 let viewModel = ProductVariationSelectorViewModel ( siteID: sampleSiteID,
232241 product: product,
233242 storageManager: storageManager)
@@ -243,9 +252,10 @@ final class ProductVariationSelectorViewModelTests: XCTestCase {
243252
244253 func test_clearSelection_unselects_previously_selected_rows( ) {
245254 // Given
246- let product = Product . fake ( ) . copy ( productID: sampleProductID)
255+ let product = Product . fake ( ) . copy ( siteID : sampleSiteID , productID: sampleProductID)
247256 let productVariation = sampleProductVariation. copy ( productVariationID: 1 )
248257 insert ( productVariation)
258+ insert ( product)
249259 let viewModel = ProductVariationSelectorViewModel ( siteID: sampleSiteID,
250260 product: product,
251261 storageManager: storageManager)
@@ -280,6 +290,12 @@ private extension ProductVariationSelectorViewModelTests {
280290 productVariation. attributes = NSOrderedSet ( array: storageAttributes)
281291 }
282292
293+ /// Insert a `Product` into storage.
294+ func insert( _ readOnlyProduct: Yosemite . Product ) {
295+ let product = storage. insertNewObject ( ofType: StorageProduct . self)
296+ product. update ( with: readOnlyProduct)
297+ }
298+
283299 /// Insert an array of `ProductVariation`s into storage
284300 func insert( _ readOnlyVariations: [ Yosemite . ProductVariation ] ) {
285301 for readOnlyVariation in readOnlyVariations {
0 commit comments