@@ -323,6 +323,47 @@ final class SiteStoreTests: XCTestCase {
323323 let error = try XCTUnwrap ( result. failure)
324324 XCTAssertEqual ( error as? DotcomError , . unknown( code: " error " , message: nil ) )
325325 }
326+
327+ // MARK: - `syncSiteByDomain`
328+
329+ func test_syncSiteByDomain_returns_site_on_success( ) {
330+ // Given
331+ let siteID : Int64 = 123
332+ let domain = " example.com "
333+ let site = Site . fake ( ) . copy ( siteID: siteID, name: " Miffy " , url: " https:// \( domain) " )
334+ remote. whenLoadingSite ( thenReturn: . success( site) )
335+
336+ // When
337+ let result = waitFor { promise in
338+ self . store. onAction ( SiteAction . syncSiteByDomain ( domain: domain, completion: { result in
339+ promise ( result)
340+ } ) )
341+ }
342+
343+ // Then
344+ XCTAssertTrue ( result. isSuccess)
345+ let loadedSite = viewStorage. loadSite ( siteID: siteID)
346+ XCTAssertEqual ( loadedSite? . name, " Miffy " )
347+ }
348+
349+ func test_syncSiteByDomain_returns_error_on_failure( ) throws {
350+ // Given
351+ let siteID : Int64 = 123
352+ let domain = " example.com "
353+ remote. whenLoadingSite ( thenReturn: . failure( DotcomError . unknown ( code: " error " , message: nil ) ) )
354+
355+ // When
356+ let result = waitFor { promise in
357+ self . store. onAction ( SiteAction . syncSiteByDomain ( domain: domain, completion: { result in
358+ promise ( result)
359+ } ) )
360+ }
361+
362+ // Then
363+ XCTAssertFalse ( result. isSuccess)
364+ let error = try XCTUnwrap ( result. failure)
365+ XCTAssertEqual ( error as? DotcomError , . unknown( code: " error " , message: nil ) )
366+ }
326367}
327368
328369private extension SiteStoreTests {
0 commit comments