// Copyright (c) 2010 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. #include "chrome/browser/notifications/notification_exceptions_table_model.h" #include "app/l10n_util.h" #include "chrome/browser/chrome_thread.h" #include "chrome/browser/renderer_host/test/test_render_view_host.h" #include "chrome/test/testing_profile.h" #include "grit/generated_resources.h" #include "testing/gtest/include/gtest/gtest.h" class NotificationExceptionsTableModelTest : public RenderViewHostTestHarness { public: NotificationExceptionsTableModelTest() : ui_thread_(ChromeThread::UI, MessageLoop::current()) { } virtual ~NotificationExceptionsTableModelTest() { } virtual void SetUp() { RenderViewHostTestHarness::SetUp(); service_ = profile()->GetDesktopNotificationService(); ResetModel(); } virtual void TearDown() { model_.reset(NULL); RenderViewHostTestHarness::TearDown(); } virtual void ResetModel() { model_.reset(new NotificationExceptionsTableModel(service_)); } virtual void FillData() { service_->GrantPermission(GURL("http://e-allowed2.com")); service_->GrantPermission(GURL("http://allowed.com")); service_->DenyPermission(GURL("http://denied2.com")); service_->DenyPermission(GURL("http://denied.com")); service_->DenyPermission(GURL("http://f-denied3.com")); ResetModel(); } protected: ChromeThread ui_thread_; scoped_ptr model_; DesktopNotificationService* service_; }; TEST_F(NotificationExceptionsTableModelTest, CanCreate) { EXPECT_EQ(0, model_->RowCount()); } TEST_F(NotificationExceptionsTableModelTest, RemoveAll) { FillData(); EXPECT_EQ(2u, service_->GetAllowedOrigins().size()); EXPECT_EQ(3u, service_->GetBlockedOrigins().size()); EXPECT_EQ(5, model_->RowCount()); model_->RemoveAll(); EXPECT_EQ(0, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(0u, service_->GetBlockedOrigins().size()); } TEST_F(NotificationExceptionsTableModelTest, AlphabeticalOrder) { FillData(); EXPECT_EQ(5, model_->RowCount()); EXPECT_EQ(L"allowed.com", model_->GetText(0, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetString(IDS_EXCEPTIONS_ALLOW_BUTTON), model_->GetText(0, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(L"denied.com", model_->GetText(1, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetString(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(1, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(L"denied2.com", model_->GetText(2, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetString(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(2, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(L"e-allowed2.com", model_->GetText(3, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetString(IDS_EXCEPTIONS_ALLOW_BUTTON), model_->GetText(3, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(L"f-denied3.com", model_->GetText(4, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetString(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(4, IDS_EXCEPTIONS_ACTION_HEADER)); } TEST_F(NotificationExceptionsTableModelTest, RemoveRows) { FillData(); EXPECT_EQ(5, model_->RowCount()); { RemoveRowsTableModel::Rows rows; rows.insert(0); // allowed.com rows.insert(3); // e-allowed2.com model_->RemoveRows(rows); } EXPECT_EQ(3, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(3u, service_->GetBlockedOrigins().size()); { RemoveRowsTableModel::Rows rows; rows.insert(0); rows.insert(1); rows.insert(2); model_->RemoveRows(rows); } EXPECT_EQ(0, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(0u, service_->GetBlockedOrigins().size()); }