| // Copyright 2020 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/sharing/ui_bundled/activity_services/activities/generate_qr_code_activity.h" |
| |
| #import "ios/chrome/browser/shared/public/commands/qr_generation_commands.h" |
| #import "ios/chrome/browser/sharing/ui_bundled/activity_services/data/share_to_data.h" |
| #import "testing/platform_test.h" |
| #import "third_party/ocmock/OCMock/OCMock.h" |
| #import "third_party/ocmock/gtest_support.h" |
| #import "url/gurl.h" |
| |
| // Test fixture for covering the GenerateQrCodeActivity class. |
| class GenerateQrCodeActivityTest : public PlatformTest { |
| protected: |
| GenerateQrCodeActivityTest() {} |
| |
| void SetUp() override { |
| PlatformTest::SetUp(); |
| |
| mocked_handler_ = OCMStrictProtocolMock(@protocol(QRGenerationCommands)); |
| } |
| |
| // Creates a GenerateQrCodeActivity instance. |
| GenerateQrCodeActivity* CreateActivity() { |
| return |
| [[GenerateQrCodeActivity alloc] initWithURL:GURL("https://example.com") |
| title:@"Some title" |
| handler:mocked_handler_]; |
| } |
| |
| id mocked_handler_; |
| }; |
| |
| // Tests that the activity can be performed when the handler is not nil. |
| TEST_F(GenerateQrCodeActivityTest, ValidHandler_ActivityEnabled) { |
| GenerateQrCodeActivity* activity = CreateActivity(); |
| |
| EXPECT_TRUE([activity canPerformWithActivityItems:@[]]); |
| } |
| |
| // Tests that the activity cannot be performed when its handler is nil. |
| TEST_F(GenerateQrCodeActivityTest, NilHandler_ActivityDisabled) { |
| GenerateQrCodeActivity* activity = |
| [[GenerateQrCodeActivity alloc] initWithURL:GURL("https://example.com") |
| title:@"Some title" |
| handler:nil]; |
| |
| EXPECT_FALSE([activity canPerformWithActivityItems:@[]]); |
| } |
| |
| // Tests that the right handler method is invoked upon execution. |
| TEST_F(GenerateQrCodeActivityTest, Execution) { |
| __block GURL fakeURL("https://example.com"); |
| __block NSString* fakeTitle = @"fake title"; |
| |
| [[mocked_handler_ expect] |
| showQRCode:[OCMArg checkWithBlock:^BOOL(GenerateQRCodeCommand* value) { |
| EXPECT_EQ(fakeURL, value.URL); |
| EXPECT_EQ(fakeTitle, value.title); |
| return YES; |
| }]]; |
| |
| GenerateQrCodeActivity* activity = |
| [[GenerateQrCodeActivity alloc] initWithURL:fakeURL |
| title:fakeTitle |
| handler:mocked_handler_]; |
| |
| id activity_partial_mock = OCMPartialMock(activity); |
| [[activity_partial_mock expect] activityDidFinish:YES]; |
| |
| [activity performActivity]; |
| |
| [mocked_handler_ verify]; |
| [activity_partial_mock verify]; |
| } |