Commit e83dfc3e authored by edchin's avatar edchin Committed by Commit bot

[ios] Unittest for TabGridMediator.

BUG=none

Review-Url: https://codereview.chromium.org/2792823002
Cr-Commit-Position: refs/heads/master@{#462882}
parent 55b4817a
...@@ -65,3 +65,26 @@ source_set("tab_grid_ui") { ...@@ -65,3 +65,26 @@ source_set("tab_grid_ui") {
"//ui/base", "//ui/base",
] ]
} }
source_set("unit_tests") {
testonly = true
sources = [
"tab_grid_mediator_unittest.mm",
]
configs += [ "//build/config/compiler:enable_arc" ]
deps = [
":tab_grid",
":tab_grid_ui",
"//base",
"//base/test:test_support",
"//ios/chrome/test/base",
"//ios/shared/chrome/browser/tabs",
"//ios/shared/chrome/browser/tabs:test_support",
"//ios/web:test_support",
"//testing/gtest",
"//third_party/ocmock",
]
}
...@@ -4,9 +4,7 @@ ...@@ -4,9 +4,7 @@
#import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h" #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h"
#include "base/memory/ptr_util.h" #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_consumer.h"
#include "base/strings/sys_string_conversions.h"
#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_consumer.h"
#import "ios/shared/chrome/browser/tabs/web_state_list.h" #import "ios/shared/chrome/browser/tabs/web_state_list.h"
#import "ios/shared/chrome/browser/tabs/web_state_list_observer_bridge.h" #import "ios/shared/chrome/browser/tabs/web_state_list_observer_bridge.h"
#include "ios/web/public/web_state/web_state.h" #include "ios/web/public/web_state/web_state.h"
......
// Copyright 2017 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/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h"
#include "base/memory/ptr_util.h"
#import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_consumer.h"
#include "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h"
#include "ios/shared/chrome/browser/tabs/web_state_list.h"
#import "ios/shared/chrome/browser/tabs/web_state_list_observer_bridge.h"
#import "ios/web/public/test/fakes/test_navigation_manager.h"
#import "ios/web/public/test/fakes/test_web_state.h"
#include "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#include "third_party/ocmock/gtest_support.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace {
class TabGridMediatorTest : public PlatformTest {
public:
TabGridMediatorTest() {
SetUpEmptyWebStateList();
mediator_ = [[TabGridMediator alloc] init];
mediator_.webStateList = web_state_list_.get();
}
~TabGridMediatorTest() override { [mediator_ disconnect]; }
protected:
void SetUpEmptyWebStateList() {
web_state_list_ = base::MakeUnique<WebStateList>(&web_state_list_delegate_);
}
void InsertWebStateAt(int index) {
auto web_state = base::MakeUnique<web::TestWebState>();
web_state_list_->InsertWebState(index, std::move(web_state));
}
void SetConsumer() {
consumer_ = [OCMockObject mockForProtocol:@protocol(TabGridConsumer)];
mediator_.consumer = consumer_;
}
TabGridMediator* mediator_;
std::unique_ptr<WebStateList> web_state_list_;
FakeWebStateListDelegate web_state_list_delegate_;
id consumer_;
};
// Tests that the noTabsOverlay is removed when a web state is inserted when
// the list is empty.
TEST_F(TabGridMediatorTest, TestRemoveNoTabsOverlay) {
SetConsumer();
[[consumer_ expect] insertItemAtIndex:0];
[[consumer_ expect] removeNoTabsOverlay];
InsertWebStateAt(0);
EXPECT_OCMOCK_VERIFY(consumer_);
}
// Tests that the noTabsOverlay is added when the web state list becomes empty.
TEST_F(TabGridMediatorTest, TestAddNoTabsOverlay) {
InsertWebStateAt(0);
SetConsumer();
[[consumer_ expect] deleteItemAtIndex:0];
[[consumer_ expect] addNoTabsOverlay];
web_state_list_->CloseWebStateAt(0);
EXPECT_OCMOCK_VERIFY(consumer_);
}
} // namespace
...@@ -22,6 +22,7 @@ test("ios_clean_chrome_unittests") { ...@@ -22,6 +22,7 @@ test("ios_clean_chrome_unittests") {
"//ios/clean/chrome/browser/ui/context_menu:unit_tests", "//ios/clean/chrome/browser/ui/context_menu:unit_tests",
"//ios/clean/chrome/browser/ui/omnibox:unit_tests", "//ios/clean/chrome/browser/ui/omnibox:unit_tests",
"//ios/clean/chrome/browser/ui/tab_collection:unit_tests", "//ios/clean/chrome/browser/ui/tab_collection:unit_tests",
"//ios/clean/chrome/browser/ui/tab_grid:unit_tests",
"//ios/clean/chrome/browser/ui/web_contents:unit_tests", "//ios/clean/chrome/browser/ui/web_contents:unit_tests",
] ]
} }
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