From b7c70326f21c1907fecb8c4d69d1ef5fca000087 Mon Sep 17 00:00:00 2001 From: Evgeny Aleksandrov Date: Thu, 15 Dec 2022 11:48:31 +0300 Subject: [PATCH 1/2] Display sessions card conditionally --- .../Dashboard/Analytics Hub/AnalyticsHubView.swift | 2 +- .../Analytics Hub/AnalyticsHubViewModel.swift | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubView.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubView.swift index b633d2cb90f..642fe0cb50b 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubView.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubView.swift @@ -113,7 +113,7 @@ struct AnalyticsHubView: View { Divider() } - .renderedIf(ServiceLocator.featureFlagService.isFeatureFlagEnabled(.analyticsHub)) + .renderedIf(ServiceLocator.featureFlagService.isFeatureFlagEnabled(.analyticsHub) && viewModel.showSessionsCard) Spacer() } diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift index 915019cbeea..8c7b01c14e0 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift @@ -53,6 +53,17 @@ final class AnalyticsHubViewModel: ObservableObject { /// @Published var sessionsCard = AnalyticsHubViewModel.sessionsCard(currentPeriodStats: nil, siteStats: nil) + /// Sessions Card display state + /// + var showSessionsCard: Bool { + switch timeRangeSelectionType { + case .custom: + return false + default: + return true + } + } + /// Time Range Selection Type /// @Published var timeRangeSelectionType: AnalyticsHubTimeRangeSelection.SelectionType From 20569e9fcdf517ce266c0f3de844d0180d58cca2 Mon Sep 17 00:00:00 2001 From: Evgeny Aleksandrov Date: Thu, 15 Dec 2022 12:00:28 +0300 Subject: [PATCH 2/2] Add test --- .../AnalyticsHubViewModelTests.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/WooCommerce/WooCommerceTests/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModelTests.swift b/WooCommerce/WooCommerceTests/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModelTests.swift index 6e51f4ebb96..3f5b4852ca3 100644 --- a/WooCommerce/WooCommerceTests/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModelTests.swift +++ b/WooCommerce/WooCommerceTests/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModelTests.swift @@ -118,4 +118,22 @@ final class AnalyticsHubViewModelTests: XCTestCase { XCTAssertEqual(loadingItemsSoldCard?.isRedacted, true) XCTAssertEqual(loadingSessionsCard?.isRedacted, true) } + + func test_session_card_is_hidden_for_custom_range() async { + // Given + let vm = AnalyticsHubViewModel(siteID: 123, statsTimeRange: .today, usageTracksEventEmitter: eventEmitter, stores: stores) + XCTAssertTrue(vm.showSessionsCard) + + // When + vm.timeRangeSelectionType = .custom(start: Date(), end: Date()) + + // Then + XCTAssertFalse(vm.showSessionsCard) + + // When + vm.timeRangeSelectionType = .lastMonth + + // Then + XCTAssertTrue(vm.showSessionsCard) + } }