Files
firebase-ios-sdk/FirebaseInAppMessaging/Swift/Tests/Unit/FirebaseInAppMessaging_APIBuildTests.swift
T

310 lines
12 KiB
Swift

// 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!")
})
}
}
}
}