| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/nearby_sharing/file_attachment.h" |
| #include "chrome/browser/nearby_sharing/share_target.h" |
| |
| #include "base/files/file_path.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace { |
| base::FilePath kFilePath = base::FilePath("test.html"); |
| |
| struct FileShareType { |
| std::string file_name; |
| nearby_share::mojom::ShareType share_type; |
| } kFileTypes[] = { |
| {"test.jpg", nearby_share::mojom::ShareType::kImageFile}, |
| {"test.mp4", nearby_share::mojom::ShareType::kVideoFile}, |
| {"test.wav", nearby_share::mojom::ShareType::kAudioFile}, |
| {"test.pdf", nearby_share::mojom::ShareType::kPdfFile}, |
| {"test.other", nearby_share::mojom::ShareType::kUnknownFile} |
| }; |
| |
| struct GoogleAppsFileShareType { |
| std::string file_name; |
| std::string mime_type; |
| nearby_share::mojom::ShareType share_type; |
| } kGoogleAppsFileTypes[] = { |
| {"test.gdoc", "application/vnd.google-apps.document", nearby_share::mojom::ShareType::kGoogleDocsFile}, |
| {"test.gsheet", "application/vnd.google-apps.spreadsheet", nearby_share::mojom::ShareType::kGoogleSheetsFile}, |
| {"test.gslides", "application/vnd.google-apps.presentation", nearby_share::mojom::ShareType::kGoogleSlidesFile} |
| }; |
| |
| } // namespace |
| |
| class FileAttachmentShareTypeTest : public testing::TestWithParam<FileShareType> { }; |
| |
| class FileAttachmentGoogleAppsShareTypeTest : public testing::TestWithParam<GoogleAppsFileShareType> { }; |
| |
| TEST(FileAttachmentTest, CreateFileAttachment) { |
| FileAttachment attachment = FileAttachment(kFilePath); |
| |
| EXPECT_EQ(attachment.size(), 0u); |
| EXPECT_EQ(attachment.file_name(), "test.html"); |
| EXPECT_EQ(attachment.mime_type(), "text/html"); |
| EXPECT_EQ(attachment.type(), FileAttachment::Type::kUnknown); |
| EXPECT_EQ(attachment.file_path(), kFilePath); |
| EXPECT_EQ(attachment.GetDescription(), "test.html"); |
| } |
| |
| TEST(FileAttachmentTest, MoveShareTarget) { |
| FileAttachment attachment = FileAttachment(kFilePath); |
| ShareTarget target; |
| EXPECT_EQ(target.file_attachments.size(), 0u); |
| attachment.MoveToShareTarget(target); |
| EXPECT_EQ(target.file_attachments.size(), 1u); |
| } |
| |
| TEST_P(FileAttachmentShareTypeTest, GetShareType) { |
| FileShareType fileTypePair = GetParam(); |
| FileAttachment attachment = FileAttachment(base::FilePath(fileTypePair.file_name)); |
| EXPECT_EQ(attachment.GetShareType(), fileTypePair.share_type); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(FileAttachmentTest, FileAttachmentShareTypeTest, |
| testing::ValuesIn(kFileTypes)); |
| |
| TEST_P(FileAttachmentGoogleAppsShareTypeTest, GetShareType) { |
| GoogleAppsFileShareType fileType = GetParam(); |
| |
| FileAttachment attachment = FileAttachment(/*id=*/ 0u, |
| /*size=*/ 0u, |
| fileType.file_name, |
| fileType.mime_type, |
| FileAttachment::Type::kUnknown); |
| |
| EXPECT_EQ(attachment.GetShareType(), fileType.share_type); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(FileAttachmentTest, FileAttachmentGoogleAppsShareTypeTest, |
| testing::ValuesIn(kGoogleAppsFileTypes)); |