@@ -160,6 +160,85 @@ final class HubMenuViewModelTests: XCTestCase {
160160 // Then
161161 XCTAssertEqual ( viewModel. menuElements, [ . woocommerceAdmin, . viewStore, . reviews] )
162162 }
163+ func test_storeURL_when_site_has_storeURL_then_returns_storeURL( ) {
164+ // Given
165+ let sampleStoreURL = " https://testshop.com/ "
166+ let sessionManager = SessionManager . testingInstance
167+ let site = Site . fake ( ) . copy ( url: sampleStoreURL)
168+ sessionManager. defaultSite = site
169+ let stores = MockStoresManager ( sessionManager: sessionManager)
170+
171+ // When
172+ let viewModel = HubMenuViewModel ( siteID: site. siteID,
173+ stores: stores)
174+
175+ // Then
176+ XCTAssertEqual ( viewModel. storeURL, try sampleStoreURL. asURL ( ) )
177+ }
178+ func test_woocommerceAdminURL_when_site_has_adminURL_then_returns_adminURL( ) {
179+ // Given
180+ let sampleAdminURL = " https://testshop.com/wp-admin/ "
181+ let sessionManager = SessionManager . testingInstance
182+ let site = Site . fake ( ) . copy ( adminURL: sampleAdminURL)
183+ sessionManager. defaultSite = site
184+ let stores = MockStoresManager ( sessionManager: sessionManager)
185+
186+ // When
187+ let viewModel = HubMenuViewModel ( siteID: site. siteID,
188+ stores: stores)
189+
190+ // Then
191+ XCTAssertEqual ( viewModel. woocommerceAdminURL, try sampleAdminURL. asURL ( ) )
192+ }
193+ func test_storeURL_when_storeURL_is_nil_then_returns_woocommerce_fallback_url( ) {
194+ // Given
195+ let sampleStoreURL : String ? = nil
196+ let sessionManager = SessionManager . testingInstance
197+ let site = Site . fake ( ) . copy ( url: sampleStoreURL)
198+ sessionManager. defaultSite = site
199+ let stores = MockStoresManager ( sessionManager: sessionManager)
200+
201+ // When
202+ let viewModel = HubMenuViewModel ( siteID: site. siteID,
203+ stores: stores)
204+ // Then
205+ XCTAssertNotNil ( viewModel. storeURL)
206+ XCTAssertEqual ( viewModel. storeURL, WooConstants . URLs. blog. asURL ( ) )
207+ }
208+ func test_woocommerceAdminURL_when_adminURL_is_nil_then_returns_adminURL( ) {
209+ // Given
210+ let sampleStoreURL = " https://testshop.com "
211+ let sampleAdminURL : String ? = nil
212+ let expectedAdminURL = " https://testshop.com/wp-admin "
213+ let sessionManager = SessionManager . testingInstance
214+ let site = Site . fake ( ) . copy ( url: sampleStoreURL, adminURL: sampleAdminURL)
215+ sessionManager. defaultSite = site
216+ let stores = MockStoresManager ( sessionManager: sessionManager)
217+
218+ // When
219+ let viewModel = HubMenuViewModel ( siteID: site. siteID,
220+ stores: stores)
221+ // Then
222+ XCTAssertNotNil ( viewModel. woocommerceAdminURL)
223+ XCTAssertEqual ( viewModel. woocommerceAdminURL, try URL ( string: expectedAdminURL) ? . asURL ( ) )
224+ }
225+ func test_woocommerceAdminURL_when_adminURL_is_empty_then_returns_adminURL( ) {
226+ // Given
227+ let sampleStoreURL = " https://testshop.com "
228+ let sampleAdminURL = " "
229+ let expectedAdminURL = " https://testshop.com/wp-admin "
230+ let sessionManager = SessionManager . testingInstance
231+ let site = Site . fake ( ) . copy ( url: sampleStoreURL, adminURL: sampleAdminURL)
232+ sessionManager. defaultSite = site
233+ let stores = MockStoresManager ( sessionManager: sessionManager)
234+
235+ // When
236+ let viewModel = HubMenuViewModel ( siteID: site. siteID,
237+ stores: stores)
238+ // Then
239+ XCTAssertNotNil ( viewModel. woocommerceAdminURL)
240+ XCTAssertEqual ( viewModel. woocommerceAdminURL, try URL ( string: expectedAdminURL) ? . asURL ( ) )
241+ }
163242}
164243
165244private extension HubMenuViewModelTests {
0 commit comments