Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(450)

Unified Diff: ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm

Issue 2587023002: Upstream Chrome on iOS source code [8/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..d7a5b28188c790e14133c5289a1ce37652d78525
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm
@@ -0,0 +1,134 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// 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/settings/time_range_selector_collection_view_controller.h"
+
+#include "base/files/file_path.h"
+#include "base/message_loop/message_loop.h"
+#include "components/browsing_data/core/pref_names.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/prefs/pref_service.h"
+#include "components/sync_preferences/pref_service_mock_factory.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_item.h"
+#import "ios/chrome/browser/ui/collection_view/collection_view_controller_test.h"
+#include "ios/chrome/grit/ios_strings.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/ocmock/OCMock/OCMock.h"
+#import "third_party/ocmock/gtest_support.h"
+
+@interface TimeRangeSelectorCollectionViewController (ExposedForTesting)
+- (void)updatePrefValue:(int)prefValue;
+@end
+
+namespace {
+
+const NSInteger kNumberOfItems = 5;
+
+class TimeRangeSelectorCollectionViewControllerTest
+ : public CollectionViewControllerTest {
+ protected:
+ void SetUp() override {
+ CollectionViewControllerTest::SetUp();
+ pref_service_ = CreateLocalState();
+ delegate_.reset([[OCMockObject
+ mockForProtocol:@protocol(
+ TimeRangeSelectorCollectionViewControllerDelegate)]
+ retain]);
+ CreateController();
+ }
+
+ CollectionViewController* NewController() override NS_RETURNS_RETAINED {
+ time_range_selector_controller_.reset(
+ [[TimeRangeSelectorCollectionViewController alloc]
+ initWithPrefs:pref_service_.get()
+ delegate:delegate_.get()]);
+ return [time_range_selector_controller_ retain];
+ }
+
+ std::unique_ptr<PrefService> CreateLocalState() {
+ scoped_refptr<PrefRegistrySimple> registry(new PrefRegistrySimple());
+ registry->RegisterIntegerPref(browsing_data::prefs::kDeleteTimePeriod, 0);
+
+ sync_preferences::PrefServiceMockFactory factory;
+ return factory.Create(registry.get());
+ }
+
+ // Verifies that the cell at |item| in |section| has the given |accessory|
+ // type.
+ void CheckTextItemAccessoryType(int accessory_type, int section, int item) {
+ CollectionViewTextItem* cell = GetCollectionViewItem(section, item);
+ EXPECT_EQ(accessory_type, cell.accessoryType);
+ }
+
+ base::MessageLoopForUI message_loop_;
+ std::unique_ptr<PrefService> pref_service_;
+ base::scoped_nsobject<id> delegate_;
+ base::scoped_nsobject<TimeRangeSelectorCollectionViewController>
+ time_range_selector_controller_;
+};
+
+TEST_F(TimeRangeSelectorCollectionViewControllerTest, TestModel) {
+ CheckController();
+ EXPECT_EQ(1, NumberOfSections());
+
+ // No section header + 5 rows
+ EXPECT_EQ(kNumberOfItems, NumberOfItemsInSection(0));
+
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 0);
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 1);
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 2);
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 3);
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 4);
+
+ CheckTextCellTitleWithId(
+ IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_PAST_HOUR, 0, 0);
+ CheckTextCellTitleWithId(
+ IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_PAST_DAY, 0, 1);
+ CheckTextCellTitleWithId(
+ IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_PAST_WEEK, 0, 2);
+ CheckTextCellTitleWithId(
+ IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_LAST_FOUR_WEEKS, 0, 3);
+ CheckTextCellTitleWithId(
+ IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_BEGINNING_OF_TIME, 0, 4);
+}
+
+TEST_F(TimeRangeSelectorCollectionViewControllerTest, TestUpdateCheckedState) {
+ CheckController();
+ ASSERT_EQ(1, NumberOfSections());
+ ASSERT_EQ(kNumberOfItems, NumberOfItemsInSection(0));
+
+ for (NSInteger checkedItem = 0; checkedItem < kNumberOfItems; ++checkedItem) {
+ [time_range_selector_controller_ updatePrefValue:checkedItem];
+ for (NSInteger item = 0; item < kNumberOfItems; ++item) {
+ if (item == checkedItem) {
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0,
+ item);
+ } else {
+ CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, item);
+ }
+ }
+ }
+}
+
+TEST_F(TimeRangeSelectorCollectionViewControllerTest, TestUpdatePrefValue) {
+ CheckController();
+ UICollectionView* collectionView =
+ time_range_selector_controller_.get().collectionView;
+ for (NSInteger checkedItem = 0; checkedItem < kNumberOfItems; ++checkedItem) {
+ NSIndexPath* indexPath =
+ [NSIndexPath indexPathForItem:checkedItem inSection:0];
+ [[delegate_.get() expect]
+ timeRangeSelectorViewController:time_range_selector_controller_.get()
+ didSelectTimePeriod:static_cast<browsing_data::TimePeriod>(
+ checkedItem)];
+ [time_range_selector_controller_ collectionView:collectionView
+ didSelectItemAtIndexPath:indexPath];
+ EXPECT_EQ(
+ pref_service_->GetInteger(browsing_data::prefs::kDeleteTimePeriod),
+ checkedItem);
+ EXPECT_OCMOCK_VERIFY(delegate_);
+ }
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698