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

Side by Side Diff: ios/clean/chrome/browser/ui/tools/tools_mediator_unittest.mm

Issue 2906313003: [ios clean] ToolsMenu Mediator observes Webstate. (Closed)
Patch Set: Improved comments and test nits Created 3 years, 6 months 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
« no previous file with comments | « ios/clean/chrome/browser/ui/tools/tools_mediator.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/clean/chrome/browser/ui/tools/tools_mediator.h" 5 #import "ios/clean/chrome/browser/ui/tools/tools_mediator.h"
6 6
7 #include "base/memory/ptr_util.h"
7 #import "ios/clean/chrome/browser/ui/tools/tools_consumer.h" 8 #import "ios/clean/chrome/browser/ui/tools/tools_consumer.h"
8 #import "ios/clean/chrome/browser/ui/tools/tools_mediator_private.h" 9 #import "ios/clean/chrome/browser/ui/tools/tools_mediator_private.h"
9 #import "ios/clean/chrome/browser/ui/tools/tools_menu_item.h" 10 #import "ios/clean/chrome/browser/ui/tools/tools_menu_item.h"
11 #import "ios/shared/chrome/browser/ui/toolbar/toolbar_test_util.h"
10 #import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h" 12 #import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h"
13 #import "ios/web/public/test/fakes/test_web_state.h"
14 #import "ios/web/public/web_state/web_state_observer_bridge.h"
11 #include "testing/gtest_mac.h" 15 #include "testing/gtest_mac.h"
12 #include "testing/platform_test.h" 16 #include "testing/platform_test.h"
13 #import "third_party/ocmock/OCMock/OCMock.h" 17 #import "third_party/ocmock/OCMock/OCMock.h"
14 #include "third_party/ocmock/gtest_support.h" 18 #include "third_party/ocmock/gtest_support.h"
15 19
16 #if !defined(__has_feature) || !__has_feature(objc_arc) 20 #if !defined(__has_feature) || !__has_feature(objc_arc)
17 #error "This file requires ARC support." 21 #error "This file requires ARC support."
18 #endif 22 #endif
19 23
20 namespace { 24 namespace {
21 25
22 class ToolsMediatorTest : public PlatformTest { 26 class ToolsMediatorTest : public PlatformTest {
27 public:
28 ToolsMediatorTest()
29 : consumer_(OCMProtocolMock(@protocol(ToolsConsumer))),
30 configuration_(
31 [[ToolsMenuConfiguration alloc] initWithDisplayView:nil]),
32 navigation_manager(base::MakeUnique<ToolbarTestNavigationManager>()) {
sdefresne 2017/07/02 19:01:54 This should not be a member variable if you move i
33 navigation_manager_ = navigation_manager.get();
34 test_web_state_.SetNavigationManager(std::move(navigation_manager));
35 }
36
23 protected: 37 protected:
24 ToolsMediator* mediator_; 38 ToolsMediator* mediator_;
39 id consumer_;
40 ToolsMenuConfiguration* configuration_;
41 ToolbarTestWebState test_web_state_;
42 ToolbarTestNavigationManager* navigation_manager_;
43
44 private:
45 std::unique_ptr<ToolbarTestNavigationManager> navigation_manager;
25 }; 46 };
26 47
27 TEST_F(ToolsMediatorTest, TestShowOverFlowControls) { 48 TEST_F(ToolsMediatorTest, TestShowOverFlowControls) {
28 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 49 configuration_.inTabSwitcher = YES;
29 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 50 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
30 OCMStub([configuration isInTabSwitcher]).andReturn(YES); 51 configuration:configuration_];
31 52
32 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 53 [[consumer_ verify] setToolsMenuItems:[OCMArg any]];
33 andConfiguration:configuration]; 54 [[consumer_ verify] setDisplayOverflowControls:NO];
34
35 [[consumer verify] setToolsMenuItems:[OCMArg any]];
36 [[consumer verify] setDisplayOverflowControls:NO];
37 } 55 }
38 56
39 TEST_F(ToolsMediatorTest, TestHideOverFlowControls) { 57 TEST_F(ToolsMediatorTest, TestHideOverFlowControls) {
40 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 58 configuration_.inTabSwitcher = NO;
41 id configuration = OCMClassMock([ToolsMenuConfiguration class]);
42 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
43 59
44 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 60 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
45 andConfiguration:configuration]; 61 configuration:configuration_];
46 62
47 [[consumer verify] setToolsMenuItems:[OCMArg any]]; 63 [[consumer_ verify] setToolsMenuItems:[OCMArg any]];
48 [[consumer verify] setDisplayOverflowControls:YES]; 64 [[consumer_ verify] setDisplayOverflowControls:YES];
49 } 65 }
50 66
51 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherNonIncognito) { 67 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherNonIncognito) {
52 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 68 configuration_.inTabSwitcher = NO;
53 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 69 configuration_.inIncognito = NO;
54 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
55 OCMStub([configuration isInIncognito]).andReturn(NO);
56 70
57 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 71 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
58 andConfiguration:configuration]; 72 configuration:configuration_];
59 73
60 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]); 74 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]);
61 } 75 }
62 76
63 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherIncognito) { 77 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherIncognito) {
64 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 78 configuration_.inTabSwitcher = NO;
65 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 79 configuration_.inIncognito = YES;
66 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
67 OCMStub([configuration isInIncognito]).andReturn(YES);
68 80
69 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 81 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
70 andConfiguration:configuration]; 82 configuration:configuration_];
71 83
72 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]); 84 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]);
73 } 85 }
74 86
75 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherNonIncognito) { 87 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherIncognito) {
76 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 88 configuration_.inTabSwitcher = YES;
77 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 89 configuration_.inIncognito = YES;
78 OCMStub([configuration isInTabSwitcher]).andReturn(YES);
79 OCMStub([configuration isInIncognito]).andReturn(YES);
80 90
81 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 91 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
82 andConfiguration:configuration]; 92 configuration:configuration_];
83 93
84 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2]; 94 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2];
85 EXPECT_NSEQ(@"Close All Incognito Tabs", closeAllTabsItem.title); 95 EXPECT_NSEQ(@"Close All Incognito Tabs", closeAllTabsItem.title);
86 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]); 96 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]);
87 } 97 }
88 98
89 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherIncognito) { 99 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherNonIncognito) {
90 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 100 configuration_.inTabSwitcher = YES;
91 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 101 configuration_.inIncognito = NO;
92 OCMStub([configuration isInTabSwitcher]).andReturn(YES);
93 OCMStub([configuration isInIncognito]).andReturn(NO);
94 102
95 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 103 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
96 andConfiguration:configuration]; 104 configuration:configuration_];
97 105
98 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2]; 106 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2];
99 EXPECT_NSEQ(@"Close All Tabs", closeAllTabsItem.title); 107 EXPECT_NSEQ(@"Close All Tabs", closeAllTabsItem.title);
100 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]); 108 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]);
101 } 109 }
102 110
111 TEST_F(ToolsMediatorTest, TestDontUpdateConsumerLoadingState) {
112 configuration_.inTabSwitcher = NO;
113 [[consumer_ reject] setIsLoading:YES];
114 [[consumer_ reject] setIsLoading:NO];
115
116 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
117 configuration:configuration_];
118 }
119
120 TEST_F(ToolsMediatorTest, TestDontUpdateConsumerLoadingStateInTabSwitcher) {
121 configuration_.inTabSwitcher = YES;
122 [[consumer_ reject] setIsLoading:YES];
123 [[consumer_ reject] setIsLoading:NO];
124
125 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
126 configuration:configuration_];
127 }
128
129 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingState) {
130 configuration_.inTabSwitcher = NO;
131 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
132 configuration:configuration_];
133 test_web_state_.SetLoading(false);
134 mediator_.webState = &test_web_state_;
135 [[consumer_ verify] setIsLoading:NO];
136 test_web_state_.SetLoading(true);
137 [[consumer_ verify] setIsLoading:YES];
138 }
139
140 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInverse) {
141 configuration_.inTabSwitcher = NO;
142 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
143 configuration:configuration_];
144 test_web_state_.SetLoading(true);
145 mediator_.webState = &test_web_state_;
146 [[consumer_ verify] setIsLoading:YES];
147 test_web_state_.SetLoading(false);
148 [[consumer_ verify] setIsLoading:NO];
149 }
150
151 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInTabSwitcher) {
152 configuration_.inTabSwitcher = YES;
153 [[consumer_ reject] setIsLoading:NO];
154 [[consumer_ reject] setIsLoading:YES];
155
156 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
157 configuration:configuration_];
158 test_web_state_.SetLoading(false);
159 mediator_.webState = &test_web_state_;
160 test_web_state_.SetLoading(true);
161 }
162
163 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInverseInTabSwitcher) {
164 configuration_.inTabSwitcher = YES;
165 [[consumer_ reject] setIsLoading:NO];
166 [[consumer_ reject] setIsLoading:YES];
167
168 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
169 configuration:configuration_];
170 test_web_state_.SetLoading(true);
171 mediator_.webState = &test_web_state_;
172 test_web_state_.SetLoading(false);
173 }
174
103 } // namespace 175 } // namespace
OLDNEW
« no previous file with comments | « ios/clean/chrome/browser/ui/tools/tools_mediator.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698