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

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: CL Feedback 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
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 : navigation_manager(base::MakeUnique<ToolbarTestNavigationManager>()) {
30 navigation_manager_ = navigation_manager.get();
31 test_web_state_.SetNavigationManager(std::move(navigation_manager));
32 configuration_ = [[ToolsMenuConfiguration alloc] initWithDisplayView:nil];
33 consumer_ = OCMProtocolMock(@protocol(ToolsConsumer));
34 }
35
23 protected: 36 protected:
24 ToolsMediator* mediator_; 37 ToolsMediator* mediator_;
38 id consumer_;
39 ToolsMenuConfiguration* configuration_;
40 ToolbarTestWebState test_web_state_;
41 ToolbarTestNavigationManager* navigation_manager_;
42
43 private:
44 std::unique_ptr<ToolbarTestNavigationManager> navigation_manager;
25 }; 45 };
26 46
27 TEST_F(ToolsMediatorTest, TestShowOverFlowControls) { 47 TEST_F(ToolsMediatorTest, TestShowOverFlowControls) {
28 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 48 configuration_.inTabSwitcher = YES;
29 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 49 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
30 OCMStub([configuration isInTabSwitcher]).andReturn(YES); 50 configuration:configuration_];
31 51
32 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 52 [[consumer_ verify] setToolsMenuItems:[OCMArg any]];
33 andConfiguration:configuration]; 53 [[consumer_ verify] setDisplayOverflowControls:NO];
34
35 [[consumer verify] setToolsMenuItems:[OCMArg any]];
36 [[consumer verify] setDisplayOverflowControls:NO];
37 } 54 }
38 55
39 TEST_F(ToolsMediatorTest, TestHideOverFlowControls) { 56 TEST_F(ToolsMediatorTest, TestHideOverFlowControls) {
40 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 57 configuration_.inTabSwitcher = NO;
41 id configuration = OCMClassMock([ToolsMenuConfiguration class]);
42 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
43 58
44 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 59 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
45 andConfiguration:configuration]; 60 configuration:configuration_];
46 61
47 [[consumer verify] setToolsMenuItems:[OCMArg any]]; 62 [[consumer_ verify] setToolsMenuItems:[OCMArg any]];
48 [[consumer verify] setDisplayOverflowControls:YES]; 63 [[consumer_ verify] setDisplayOverflowControls:YES];
49 } 64 }
50 65
51 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherNonIncognito) { 66 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherNonIncognito) {
52 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 67 configuration_.inTabSwitcher = NO;
53 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 68 configuration_.inIncognito = NO;
54 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
55 OCMStub([configuration isInIncognito]).andReturn(NO);
56 69
57 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 70 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
58 andConfiguration:configuration]; 71 configuration:configuration_];
59 72
60 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]); 73 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]);
61 } 74 }
62 75
63 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherIncognito) { 76 TEST_F(ToolsMediatorTest, TestMenuItemsForNonTabSwitcherIncognito) {
64 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 77 configuration_.inTabSwitcher = NO;
65 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 78 configuration_.inIncognito = YES;
66 OCMStub([configuration isInTabSwitcher]).andReturn(NO);
67 OCMStub([configuration isInIncognito]).andReturn(YES);
68 79
69 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 80 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
70 andConfiguration:configuration]; 81 configuration:configuration_];
71 82
72 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]); 83 EXPECT_EQ(7ul, [mediator_.menuItemsArray count]);
73 } 84 }
74 85
75 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherNonIncognito) { 86 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherIncognito) {
76 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 87 configuration_.inTabSwitcher = YES;
77 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 88 configuration_.inIncognito = YES;
78 OCMStub([configuration isInTabSwitcher]).andReturn(YES);
79 OCMStub([configuration isInIncognito]).andReturn(YES);
80 89
81 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 90 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
82 andConfiguration:configuration]; 91 configuration:configuration_];
83 92
84 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2]; 93 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2];
85 EXPECT_NSEQ(@"Close All Incognito Tabs", closeAllTabsItem.title); 94 EXPECT_NSEQ(@"Close All Incognito Tabs", closeAllTabsItem.title);
86 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]); 95 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]);
87 } 96 }
88 97
89 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherIncognito) { 98 TEST_F(ToolsMediatorTest, TestMenuItemsForTabSwitcherNonIncognito) {
90 id consumer = OCMProtocolMock(@protocol(ToolsConsumer)); 99 configuration_.inTabSwitcher = YES;
91 id configuration = OCMClassMock([ToolsMenuConfiguration class]); 100 configuration_.inIncognito = NO;
92 OCMStub([configuration isInTabSwitcher]).andReturn(YES);
93 OCMStub([configuration isInIncognito]).andReturn(NO);
94 101
95 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer 102 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
96 andConfiguration:configuration]; 103 configuration:configuration_];
97 104
98 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2]; 105 ToolsMenuItem* closeAllTabsItem = mediator_.menuItemsArray[2];
99 EXPECT_NSEQ(@"Close All Tabs", closeAllTabsItem.title); 106 EXPECT_NSEQ(@"Close All Tabs", closeAllTabsItem.title);
100 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]); 107 EXPECT_EQ(5ul, [mediator_.menuItemsArray count]);
101 } 108 }
102 109
110 TEST_F(ToolsMediatorTest, TestDontUpdateConsumerLoadingState) {
111 configuration_.inTabSwitcher = NO;
112 [[consumer_ reject] setIsLoading:YES];
113 [[consumer_ reject] setIsLoading:NO];
114
115 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
116 configuration:configuration_];
117 }
118
119 TEST_F(ToolsMediatorTest, TestDontUpdateConsumerLoadingStateInTabSwitcher) {
120 configuration_.inTabSwitcher = YES;
121 [[consumer_ reject] setIsLoading:YES];
122 [[consumer_ reject] setIsLoading:NO];
123
124 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
125 configuration:configuration_];
126 }
127
128 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingState) {
129 configuration_.inTabSwitcher = NO;
130 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
131 configuration:configuration_];
132 test_web_state_.SetLoading(false);
133 mediator_.webState = &test_web_state_;
134 [[consumer_ verify] setIsLoading:NO];
135 test_web_state_.SetLoading(true);
136 [[consumer_ verify] setIsLoading:YES];
137 }
138
139 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInverse) {
140 configuration_.inTabSwitcher = NO;
141 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
142 configuration:configuration_];
143 test_web_state_.SetLoading(true);
144 mediator_.webState = &test_web_state_;
145 [[consumer_ verify] setIsLoading:YES];
146 test_web_state_.SetLoading(false);
147 [[consumer_ verify] setIsLoading:NO];
148 }
149
150 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInTabSwitcher) {
151 configuration_.inTabSwitcher = YES;
152 [[consumer_ reject] setIsLoading:NO];
153 [[consumer_ reject] setIsLoading:YES];
154
155 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
156 configuration:configuration_];
157 test_web_state_.SetLoading(false);
158 mediator_.webState = &test_web_state_;
159 test_web_state_.SetLoading(true);
160 }
161
162 TEST_F(ToolsMediatorTest, TestUpdateConsumerLoadingStateInverseInTabSwitcher) {
163 configuration_.inTabSwitcher = YES;
164 [[consumer_ reject] setIsLoading:NO];
165 [[consumer_ reject] setIsLoading:YES];
166
167 mediator_ = [[ToolsMediator alloc] initWithConsumer:consumer_
168 configuration:configuration_];
169 test_web_state_.SetLoading(true);
170 mediator_.webState = &test_web_state_;
171 test_web_state_.SetLoading(false);
172 }
173
103 } // namespace 174 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698