[go: nahoru, domu]

blob: 299dd730273d9f0c4d60ddad745d701d4220eb47 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/ui/promos_manager/promos_manager_coordinator_unittest.h"
#import <Foundation/Foundation.h>
#import "base/apple/foundation_util.h"
#import "base/test/scoped_feature_list.h"
#import "base/test/task_environment.h"
#import "components/prefs/pref_registry_simple.h"
#import "components/prefs/testing_pref_service.h"
#import "ios/chrome/browser/promos_manager/features.h"
#import "ios/chrome/browser/shared/model/browser/test/test_browser.h"
#import "ios/chrome/browser/shared/model/browser_state/test_chrome_browser_state.h"
#import "ios/chrome/browser/shared/model/prefs/pref_names.h"
#import "ios/chrome/browser/shared/public/commands/credential_provider_promo_commands.h"
#import "ios/chrome/browser/ui/promos_manager/bannered_promo_view_provider.h"
#import "ios/chrome/browser/ui/promos_manager/promos_manager_coordinator+internal.h"
#import "ios/chrome/browser/ui/promos_manager/standard_promo_action_handler.h"
#import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h"
#import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h"
#import "ios/chrome/common/ui/promo_style/promo_style_view_controller.h"
#import "ios/chrome/test/scoped_key_window.h"
#import "testing/gtest/include/gtest/gtest.h"
#import "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
PromosManagerCoordinatorTest::PromosManagerCoordinatorTest() {
browser_state_ = TestChromeBrowserState::Builder().Build();
browser_ = std::make_unique<TestBrowser>(browser_state_.get());
view_controller_ = [[UIViewController alloc] init];
[scoped_key_window_.Get() setRootViewController:view_controller_];
}
PromosManagerCoordinatorTest::~PromosManagerCoordinatorTest() {}
void PromosManagerCoordinatorTest::CreatePromosManagerCoordinator() {
coordinator_ = [[PromosManagerCoordinator alloc]
initWithBaseViewController:view_controller_
browser:browser_.get()
credentialProviderPromoHandler:OCMStrictProtocolMock(@protocol(
CredentialProviderPromoCommands))];
}
// Tests a provider's standardPromoDismissAction is called when a
// viewController's dismiss button is pressed.
TEST_F(PromosManagerCoordinatorTest,
ViewControllerDismissesUsingDismissButton) {
CreatePromosManagerCoordinator();
id provider = OCMProtocolMock(@protocol(StandardPromoViewProvider));
coordinator_.provider = provider;
OCMExpect([provider standardPromoDismissAction]);
[coordinator_ confirmationAlertDismissAction];
[provider verify];
}
// Tests a banneredProvider's standardPromoDismissAction is called when a
// banneredViewController's dismiss button is pressed.
TEST_F(PromosManagerCoordinatorTest,
BanneredViewControllerDismissesUsingSecondaryButton) {
CreatePromosManagerCoordinator();
id banneredProvider = OCMProtocolMock(@protocol(BanneredPromoViewProvider));
coordinator_.banneredProvider = banneredProvider;
OCMExpect([banneredProvider standardPromoDismissAction]);
[coordinator_ confirmationAlertDismissAction];
[banneredProvider verify];
}
// Tests standardPromoDismissSwipe is called when a viewController is
// dismissed via swipe.
TEST_F(PromosManagerCoordinatorTest, ViewControllerDismissesViaSwipe) {
CreatePromosManagerCoordinator();
id provider = OCMProtocolMock(@protocol(StandardPromoViewProvider));
coordinator_.provider = provider;
OCMExpect([provider standardPromoDismissSwipe]);
[coordinator_ presentationControllerDidDismiss:nil];
[provider verify];
}
// Tests standardPromoDismissSwipe is called when a banneredViewController is
// dismissed via swipe.
TEST_F(PromosManagerCoordinatorTest, BanneredViewControllerDismissesViaSwipe) {
CreatePromosManagerCoordinator();
id banneredProvider = OCMProtocolMock(@protocol(BanneredPromoViewProvider));
coordinator_.banneredProvider = banneredProvider;
OCMExpect([banneredProvider standardPromoDismissSwipe]);
[coordinator_ presentationControllerDidDismiss:nil];
[banneredProvider verify];
}
// TODO(crbug.com/1370763): Add unit tests for promoWasDisplayed being
// called when promo is displayed.