11import XCTest
22
33@testable import WooCommerce
4+ @testable import Yosemite
45
56final class HubMenuViewModelTests : XCTestCase {
67 private let sampleSiteID : Int64 = 606
@@ -22,8 +23,51 @@ final class HubMenuViewModelTests: XCTestCase {
2223
2324 // When
2425 let viewModel = HubMenuViewModel ( siteID: sampleSiteID, featureFlagService: featureFlagService)
26+ viewModel. setupMenuElements ( )
2527
2628 // Then
2729 XCTAssertEqual ( viewModel. menuElements, [ . woocommerceAdmin, . viewStore, . inbox, . reviews] )
2830 }
31+
32+ func test_menuElements_include_coupons_when_couponManagement_is_enabled_in_app_settings( ) {
33+ // Given
34+ let stores = MockStoresManager ( sessionManager: . makeForTesting( ) )
35+ let featureFlagService = MockFeatureFlagService ( isInboxOn: true )
36+
37+ // When
38+ stores. whenReceivingAction ( ofType: AppSettingsAction . self) { action in
39+ switch action {
40+ case . loadCouponManagementFeatureSwitchState( let onCompletion) :
41+ onCompletion ( . success( true ) )
42+ default :
43+ break
44+ }
45+ }
46+ let viewModel = HubMenuViewModel ( siteID: sampleSiteID, featureFlagService: featureFlagService, stores: stores)
47+ viewModel. setupMenuElements ( )
48+
49+ // Then
50+ XCTAssertEqual ( viewModel. menuElements, [ . woocommerceAdmin, . viewStore, . inbox, . coupons, . reviews] )
51+ }
52+
53+ func test_menuElements_does_not_include_coupons_when_couponManagement_is_not_enabled_in_app_settings( ) {
54+ // Given
55+ let stores = MockStoresManager ( sessionManager: . makeForTesting( ) )
56+ let featureFlagService = MockFeatureFlagService ( isInboxOn: false )
57+
58+ // When
59+ stores. whenReceivingAction ( ofType: AppSettingsAction . self) { action in
60+ switch action {
61+ case . loadCouponManagementFeatureSwitchState( let onCompletion) :
62+ onCompletion ( . success( false ) )
63+ default :
64+ break
65+ }
66+ }
67+ let viewModel = HubMenuViewModel ( siteID: sampleSiteID, featureFlagService: featureFlagService, stores: stores)
68+ viewModel. setupMenuElements ( )
69+
70+ // Then
71+ XCTAssertEqual ( viewModel. menuElements, [ . woocommerceAdmin, . viewStore, . reviews] )
72+ }
2973}
0 commit comments