1// Copyright 2013 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 "chrome/browser/chromeos/drive/file_system/touch_operation.h"
6
7#include "base/files/file_path.h"
8#include "base/time/time.h"
9#include "chrome/browser/chromeos/drive/drive.pb.h"
10#include "chrome/browser/chromeos/drive/file_errors.h"
11#include "chrome/browser/chromeos/drive/file_system/operation_test_base.h"
12#include "chrome/browser/chromeos/drive/resource_metadata.h"
13#include "content/public/test/test_utils.h"
14#include "google_apis/drive/test_util.h"
15#include "testing/gtest/include/gtest/gtest.h"
16
17namespace drive {
18namespace file_system {
19
20typedef OperationTestBase TouchOperationTest;
21
22TEST_F(TouchOperationTest, TouchFile) {
23  TouchOperation operation(blocking_task_runner(),
24                           delegate(),
25                           metadata());
26
27  const base::FilePath kTestPath(FILE_PATH_LITERAL("drive/root/File 1.txt"));
28  const base::Time::Exploded kLastAccessTime = {
29    2012, 7, 0, 19, 15, 59, 13, 123
30  };
31  const base::Time::Exploded kLastModifiedTime = {
32    2013, 7, 0, 19, 15, 59, 13, 123
33  };
34
35  FileError error = FILE_ERROR_FAILED;
36  operation.TouchFile(
37      kTestPath,
38      base::Time::FromUTCExploded(kLastAccessTime),
39      base::Time::FromUTCExploded(kLastModifiedTime),
40      google_apis::test_util::CreateCopyResultCallback(&error));
41  content::RunAllBlockingPoolTasksUntilIdle();
42  EXPECT_EQ(FILE_ERROR_OK, error);
43
44  ResourceEntry entry;
45  EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kTestPath, &entry));
46  EXPECT_EQ(base::Time::FromUTCExploded(kLastAccessTime),
47            base::Time::FromInternalValue(entry.file_info().last_accessed()));
48  EXPECT_EQ(base::Time::FromUTCExploded(kLastModifiedTime),
49            base::Time::FromInternalValue(entry.file_info().last_modified()));
50  EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state());
51
52  EXPECT_EQ(1U, delegate()->get_changed_files().size());
53  EXPECT_TRUE(delegate()->get_changed_files().count(kTestPath));
54
55  EXPECT_EQ(1U, delegate()->updated_local_ids().size());
56  EXPECT_TRUE(delegate()->updated_local_ids().count(entry.local_id()));
57}
58
59}  // namespace file_system
60}  // namespace drive
61