| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- // Copyright 2023 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.
- import XCTest
- import FirebaseInAppMessaging
- import FirebaseInAppMessagingSwift
- import SwiftUI
- final class FirebaseInAppMessagingSwift_APIBuildTests: XCTestCase {
- func usage() throws {
- // MARK: - FirebaseInAppMessaging
- let inAppMessaging = FirebaseInAppMessaging.InAppMessaging.inAppMessaging()
- let _: Bool = inAppMessaging.messageDisplaySuppressed
- inAppMessaging.messageDisplaySuppressed = true
- // TODO(ncooke3): This should probably be removed in favor of the one in
- // FirebaseCore?
- let _: Bool = inAppMessaging.automaticDataCollectionEnabled
- inAppMessaging.automaticDataCollectionEnabled = true
- let _: FirebaseInAppMessaging.InAppMessagingDisplay = inAppMessaging.messageDisplayComponent
- // FIXME(ncooke3): Below.
- let displayConformer: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
- inAppMessaging.messageDisplayComponent = displayConformer
- inAppMessaging.triggerEvent("eventName")
- let delegate: FirebaseInAppMessaging.InAppMessagingDisplayDelegate? = inAppMessaging.delegate
- inAppMessaging.delegate = nil
- // TODO(ncooke3): Does it make sense for these params to be nullable?
- let nullableText: String? = nil
- let nullableURL: URL? = nil
- let action = FirebaseInAppMessaging.InAppMessagingAction(
- actionText: nullableText,
- actionURL: nullableURL
- )
- let _: String? = action.actionText
- let _: URL? = action.actionURL
- let nonnullText = ""
- let nonnullColor: UIColor = .black
- let button = FirebaseInAppMessaging.InAppMessagingActionButton(
- buttonText: nonnullText,
- buttonTextColor: nonnullColor,
- backgroundColor: nonnullColor
- )
- let _: String = button.buttonText
- let _: UIColor = button.buttonTextColor
- let _: UIColor = button.buttonBackgroundColor
- // TODO(ncooke3): This type should not have a `FIR` prefix.
- _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType.RawValue()
- let messsageType: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType! = nil
- switch messsageType! {
- case .modal: break
- case .banner: break
- case .imageOnly: break
- case .card: break
- @unknown default: break
- }
- // TODO(ncooke3): This type should not have a `FIR` prefix.
- _ = FirebaseInAppMessaging.FIAMDisplayRenderErrorType.RawValue()
- let errorType: FirebaseInAppMessaging.FIAMDisplayRenderErrorType! = nil
- switch errorType! {
- case .imageDataInvalid: break
- case .unspecifiedError: break
- @unknown default: break
- }
- // TODO(ncooke3): This type should not have a `FIR` prefix.
- _ = FirebaseInAppMessaging.FIRInAppMessagingDismissType.RawValue()
- let dismissType: FirebaseInAppMessaging.FIRInAppMessagingDismissType! = nil
- switch dismissType! {
- case .typeUserSwipe: break
- case .typeUserTapClose: break
- case .typeAuto: break
- case .unspecified: break
- @unknown default: break
- }
- // TODO(ncooke3): This type should not have a `FIR` prefix.
- _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType.RawValue()
- let triggerType: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType! = nil
- switch triggerType! {
- case .onAppForeground: break
- case .onAnalyticsEvent: break
- @unknown default: break
- }
- let nullableImageData: FirebaseInAppMessaging.InAppMessagingImageData? = nil
- let nullableDict: [AnyHashable: Any]? = nil
- let bannerDisplay = FirebaseInAppMessaging.InAppMessagingBannerDisplay(
- campaignName: nonnullText,
- titleText: nonnullText,
- bodyText: nullableText,
- textColor: nonnullColor,
- backgroundColor: nonnullColor,
- imageData: nullableImageData,
- actionURL: nullableURL,
- appData: nullableDict
- )
- _ = bannerDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
- let _: String = bannerDisplay.title
- let _: FirebaseInAppMessaging.InAppMessagingImageData? = bannerDisplay.imageData
- let _: String? = bannerDisplay.bodyText
- let _: UIColor = bannerDisplay.displayBackgroundColor
- let _: UIColor = bannerDisplay.textColor
- let _: URL? = bannerDisplay.actionURL
- let campaignInfo: FirebaseInAppMessaging.InAppMessagingCampaignInfo! = nil
- let _: String = campaignInfo.messageID
- let _: String = campaignInfo.campaignName
- let _: Bool = campaignInfo.renderAsTestMessage
- let nonnullImageData = FirebaseInAppMessaging.InAppMessagingImageData(
- imageURL: nonnullText,
- imageData: Data()
- )
- let _: Data? = nonnullImageData.imageRawData
- let _: String = nonnullImageData.imageURL
- let nullableActionButton: FirebaseInAppMessaging.InAppMessagingActionButton? = nil
- let cardDisplay = FirebaseInAppMessaging.InAppMessagingCardDisplay(
- campaignName: nonnullText,
- titleText: nonnullText,
- bodyText: nullableText,
- textColor: nonnullColor,
- portraitImageData: nonnullImageData,
- landscapeImageData: nullableImageData,
- backgroundColor: nonnullColor,
- primaryActionButton: button,
- secondaryActionButton: nullableActionButton,
- primaryActionURL: nullableURL,
- secondaryActionURL: nullableURL,
- appData: nullableDict
- )
- _ = cardDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
- let _: String = cardDisplay.title
- let _: String? = cardDisplay.body
- let _: UIColor = cardDisplay.textColor
- let _: FirebaseInAppMessaging.InAppMessagingImageData = cardDisplay.portraitImageData
- let _: FirebaseInAppMessaging.InAppMessagingImageData? = cardDisplay.landscapeImageData
- let _: UIColor = cardDisplay.displayBackgroundColor
- let _: FirebaseInAppMessaging.InAppMessagingActionButton = cardDisplay.primaryActionButton
- let _: URL? = cardDisplay.primaryActionURL
- let _: FirebaseInAppMessaging.InAppMessagingActionButton? = cardDisplay.secondaryActionButton
- let _: URL? = cardDisplay.secondaryActionURL
- let displayMessage = FirebaseInAppMessaging.InAppMessagingDisplayMessage(
- messageID: nonnullText,
- campaignName: nonnullText,
- renderAsTestMessage: true,
- messageType: messsageType,
- triggerType: triggerType
- )
- let _: FirebaseInAppMessaging.InAppMessagingCampaignInfo = displayMessage.campaignInfo
- let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType = displayMessage.type
- let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType = displayMessage.triggerType
- let _: [AnyHashable: Any]? = displayMessage.appData
- let imageOnlyDisplay = FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay(
- campaignName: nonnullText,
- imageData: nonnullImageData,
- actionURL: nullableURL,
- appData: nullableDict
- )
- _ = imageOnlyDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
- let _: FirebaseInAppMessaging.InAppMessagingImageData = imageOnlyDisplay.imageData
- let _: URL? = imageOnlyDisplay.actionURL
- let modalDisplay = FirebaseInAppMessaging.InAppMessagingModalDisplay(
- campaignName: nonnullText,
- titleText: nonnullText,
- bodyText: nullableText,
- textColor: nonnullColor,
- backgroundColor: nonnullColor,
- imageData: nullableImageData,
- actionButton: nullableActionButton,
- actionURL: nullableURL,
- appData: nullableDict
- )
- _ = modalDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
- let _: String = modalDisplay.title
- let _: InAppMessagingImageData? = modalDisplay.imageData
- let _: String? = modalDisplay.bodyText
- let _: InAppMessagingActionButton? = modalDisplay.actionButton
- let _: URL? = modalDisplay.actionURL
- let _: UIColor = modalDisplay.displayBackgroundColor
- let _: UIColor = modalDisplay.textColor
- let display: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
- display.displayMessage(displayMessage, displayDelegate: delegate!)
- // MARK: - FirebaseInAppMessagingSwift
- if #available(iOS 13, tvOS 13, *) {
- let nullableImage: UIImage? = nil
- let nullableColor: UIColor? = nil
- let nullableAppData: [String: String]? = nil
- let _: FirebaseInAppMessaging.InAppMessagingCardDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.cardMessage(
- campaignName: nonnullText,
- title: nonnullText,
- body: nullableText,
- textColor: nonnullColor,
- backgroundColor: nonnullColor,
- portraitImage: UIImage(),
- landscapeImage: nullableImage,
- primaryButtonText: nonnullText,
- primaryButtonTextColor: nonnullColor,
- primaryButtonBackgroundColor: nonnullColor,
- primaryActionURL: nullableURL,
- secondaryButtonText: nullableText,
- secondaryButtonTextColor: nullableColor,
- secondaryButtonBackgroundColor: nullableColor,
- secondaryActionURL: nullableURL,
- appData: nullableAppData
- )
- let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.modalMessage()
- let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.modalMessage(
- campaignName: nonnullText,
- title: nonnullText,
- body: nullableText,
- textColor: nonnullColor,
- backgroundColor: nonnullColor,
- image: nullableImage,
- buttonText: nullableText,
- buttonTextColor: nullableColor,
- buttonBackgroundColor: nullableColor,
- actionURL: nullableURL,
- appData: nullableAppData
- )
- let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.bannerMessage()
- let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.bannerMessage(
- campaignName: nonnullText,
- title: nonnullText,
- body: nullableText,
- textColor: nonnullColor,
- backgroundColor: nonnullColor,
- image: nullableImage,
- actionURL: nullableURL,
- appData: nullableAppData
- )
- let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.imageOnlyMessage(image: UIImage())
- let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
- .InAppMessagingPreviewHelpers.imageOnlyMessage(
- campaignName: nonnullText,
- image: UIImage(),
- actionURL: nullableURL,
- appData: nullableAppData
- )
- let swiftDelegate = FirebaseInAppMessagingSwift.InAppMessagingPreviewHelpers.Delegate()
- _ = swiftDelegate as InAppMessagingDisplayDelegate
- }
- @available(iOS 13, tvOS 13, *)
- struct MyView: View {
- var body: some View {
- Text("Hello, world!")
- .imageOnlyInAppMessage(
- closure: { (_: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay,
- _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
- Text("My image-only display!")
- }
- )
- Text("Hello, world!")
- .bannerInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingBannerDisplay,
- _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
- Text("My banner!")
- })
- Text("Hello, world!")
- .modalInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingModalDisplay,
- _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
- Text("My modal!")
- })
- Text("Hello, world!")
- .cardInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingCardDisplay,
- _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
- Text("My card!")
- })
- }
- }
- }
- }
|