Commit 5951643c authored by Cooper Knaak's avatar Cooper Knaak Committed by Commit Bot

[iOS] Add FeatureEngagementTracker Viewed Reading List Event Unit Test

Added unit test to verify that -[ReadingListCoordinator start] correctly
sends the "Viewed Reading List" event to the FeatureEngagementTracker.

R=edchin@chromium.org, gchatz@chromium.org, noyau@chromium.org

Bug: 558666
Change-Id: Ib286b0746e773e937881868444ba094bacdc5639
Reviewed-on: https://chromium-review.googlesource.com/569219Reviewed-by: default avatarGregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: default avatarEd Chin <edchin@chromium.org>
Reviewed-by: default avatarEric Noyau <noyau@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#488021}
parent 04424852
......@@ -120,11 +120,13 @@ source_set("unit_tests") {
"//base/test:test_support",
"//components/favicon/core",
"//components/favicon/core/test:test_support",
"//components/feature_engagement_tracker",
"//components/prefs",
"//components/reading_list/core",
"//components/url_formatter",
"//ios/chrome/browser/browser_state:test_support",
"//ios/chrome/browser/favicon",
"//ios/chrome/browser/feature_engagement_tracker",
"//ios/chrome/browser/reading_list",
"//ios/chrome/browser/tabs",
"//ios/chrome/browser/ui",
......
......@@ -9,9 +9,13 @@
#include "base/time/default_clock.h"
#include "components/favicon/core/large_icon_service.h"
#include "components/favicon/core/test/mock_favicon_service.h"
#include "components/feature_engagement_tracker/public/event_constants.h"
#include "components/feature_engagement_tracker/public/feature_constants.h"
#include "components/feature_engagement_tracker/public/feature_engagement_tracker.h"
#include "components/reading_list/core/reading_list_entry.h"
#include "components/reading_list/core/reading_list_model_impl.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#include "ios/chrome/browser/feature_engagement_tracker/feature_engagement_tracker_factory.h"
#include "ios/chrome/browser/reading_list/offline_url_utils.h"
#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
#import "ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.h"
......@@ -22,6 +26,7 @@
#include "ios/web/public/referrer.h"
#import "ios/web/public/test/web_test_with_web_state.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#import "third_party/ocmock/gtest_support.h"
#include "ui/base/page_transition_types.h"
......@@ -95,6 +100,21 @@ using testing::_;
@end
#pragma mark - FeatureEngagementTracker
namespace {
class FeatureEngagementTrackerStub
: public feature_engagement_tracker::FeatureEngagementTracker {
public:
MOCK_METHOD1(NotifyEvent, void(const std::string&));
MOCK_METHOD1(ShouldTriggerHelpUI, bool(const base::Feature& feature));
MOCK_METHOD1(Dismissed, void(const base::Feature& feature));
MOCK_METHOD0(IsInitialized, bool());
MOCK_METHOD1(AddOnInitializedCallback, void(OnInitializedCallback callback));
};
} // namespace
#pragma mark - ReadingListCoordinatorTest
class ReadingListCoordinatorTest : public web::WebTestWithWebState {
......@@ -103,6 +123,9 @@ class ReadingListCoordinatorTest : public web::WebTestWithWebState {
loader_mock_ = [[UrlLoaderStub alloc] init];
TestChromeBrowserState::Builder builder;
builder.AddTestingFactory(
FeatureEngagementTrackerFactory::GetInstance(),
ReadingListCoordinatorTest::BuildFeatureEngagementTrackerStub);
browser_state_ = builder.Build();
reading_list_model_.reset(new ReadingListModelImpl(
......@@ -131,6 +154,8 @@ class ReadingListCoordinatorTest : public web::WebTestWithWebState {
ReadingListModel* GetReadingListModel() { return reading_list_model_.get(); }
UrlLoaderStub* GetLoaderStub() { return loader_mock_; }
ios::ChromeBrowserState* GetBrowserState() { return browser_state_.get(); }
ReadingListCollectionViewController*
GetAReadingListCollectionViewController() {
return [[ReadingListCollectionViewController alloc]
......@@ -138,6 +163,11 @@ class ReadingListCoordinatorTest : public web::WebTestWithWebState {
toolbar:nil];
}
static std::unique_ptr<KeyedService> BuildFeatureEngagementTrackerStub(
web::BrowserState*) {
return base::MakeUnique<FeatureEngagementTrackerStub>();
}
private:
ReadingListCoordinator* coordinator_;
ReadingListMediator* mediator_;
......@@ -229,3 +259,17 @@ TEST_F(ReadingListCoordinatorTest, OpenItemInNewTab) {
EXPECT_EQ(url, loader.url);
EXPECT_TRUE(loader.inIncognito);
}
TEST_F(ReadingListCoordinatorTest, SendViewedReadingListEventInStart) {
// Setup.
FeatureEngagementTrackerStub* tracker =
static_cast<FeatureEngagementTrackerStub*>(
FeatureEngagementTrackerFactory::GetForBrowserState(
GetBrowserState()));
// Actions and Tests.
EXPECT_CALL(
(*tracker),
NotifyEvent(feature_engagement_tracker::events::kViewedReadingList));
[GetCoordinator() start];
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment