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

Side by Side Diff: ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller_unittest.mm

Issue 2589583003: Upstream Chrome on iOS source code [7/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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controlle r.h"
6
7 #include <memory>
8
9 #include "base/compiler_specific.h"
10 #include "base/files/file_path.h"
11 #include "base/memory/ref_counted.h"
12 #include "base/message_loop/message_loop.h"
13 #include "components/prefs/pref_registry_simple.h"
14 #include "components/prefs/pref_service.h"
15 #include "components/sync_preferences/pref_service_mock_factory.h"
16 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_item.h "
17 #import "ios/chrome/browser/ui/collection_view/collection_view_controller_test.h "
18 #include "ios/chrome/grit/ios_strings.h"
19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/base/l10n/l10n_util_mac.h"
21
22 @interface DataplanUsageCollectionViewController (ExposedForTesting)
23 - (void)updateBasePref:(BOOL)basePref wifiPref:(BOOL)wifiPref;
24 @end
25
26 namespace {
27
28 const char* kBasePref = "BasePref";
29 const char* kWifiPref = "WifiPref";
30
31 class DataplanUsageCollectionViewControllerTest
32 : public CollectionViewControllerTest {
33 protected:
34 void SetUp() override {
35 CollectionViewControllerTest::SetUp();
36 pref_service_ = CreateLocalState();
37 CreateController();
38 }
39
40 CollectionViewController* NewController() override NS_RETURNS_RETAINED {
41 dataplanController_.reset([[DataplanUsageCollectionViewController alloc]
42 initWithPrefs:pref_service_.get()
43 basePref:kBasePref
44 wifiPref:kWifiPref
45 title:@"CollectionTitle"]);
46 return [dataplanController_ retain];
47 }
48
49 std::unique_ptr<PrefService> CreateLocalState() {
50 scoped_refptr<PrefRegistrySimple> registry(new PrefRegistrySimple());
51 registry->RegisterBooleanPref(kBasePref, false);
52 registry->RegisterBooleanPref(kWifiPref, false);
53
54 sync_preferences::PrefServiceMockFactory factory;
55 base::FilePath path("DataplanUsageCollectionViewControllerTest.pref");
56 factory.SetUserPrefsFile(path, message_loop_.task_runner().get());
57 return factory.Create(registry.get());
58 }
59
60 // Verifies that the cell at |item| in |section| has the given |accessory|
61 // type.
62 void CheckTextItemAccessoryType(int accessory_type, int section, int item) {
63 CollectionViewTextItem* cell = GetCollectionViewItem(section, item);
64 EXPECT_EQ(accessory_type, cell.accessoryType);
65 }
66
67 base::MessageLoopForUI message_loop_;
68 std::unique_ptr<PrefService> pref_service_;
69 base::scoped_nsobject<DataplanUsageCollectionViewController>
70 dataplanController_;
71 };
72
73 TEST_F(DataplanUsageCollectionViewControllerTest, TestModel) {
74 CheckController();
75 EXPECT_EQ(1, NumberOfSections());
76
77 // No section header + 3 rows
78 EXPECT_EQ(3, NumberOfItemsInSection(0));
79 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 0);
80 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 1);
81 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 2);
82
83 CheckTextCellTitleWithId(IDS_IOS_OPTIONS_DATA_USAGE_ALWAYS, 0, 0);
84 CheckTextCellTitleWithId(IDS_IOS_OPTIONS_DATA_USAGE_ONLY_WIFI, 0, 1);
85 CheckTextCellTitleWithId(IDS_IOS_OPTIONS_DATA_USAGE_NEVER, 0, 2);
86 }
87
88 TEST_F(DataplanUsageCollectionViewControllerTest, TestUpdateCheckedState) {
89 CheckController();
90 ASSERT_EQ(1, NumberOfSections());
91 ASSERT_EQ(3, NumberOfItemsInSection(0));
92
93 [dataplanController_ updateBasePref:YES wifiPref:YES];
94 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 0);
95 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 1);
96 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 2);
97
98 [dataplanController_ updateBasePref:YES wifiPref:NO];
99 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 0);
100 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 1);
101 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 2);
102
103 [dataplanController_ updateBasePref:NO wifiPref:YES];
104 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 0);
105 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 1);
106 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 2);
107
108 [dataplanController_ updateBasePref:NO wifiPref:NO];
109 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 0);
110 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryNone, 0, 1);
111 CheckTextItemAccessoryType(MDCCollectionViewCellAccessoryCheckmark, 0, 2);
112 }
113
114 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698