| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/drive/model/upload_task.h" |
| |
| #import <MacTypes.h> |
| |
| #import "ios/chrome/browser/drive/model/test_upload_task_observer.h" |
| #import "testing/platform_test.h" |
| #import "url/gurl.h" |
| |
| // Testing implementation of `UploadTask`. |
| class TestUploadTask final : public UploadTask { |
| public: |
| TestUploadTask() = default; |
| ~TestUploadTask() final = default; |
| |
| void Update() { OnUploadUpdated(); } |
| |
| // UploadTask overrides. |
| State GetState() const final { return State::kNotStarted; } |
| void Start() final {} |
| void Cancel() final {} |
| id<SystemIdentity> GetIdentity() const final { return nil; } |
| float GetProgress() const final { return 0; } |
| std::optional<GURL> GetResponseLink(bool add_user_identifier) const final { |
| return std::nullopt; |
| } |
| NSError* GetError() const final { return nil; } |
| }; |
| |
| // UploadTask unit tests. |
| class UploadTaskTest : public PlatformTest {}; |
| |
| // Tests that `UploadTask` notifies all observing `UploadTaskObserver` instances |
| // when the task is updated and when it is destroyed. |
| TEST_F(UploadTaskTest, NotifiesObservers) { |
| TestUploadTaskObserver observer; |
| TestUploadTask* task_ptr = nullptr; |
| { |
| TestUploadTask task; |
| task_ptr = &task; |
| task.AddObserver(&observer); |
| EXPECT_EQ(nullptr, observer.GetUpdatedUpload()); |
| EXPECT_EQ(nullptr, observer.GetDestroyedUpload()); |
| task.Update(); |
| EXPECT_EQ(task_ptr, observer.GetUpdatedUpload()); |
| EXPECT_EQ(nullptr, observer.GetDestroyedUpload()); |
| observer.ResetUpdatedUpload(); |
| } |
| EXPECT_EQ(nullptr, observer.GetUpdatedUpload()); |
| EXPECT_EQ(task_ptr, observer.GetDestroyedUpload()); |
| } |