This source file includes following definitions.
- MakePrefInfoForTesting
- SetUp
- TearDown
- dummy_extension
- TEST_F
- TEST_F
- TEST_F
- TEST_F
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media_galleries/media_galleries_dialog_controller_mock.h"
#include "chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk.h"
#include "components/storage_monitor/storage_info.h"
#include "extensions/common/extension.h"
#include "extensions/common/test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::_;
using ::testing::NiceMock;
using ::testing::Return;
using ::testing::ReturnPointee;
using ::testing::ReturnRef;
namespace {
MediaGalleryPrefInfo MakePrefInfoForTesting(MediaGalleryPrefId id) {
MediaGalleryPrefInfo gallery;
gallery.pref_id = id;
gallery.device_id = storage_monitor::StorageInfo::MakeDeviceId(
storage_monitor::StorageInfo::FIXED_MASS_STORAGE,
base::Int64ToString(id));
gallery.display_name = base::ASCIIToUTF16("Display Name");
return gallery;
}
}
class MediaGalleriesDialogTest : public testing::Test {
public:
MediaGalleriesDialogTest() {}
virtual ~MediaGalleriesDialogTest() {}
virtual void SetUp() OVERRIDE {
dummy_extension_ = extensions::test_util::CreateExtensionWithID("dummy");
}
virtual void TearDown() OVERRIDE {
dummy_extension_ = NULL;
}
const extensions::Extension& dummy_extension() const {
return *dummy_extension_;
}
private:
scoped_refptr<extensions::Extension> dummy_extension_;
DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogTest);
};
TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension());
MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(
MakePrefInfoForTesting(1), true));
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(
MakePrefInfoForTesting(2), false));
EXPECT_CALL(controller, AttachedPermissions()).
WillRepeatedly(Return(attached_permissions));
MediaGalleriesDialogController::GalleryPermissionsVector
unattached_permissions;
EXPECT_CALL(controller, UnattachedPermissions()).
WillRepeatedly(Return(unattached_permissions));
MediaGalleriesDialogGtk dialog(&controller);
EXPECT_EQ(2U, dialog.checkbox_map_.size());
GtkWidget* checkbox1 = dialog.checkbox_map_[1];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox1));
EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox1)));
GtkWidget* checkbox2 = dialog.checkbox_map_[2];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox2));
EXPECT_FALSE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox2)));
}
TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension());
MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(
MakePrefInfoForTesting(1), true));
EXPECT_CALL(controller, AttachedPermissions()).
WillRepeatedly(Return(attached_permissions));
MediaGalleriesDialogController::GalleryPermissionsVector
unattached_permissions;
EXPECT_CALL(controller, UnattachedPermissions()).
WillRepeatedly(Return(unattached_permissions));
MediaGalleriesDialogGtk dialog(&controller);
EXPECT_EQ(1U, dialog.checkbox_map_.size());
GtkWidget* checkbox =
dialog.checkbox_map_[1];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox));
EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox)));
EXPECT_CALL(controller, DidToggleGalleryId(1, false));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), FALSE);
EXPECT_CALL(controller, DidToggleGalleryId(1, true));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), TRUE);
}
TEST_F(MediaGalleriesDialogTest, UpdateAdds) {
NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension());
MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
EXPECT_CALL(controller, AttachedPermissions()).
WillRepeatedly(ReturnPointee(&attached_permissions));
MediaGalleriesDialogController::GalleryPermissionsVector
unattached_permissions;
EXPECT_CALL(controller, UnattachedPermissions()).
WillRepeatedly(Return(unattached_permissions));
MediaGalleriesDialogGtk dialog(&controller);
EXPECT_TRUE(dialog.checkbox_map_.empty());
MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1);
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(gallery1, true));
dialog.UpdateGalleries();
EXPECT_EQ(1U, dialog.checkbox_map_.size());
MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2);
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(gallery2, true));
dialog.UpdateGalleries();
EXPECT_EQ(2U, dialog.checkbox_map_.size());
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(gallery2, false));
dialog.UpdateGalleries();
EXPECT_EQ(2U, dialog.checkbox_map_.size());
}
TEST_F(MediaGalleriesDialogTest, ForgetDeletes) {
NiceMock<MediaGalleriesDialogControllerMock> controller(dummy_extension());
MediaGalleriesDialogController::GalleryPermissionsVector attached_permissions;
EXPECT_CALL(controller, AttachedPermissions()).
WillRepeatedly(ReturnPointee(&attached_permissions));
MediaGalleriesDialogController::GalleryPermissionsVector
unattached_permissions;
EXPECT_CALL(controller, UnattachedPermissions()).
WillRepeatedly(Return(unattached_permissions));
MediaGalleriesDialogGtk dialog(&controller);
EXPECT_TRUE(dialog.checkbox_map_.empty());
MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1);
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(gallery1, true));
dialog.UpdateGalleries();
EXPECT_EQ(1U, dialog.checkbox_map_.size());
MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2);
attached_permissions.push_back(
MediaGalleriesDialogController::GalleryPermission(gallery2, true));
dialog.UpdateGalleries();
EXPECT_EQ(2U, dialog.checkbox_map_.size());
attached_permissions.pop_back();
dialog.UpdateGalleries();
EXPECT_EQ(1U, dialog.checkbox_map_.size());
}