1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/strings/utf_string_conversions.h"
6#include "chrome/browser/profiles/profile.h"
7#include "chrome/browser/sync/about_sync_util.h"
8#include "chrome/browser/sync/profile_sync_service_mock.h"
9#include "content/public/test/test_browser_thread.h"
10#include "testing/gmock/include/gmock/gmock.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13using ::testing::NiceMock;
14using ::testing::Return;
15using ::testing::_;
16using content::BrowserThread;
17
18namespace sync_ui_util {
19namespace {
20
21TEST(SyncUIUtilTestAbout, ConstructAboutInformationWithUnrecoverableErrorTest) {
22  base::MessageLoopForUI message_loop;
23  content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop);
24  scoped_ptr<Profile> profile(
25      ProfileSyncServiceMock::MakeSignedInTestingProfile());
26  NiceMock<ProfileSyncServiceMock> service(profile.get());
27
28  // Will be released when the dictionary is destroyed
29  base::string16 str(ASCIIToUTF16("none"));
30
31  browser_sync::SyncBackendHost::Status status;
32
33  EXPECT_CALL(service, HasSyncSetupCompleted())
34              .WillOnce(Return(true));
35  EXPECT_CALL(service, QueryDetailedSyncStatus(_))
36              .WillOnce(Return(false));
37
38  EXPECT_CALL(service, HasUnrecoverableError())
39              .WillRepeatedly(Return(true));
40
41  EXPECT_CALL(service, GetLastSyncedTimeString())
42              .WillOnce(Return(str));
43
44  scoped_ptr<DictionaryValue> strings(ConstructAboutInformation(&service));
45
46  EXPECT_TRUE(strings->HasKey("unrecoverable_error_detected"));
47}
48
49} // namespace
50} // namespace sync_ui_util
51