Jelajahi Sumber

Analytics swift API tests (#9876)

* Analytics API tests
tsunghung 3 tahun lalu
induk
melakukan
c3d7f6ed4f

+ 19 - 3
FirebaseAnalyticsSwift.podspec

@@ -18,9 +18,14 @@ Firebase Analytics is a free, out-of-the-box analytics solution that inspires ac
 
   s.static_framework        = true
   s.swift_version           = '5.3'
-  s.ios.deployment_target   = '13.0'
-  s.osx.deployment_target   = '10.15'
-  s.tvos.deployment_target  = '13.0'
+
+  ios_deployment_target = '13.0'
+  osx_deployment_target = '10.15'
+  tvos_deployment_target = '13.0'
+
+  s.ios.deployment_target   = ios_deployment_target
+  s.osx.deployment_target   = osx_deployment_target
+  s.tvos.deployment_target  = tvos_deployment_target
 
   s.cocoapods_version       = '>= 1.10.0'
   s.prefix_header_file      = false
@@ -30,4 +35,15 @@ Firebase Analytics is a free, out-of-the-box analytics solution that inspires ac
   ]
 
   s.dependency 'FirebaseAnalytics', '~> 9.0'
+
+  s.test_spec 'swift-unit' do |swift_unit_tests|
+    swift_unit_tests.platforms = {
+      :ios => ios_deployment_target,
+      :osx => osx_deployment_target,
+      :tvos => tvos_deployment_target
+    }
+    swift_unit_tests.source_files = [
+      'FirebaseAnalyticsSwift/Tests/SwiftUnit/**/*.swift',
+    ]
+  end
 end

+ 177 - 0
FirebaseAnalyticsSwift/Tests/SwiftUnit/AnalyticsAPITests.swift

@@ -0,0 +1,177 @@
+//
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// MARK: This file is used to evaluate the experience of using Analytics APIs in Swift.
+
+import FirebaseAnalytics
+import Foundation
+
+final class AnalyticsAPITests {
+  func usage() {
+    // MARK: - Analytics
+
+    Analytics.logEvent("event_name", parameters: ["param": 1])
+    Analytics.setUserProperty("value", forName: "name")
+    Analytics.setUserID("user_id")
+    Analytics.setAnalyticsCollectionEnabled(true)
+    Analytics.setSessionTimeoutInterval(3600.0)
+    let _: String? = Analytics.appInstanceID()
+    Analytics.resetAnalyticsData()
+    Analytics.setDefaultEventParameters(["default": 100])
+
+    // MARK: - AppDelegate
+
+    Analytics.handleEvents(forBackgroundURLSession: "session_id", completionHandler: {})
+    #if compiler(>=5.5.2) && canImport(_Concurrency)
+      if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
+        Task {
+          await Analytics.handleEvents(forBackgroundURLSession: "session_id")
+        }
+      }
+    #endif // compiler(>=5.5.2) && canImport(_Concurrency)
+    Analytics.handleOpen(URL(string: "https://google.com")!)
+    Analytics.handleUserActivity(NSUserActivity(activityType: "editing"))
+
+    // MARK: - Consent
+
+    Analytics.setConsent([.analyticsStorage: .granted, .adStorage: .denied])
+
+    // MARK: - OnDeviceConversion
+
+    Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "test@gmail.com")
+
+    // MARK: - EventNames
+
+    let _: [String] = [
+      AnalyticsEventAdImpression,
+      AnalyticsEventAddPaymentInfo,
+      AnalyticsEventAddShippingInfo,
+      AnalyticsEventAddToCart,
+      AnalyticsEventAddToWishlist,
+      AnalyticsEventAppOpen,
+      AnalyticsEventBeginCheckout,
+      AnalyticsEventCampaignDetails,
+      AnalyticsEventEarnVirtualCurrency,
+      AnalyticsEventGenerateLead,
+      AnalyticsEventJoinGroup,
+      AnalyticsEventLevelEnd,
+      AnalyticsEventLevelStart,
+      AnalyticsEventLevelUp,
+      AnalyticsEventLogin,
+      AnalyticsEventPostScore,
+      AnalyticsEventPurchase,
+      AnalyticsEventRefund,
+      AnalyticsEventRemoveFromCart,
+      AnalyticsEventScreenView,
+      AnalyticsEventSearch,
+      AnalyticsEventSelectContent,
+      AnalyticsEventSelectItem,
+      AnalyticsEventSelectPromotion,
+      AnalyticsEventShare,
+      AnalyticsEventSignUp,
+      AnalyticsEventSpendVirtualCurrency,
+      AnalyticsEventTutorialBegin,
+      AnalyticsEventTutorialComplete,
+      AnalyticsEventUnlockAchievement,
+      AnalyticsEventViewCart,
+      AnalyticsEventViewItem,
+      AnalyticsEventViewItemList,
+      AnalyticsEventViewPromotion,
+      AnalyticsEventViewSearchResults,
+    ]
+
+    // MARK: - ParameterNames
+
+    let _: [String] = [
+      AnalyticsParameterAchievementID,
+      AnalyticsParameterAdFormat,
+      AnalyticsParameterAdNetworkClickID,
+      AnalyticsParameterAdPlatform,
+      AnalyticsParameterAdSource,
+      AnalyticsParameterAdUnitName,
+      AnalyticsParameterAffiliation,
+      AnalyticsParameterCP1,
+      AnalyticsParameterCampaign,
+      AnalyticsParameterCampaignID,
+      AnalyticsParameterCharacter,
+      AnalyticsParameterContent,
+      AnalyticsParameterContentType,
+      AnalyticsParameterCoupon,
+      AnalyticsParameterCreativeFormat,
+      AnalyticsParameterCreativeName,
+      AnalyticsParameterCreativeSlot,
+      AnalyticsParameterCurrency,
+      AnalyticsParameterDestination,
+      AnalyticsParameterDiscount,
+      AnalyticsParameterEndDate,
+      AnalyticsParameterExtendSession,
+      AnalyticsParameterFlightNumber,
+      AnalyticsParameterGroupID,
+      AnalyticsParameterIndex,
+      AnalyticsParameterItemBrand,
+      AnalyticsParameterItemCategory,
+      AnalyticsParameterItemCategory2,
+      AnalyticsParameterItemCategory3,
+      AnalyticsParameterItemCategory4,
+      AnalyticsParameterItemCategory5,
+      AnalyticsParameterItemID,
+      AnalyticsParameterItemListID,
+      AnalyticsParameterItemListName,
+      AnalyticsParameterItemName,
+      AnalyticsParameterItemVariant,
+      AnalyticsParameterItems,
+      AnalyticsParameterLevel,
+      AnalyticsParameterLevelName,
+      AnalyticsParameterLocation,
+      AnalyticsParameterLocationID,
+      AnalyticsParameterMarketingTactic,
+      AnalyticsParameterMedium,
+      AnalyticsParameterMethod,
+      AnalyticsParameterNumberOfNights,
+      AnalyticsParameterNumberOfPassengers,
+      AnalyticsParameterNumberOfRooms,
+      AnalyticsParameterOrigin,
+      AnalyticsParameterPaymentType,
+      AnalyticsParameterPrice,
+      AnalyticsParameterPromotionID,
+      AnalyticsParameterPromotionName,
+      AnalyticsParameterQuantity,
+      AnalyticsParameterScore,
+      AnalyticsParameterScreenClass,
+      AnalyticsParameterScreenName,
+      AnalyticsParameterSearchTerm,
+      AnalyticsParameterShipping,
+      AnalyticsParameterShippingTier,
+      AnalyticsParameterSource,
+      AnalyticsParameterSourcePlatform,
+      AnalyticsParameterStartDate,
+      AnalyticsParameterSuccess,
+      AnalyticsParameterTax,
+      AnalyticsParameterTerm,
+      AnalyticsParameterTransactionID,
+      AnalyticsParameterTravelClass,
+      AnalyticsParameterValue,
+      AnalyticsParameterVirtualCurrencyName,
+    ]
+
+    // MARK: - UserPropertyNames
+
+    let _: [String] = [
+      AnalyticsUserPropertyAllowAdPersonalizationSignals,
+      AnalyticsUserPropertySignUpMethod,
+    ]
+  }
+}