Home | History | Annotate | Download | only in attachments
      1 // Copyright 2014 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 "sync/internal_api/public/attachments/fake_attachment_uploader.h"
      6 
      7 #include "base/bind.h"
      8 #include "base/memory/ref_counted.h"
      9 #include "base/memory/ref_counted_memory.h"
     10 #include "base/message_loop/message_loop.h"
     11 #include "sync/api/attachments/attachment.h"
     12 #include "testing/gtest/include/gtest/gtest.h"
     13 
     14 namespace syncer {
     15 
     16 namespace {
     17 
     18 const char kAttachmentData[] = "some data";
     19 
     20 }  // namespace
     21 
     22 class FakeAttachmentUploaderTest : public testing::Test {
     23  protected:
     24   virtual void SetUp() {
     25     upload_callback_count = 0;
     26     upload_callback = base::Bind(&FakeAttachmentUploaderTest::Increment,
     27                                  base::Unretained(this),
     28                                  &upload_callback_count);
     29   }
     30   base::MessageLoop message_loop;
     31   FakeAttachmentUploader uploader;
     32   int upload_callback_count;
     33   AttachmentUploader::UploadCallback upload_callback;
     34 
     35  private:
     36   void Increment(int* success_count,
     37                  const AttachmentUploader::UploadResult& result,
     38                  const AttachmentId& ignored) {
     39     if (result == AttachmentUploader::UPLOAD_SUCCESS) {
     40       ++(*success_count);
     41     }
     42   }
     43 };
     44 
     45 // Call upload attachment several times, see that the supplied callback is
     46 // invoked the same number of times with a result of SUCCESS.
     47 TEST_F(FakeAttachmentUploaderTest, UploadAttachment) {
     48   scoped_refptr<base::RefCountedString> some_data(new base::RefCountedString);
     49   some_data->data() = kAttachmentData;
     50   Attachment attachment1 = Attachment::Create(some_data);
     51   Attachment attachment2 = Attachment::Create(some_data);
     52   Attachment attachment3 = Attachment::Create(some_data);
     53   uploader.UploadAttachment(attachment1, upload_callback);
     54   uploader.UploadAttachment(attachment2, upload_callback);
     55   uploader.UploadAttachment(attachment3, upload_callback);
     56   message_loop.RunUntilIdle();
     57   EXPECT_EQ(upload_callback_count, 3);
     58 }
     59 
     60 }  // namespace syncer
     61