FirebaseInAppMessaging_APIBuildTests.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. // Copyright 2023 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. import XCTest
  15. import FirebaseInAppMessaging
  16. import FirebaseInAppMessagingSwift
  17. import SwiftUI
  18. final class FirebaseInAppMessagingSwift_APIBuildTests: XCTestCase {
  19. func usage() throws {
  20. // MARK: - FirebaseInAppMessaging
  21. let inAppMessaging = FirebaseInAppMessaging.InAppMessaging.inAppMessaging()
  22. let _: Bool = inAppMessaging.messageDisplaySuppressed
  23. inAppMessaging.messageDisplaySuppressed = true
  24. let _: Bool = inAppMessaging.automaticDataCollectionEnabled
  25. inAppMessaging.automaticDataCollectionEnabled = true
  26. let _: FirebaseInAppMessaging.InAppMessagingDisplay = inAppMessaging.messageDisplayComponent
  27. let displayConformer: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
  28. inAppMessaging.messageDisplayComponent = displayConformer
  29. inAppMessaging.triggerEvent("eventName")
  30. let delegate: FirebaseInAppMessaging.InAppMessagingDisplayDelegate? = inAppMessaging.delegate
  31. inAppMessaging.delegate = nil
  32. let nullableText: String? = nil
  33. let nullableURL: URL? = nil
  34. let action = FirebaseInAppMessaging.InAppMessagingAction(
  35. actionText: nullableText,
  36. actionURL: nullableURL
  37. )
  38. let _: String? = action.actionText
  39. let _: URL? = action.actionURL
  40. let nonnullText = ""
  41. let nonnullColor: UIColor = .black
  42. let button = FirebaseInAppMessaging.InAppMessagingActionButton(
  43. buttonText: nonnullText,
  44. buttonTextColor: nonnullColor,
  45. backgroundColor: nonnullColor
  46. )
  47. let _: String = button.buttonText
  48. let _: UIColor = button.buttonTextColor
  49. let _: UIColor = button.buttonBackgroundColor
  50. // TODO(ncooke3): This type should not have a `FIR` prefix.
  51. _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType.RawValue()
  52. let messsageType: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType! = nil
  53. switch messsageType! {
  54. case .modal: break
  55. case .banner: break
  56. case .imageOnly: break
  57. case .card: break
  58. @unknown default: break
  59. }
  60. // TODO(ncooke3): This type should not have a `FIR` prefix.
  61. _ = FirebaseInAppMessaging.FIAMDisplayRenderErrorType.RawValue()
  62. let errorType: FirebaseInAppMessaging.FIAMDisplayRenderErrorType! = nil
  63. switch errorType! {
  64. case .imageDataInvalid: break
  65. case .unspecifiedError: break
  66. @unknown default: break
  67. }
  68. // TODO(ncooke3): This type should not have a `FIR` prefix.
  69. _ = FirebaseInAppMessaging.FIRInAppMessagingDismissType.RawValue()
  70. let dismissType: FirebaseInAppMessaging.FIRInAppMessagingDismissType! = nil
  71. switch dismissType! {
  72. case .typeUserSwipe: break
  73. case .typeUserTapClose: break
  74. case .typeAuto: break
  75. case .unspecified: break
  76. @unknown default: break
  77. }
  78. // TODO(ncooke3): This type should not have a `FIR` prefix.
  79. _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType.RawValue()
  80. let triggerType: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType! = nil
  81. switch triggerType! {
  82. case .onAppForeground: break
  83. case .onAnalyticsEvent: break
  84. @unknown default: break
  85. }
  86. let nullableImageData: FirebaseInAppMessaging.InAppMessagingImageData? = nil
  87. let nullableDict: [AnyHashable: Any]? = nil
  88. let bannerDisplay = FirebaseInAppMessaging.InAppMessagingBannerDisplay(
  89. campaignName: nonnullText,
  90. titleText: nonnullText,
  91. bodyText: nullableText,
  92. textColor: nonnullColor,
  93. backgroundColor: nonnullColor,
  94. imageData: nullableImageData,
  95. actionURL: nullableURL,
  96. appData: nullableDict
  97. )
  98. _ = bannerDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  99. let _: String = bannerDisplay.title
  100. let _: FirebaseInAppMessaging.InAppMessagingImageData? = bannerDisplay.imageData
  101. let _: String? = bannerDisplay.bodyText
  102. let _: UIColor = bannerDisplay.displayBackgroundColor
  103. let _: UIColor = bannerDisplay.textColor
  104. let _: URL? = bannerDisplay.actionURL
  105. let campaignInfo: FirebaseInAppMessaging.InAppMessagingCampaignInfo! = nil
  106. let _: String = campaignInfo.messageID
  107. let _: String = campaignInfo.campaignName
  108. let _: Bool = campaignInfo.renderAsTestMessage
  109. let nonnullImageData = FirebaseInAppMessaging.InAppMessagingImageData(
  110. imageURL: nonnullText,
  111. imageData: Data()
  112. )
  113. let _: Data? = nonnullImageData.imageRawData
  114. let _: String = nonnullImageData.imageURL
  115. let nullableActionButton: FirebaseInAppMessaging.InAppMessagingActionButton? = nil
  116. let cardDisplay = FirebaseInAppMessaging.InAppMessagingCardDisplay(
  117. campaignName: nonnullText,
  118. titleText: nonnullText,
  119. bodyText: nullableText,
  120. textColor: nonnullColor,
  121. portraitImageData: nonnullImageData,
  122. landscapeImageData: nullableImageData,
  123. backgroundColor: nonnullColor,
  124. primaryActionButton: button,
  125. secondaryActionButton: nullableActionButton,
  126. primaryActionURL: nullableURL,
  127. secondaryActionURL: nullableURL,
  128. appData: nullableDict
  129. )
  130. _ = cardDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  131. let _: String = cardDisplay.title
  132. let _: String? = cardDisplay.body
  133. let _: UIColor = cardDisplay.textColor
  134. let _: FirebaseInAppMessaging.InAppMessagingImageData = cardDisplay.portraitImageData
  135. let _: FirebaseInAppMessaging.InAppMessagingImageData? = cardDisplay.landscapeImageData
  136. let _: UIColor = cardDisplay.displayBackgroundColor
  137. let _: FirebaseInAppMessaging.InAppMessagingActionButton = cardDisplay.primaryActionButton
  138. let _: URL? = cardDisplay.primaryActionURL
  139. let _: FirebaseInAppMessaging.InAppMessagingActionButton? = cardDisplay.secondaryActionButton
  140. let _: URL? = cardDisplay.secondaryActionURL
  141. let displayMessage = FirebaseInAppMessaging.InAppMessagingDisplayMessage(
  142. messageID: nonnullText,
  143. campaignName: nonnullText,
  144. renderAsTestMessage: true,
  145. messageType: messsageType,
  146. triggerType: triggerType
  147. )
  148. let _: FirebaseInAppMessaging.InAppMessagingCampaignInfo = displayMessage.campaignInfo
  149. let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType = displayMessage.type
  150. let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType = displayMessage.triggerType
  151. let _: [AnyHashable: Any]? = displayMessage.appData
  152. let imageOnlyDisplay = FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay(
  153. campaignName: nonnullText,
  154. imageData: nonnullImageData,
  155. actionURL: nullableURL,
  156. appData: nullableDict
  157. )
  158. _ = imageOnlyDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  159. let _: FirebaseInAppMessaging.InAppMessagingImageData = imageOnlyDisplay.imageData
  160. let _: URL? = imageOnlyDisplay.actionURL
  161. let modalDisplay = FirebaseInAppMessaging.InAppMessagingModalDisplay(
  162. campaignName: nonnullText,
  163. titleText: nonnullText,
  164. bodyText: nullableText,
  165. textColor: nonnullColor,
  166. backgroundColor: nonnullColor,
  167. imageData: nullableImageData,
  168. actionButton: nullableActionButton,
  169. actionURL: nullableURL,
  170. appData: nullableDict
  171. )
  172. _ = modalDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  173. let _: String = modalDisplay.title
  174. let _: InAppMessagingImageData? = modalDisplay.imageData
  175. let _: String? = modalDisplay.bodyText
  176. let _: InAppMessagingActionButton? = modalDisplay.actionButton
  177. let _: URL? = modalDisplay.actionURL
  178. let _: UIColor = modalDisplay.displayBackgroundColor
  179. let _: UIColor = modalDisplay.textColor
  180. let display: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
  181. display.displayMessage(displayMessage, displayDelegate: delegate!)
  182. // MARK: - FirebaseInAppMessagingSwift
  183. if #available(iOS 13, tvOS 13, *) {
  184. let nullableImage: UIImage? = nil
  185. let nullableColor: UIColor? = nil
  186. let nullableAppData: [String: String]? = nil
  187. let _: FirebaseInAppMessaging.InAppMessagingCardDisplay = FirebaseInAppMessagingSwift
  188. .InAppMessagingPreviewHelpers.cardMessage(
  189. campaignName: nonnullText,
  190. title: nonnullText,
  191. body: nullableText,
  192. textColor: nonnullColor,
  193. backgroundColor: nonnullColor,
  194. portraitImage: UIImage(),
  195. landscapeImage: nullableImage,
  196. primaryButtonText: nonnullText,
  197. primaryButtonTextColor: nonnullColor,
  198. primaryButtonBackgroundColor: nonnullColor,
  199. primaryActionURL: nullableURL,
  200. secondaryButtonText: nullableText,
  201. secondaryButtonTextColor: nullableColor,
  202. secondaryButtonBackgroundColor: nullableColor,
  203. secondaryActionURL: nullableURL,
  204. appData: nullableAppData
  205. )
  206. let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
  207. .InAppMessagingPreviewHelpers.modalMessage()
  208. let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
  209. .InAppMessagingPreviewHelpers.modalMessage(
  210. campaignName: nonnullText,
  211. title: nonnullText,
  212. body: nullableText,
  213. textColor: nonnullColor,
  214. backgroundColor: nonnullColor,
  215. image: nullableImage,
  216. buttonText: nullableText,
  217. buttonTextColor: nullableColor,
  218. buttonBackgroundColor: nullableColor,
  219. actionURL: nullableURL,
  220. appData: nullableAppData
  221. )
  222. let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
  223. .InAppMessagingPreviewHelpers.bannerMessage()
  224. let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
  225. .InAppMessagingPreviewHelpers.bannerMessage(
  226. campaignName: nonnullText,
  227. title: nonnullText,
  228. body: nullableText,
  229. textColor: nonnullColor,
  230. backgroundColor: nonnullColor,
  231. image: nullableImage,
  232. actionURL: nullableURL,
  233. appData: nullableAppData
  234. )
  235. let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
  236. .InAppMessagingPreviewHelpers.imageOnlyMessage(image: UIImage())
  237. let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
  238. .InAppMessagingPreviewHelpers.imageOnlyMessage(
  239. campaignName: nonnullText,
  240. image: UIImage(),
  241. actionURL: nullableURL,
  242. appData: nullableAppData
  243. )
  244. let swiftDelegate = FirebaseInAppMessagingSwift.InAppMessagingPreviewHelpers.Delegate()
  245. _ = swiftDelegate as InAppMessagingDisplayDelegate
  246. }
  247. @available(iOS 13, tvOS 13, *)
  248. struct MyView: View {
  249. var body: some View {
  250. Text("Hello, world!")
  251. .imageOnlyInAppMessage(
  252. closure: { (_: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay,
  253. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  254. Text("My image-only display!")
  255. }
  256. )
  257. Text("Hello, world!")
  258. .bannerInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingBannerDisplay,
  259. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  260. Text("My banner!")
  261. })
  262. Text("Hello, world!")
  263. .modalInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingModalDisplay,
  264. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  265. Text("My modal!")
  266. })
  267. Text("Hello, world!")
  268. .cardInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingCardDisplay,
  269. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  270. Text("My card!")
  271. })
  272. }
  273. }
  274. }
  275. }