FirebaseInAppMessaging_APIBuildTests.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  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. // TODO(ncooke3): This should probably be removed in favor of the one in
  25. // FirebaseCore?
  26. let _: Bool = inAppMessaging.automaticDataCollectionEnabled
  27. inAppMessaging.automaticDataCollectionEnabled = true
  28. let _: FirebaseInAppMessaging.InAppMessagingDisplay = inAppMessaging.messageDisplayComponent
  29. // FIXME(ncooke3): Below.
  30. let displayConformer: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
  31. inAppMessaging.messageDisplayComponent = displayConformer
  32. inAppMessaging.triggerEvent("eventName")
  33. let delegate: FirebaseInAppMessaging.InAppMessagingDisplayDelegate? = inAppMessaging.delegate
  34. inAppMessaging.delegate = nil
  35. // TODO(ncooke3): Does it make sense for these params to be nullable?
  36. let nullableText: String? = nil
  37. let nullableURL: URL? = nil
  38. let action = FirebaseInAppMessaging.InAppMessagingAction(
  39. actionText: nullableText,
  40. actionURL: nullableURL
  41. )
  42. let _: String? = action.actionText
  43. let _: URL? = action.actionURL
  44. let nonnullText = ""
  45. let nonnullColor: UIColor = .black
  46. let button = FirebaseInAppMessaging.InAppMessagingActionButton(
  47. buttonText: nonnullText,
  48. buttonTextColor: nonnullColor,
  49. backgroundColor: nonnullColor
  50. )
  51. let _: String = button.buttonText
  52. let _: UIColor = button.buttonTextColor
  53. let _: UIColor = button.buttonBackgroundColor
  54. // TODO(ncooke3): This type should not have a `FIR` prefix.
  55. _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType.RawValue()
  56. let messsageType: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType! = nil
  57. switch messsageType! {
  58. case .modal: break
  59. case .banner: break
  60. case .imageOnly: break
  61. case .card: break
  62. @unknown default: break
  63. }
  64. // TODO(ncooke3): This type should not have a `FIR` prefix.
  65. _ = FirebaseInAppMessaging.FIAMDisplayRenderErrorType.RawValue()
  66. let errorType: FirebaseInAppMessaging.FIAMDisplayRenderErrorType! = nil
  67. switch errorType! {
  68. case .imageDataInvalid: break
  69. case .unspecifiedError: break
  70. @unknown default: break
  71. }
  72. // TODO(ncooke3): This type should not have a `FIR` prefix.
  73. _ = FirebaseInAppMessaging.FIRInAppMessagingDismissType.RawValue()
  74. let dismissType: FirebaseInAppMessaging.FIRInAppMessagingDismissType! = nil
  75. switch dismissType! {
  76. case .typeUserSwipe: break
  77. case .typeUserTapClose: break
  78. case .typeAuto: break
  79. case .unspecified: break
  80. @unknown default: break
  81. }
  82. // TODO(ncooke3): This type should not have a `FIR` prefix.
  83. _ = FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType.RawValue()
  84. let triggerType: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType! = nil
  85. switch triggerType! {
  86. case .onAppForeground: break
  87. case .onAnalyticsEvent: break
  88. @unknown default: break
  89. }
  90. let nullableImageData: FirebaseInAppMessaging.InAppMessagingImageData? = nil
  91. let nullableDict: [AnyHashable: Any]? = nil
  92. let bannerDisplay = FirebaseInAppMessaging.InAppMessagingBannerDisplay(
  93. campaignName: nonnullText,
  94. titleText: nonnullText,
  95. bodyText: nullableText,
  96. textColor: nonnullColor,
  97. backgroundColor: nonnullColor,
  98. imageData: nullableImageData,
  99. actionURL: nullableURL,
  100. appData: nullableDict
  101. )
  102. _ = bannerDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  103. let _: String = bannerDisplay.title
  104. let _: FirebaseInAppMessaging.InAppMessagingImageData? = bannerDisplay.imageData
  105. let _: String? = bannerDisplay.bodyText
  106. let _: UIColor = bannerDisplay.displayBackgroundColor
  107. let _: UIColor = bannerDisplay.textColor
  108. let _: URL? = bannerDisplay.actionURL
  109. let campaignInfo: FirebaseInAppMessaging.InAppMessagingCampaignInfo! = nil
  110. let _: String = campaignInfo.messageID
  111. let _: String = campaignInfo.campaignName
  112. let _: Bool = campaignInfo.renderAsTestMessage
  113. let nonnullImageData = FirebaseInAppMessaging.InAppMessagingImageData(
  114. imageURL: nonnullText,
  115. imageData: Data()
  116. )
  117. let _: Data? = nonnullImageData.imageRawData
  118. let _: String = nonnullImageData.imageURL
  119. let nullableActionButton: FirebaseInAppMessaging.InAppMessagingActionButton? = nil
  120. let cardDisplay = FirebaseInAppMessaging.InAppMessagingCardDisplay(
  121. campaignName: nonnullText,
  122. titleText: nonnullText,
  123. bodyText: nullableText,
  124. textColor: nonnullColor,
  125. portraitImageData: nonnullImageData,
  126. landscapeImageData: nullableImageData,
  127. backgroundColor: nonnullColor,
  128. primaryActionButton: button,
  129. secondaryActionButton: nullableActionButton,
  130. primaryActionURL: nullableURL,
  131. secondaryActionURL: nullableURL,
  132. appData: nullableDict
  133. )
  134. _ = cardDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  135. let _: String = cardDisplay.title
  136. let _: String? = cardDisplay.body
  137. let _: UIColor = cardDisplay.textColor
  138. let _: FirebaseInAppMessaging.InAppMessagingImageData = cardDisplay.portraitImageData
  139. let _: FirebaseInAppMessaging.InAppMessagingImageData? = cardDisplay.landscapeImageData
  140. let _: UIColor = cardDisplay.displayBackgroundColor
  141. let _: FirebaseInAppMessaging.InAppMessagingActionButton = cardDisplay.primaryActionButton
  142. let _: URL? = cardDisplay.primaryActionURL
  143. let _: FirebaseInAppMessaging.InAppMessagingActionButton? = cardDisplay.secondaryActionButton
  144. let _: URL? = cardDisplay.secondaryActionURL
  145. let displayMessage = FirebaseInAppMessaging.InAppMessagingDisplayMessage(
  146. messageID: nonnullText,
  147. campaignName: nonnullText,
  148. renderAsTestMessage: true,
  149. messageType: messsageType,
  150. triggerType: triggerType
  151. )
  152. let _: FirebaseInAppMessaging.InAppMessagingCampaignInfo = displayMessage.campaignInfo
  153. let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayMessageType = displayMessage.type
  154. let _: FirebaseInAppMessaging.FIRInAppMessagingDisplayTriggerType = displayMessage.triggerType
  155. let _: [AnyHashable: Any]? = displayMessage.appData
  156. let imageOnlyDisplay = FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay(
  157. campaignName: nonnullText,
  158. imageData: nonnullImageData,
  159. actionURL: nullableURL,
  160. appData: nullableDict
  161. )
  162. _ = imageOnlyDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  163. let _: FirebaseInAppMessaging.InAppMessagingImageData = imageOnlyDisplay.imageData
  164. let _: URL? = imageOnlyDisplay.actionURL
  165. let modalDisplay = FirebaseInAppMessaging.InAppMessagingModalDisplay(
  166. campaignName: nonnullText,
  167. titleText: nonnullText,
  168. bodyText: nullableText,
  169. textColor: nonnullColor,
  170. backgroundColor: nonnullColor,
  171. imageData: nullableImageData,
  172. actionButton: nullableActionButton,
  173. actionURL: nullableURL,
  174. appData: nullableDict
  175. )
  176. _ = modalDisplay as FirebaseInAppMessaging.InAppMessagingDisplayMessage
  177. let _: String = modalDisplay.title
  178. let _: InAppMessagingImageData? = modalDisplay.imageData
  179. let _: String? = modalDisplay.bodyText
  180. let _: InAppMessagingActionButton? = modalDisplay.actionButton
  181. let _: URL? = modalDisplay.actionURL
  182. let _: UIColor = modalDisplay.displayBackgroundColor
  183. let _: UIColor = modalDisplay.textColor
  184. let display: FirebaseInAppMessaging.InAppMessagingDisplay! = nil
  185. display.displayMessage(displayMessage, displayDelegate: delegate!)
  186. // MARK: - FirebaseInAppMessagingSwift
  187. if #available(iOS 13, tvOS 13, *) {
  188. let nullableImage: UIImage? = nil
  189. let nullableColor: UIColor? = nil
  190. let nullableAppData: [String: String]? = nil
  191. let _: FirebaseInAppMessaging.InAppMessagingCardDisplay = FirebaseInAppMessagingSwift
  192. .InAppMessagingPreviewHelpers.cardMessage(
  193. campaignName: nonnullText,
  194. title: nonnullText,
  195. body: nullableText,
  196. textColor: nonnullColor,
  197. backgroundColor: nonnullColor,
  198. portraitImage: UIImage(),
  199. landscapeImage: nullableImage,
  200. primaryButtonText: nonnullText,
  201. primaryButtonTextColor: nonnullColor,
  202. primaryButtonBackgroundColor: nonnullColor,
  203. primaryActionURL: nullableURL,
  204. secondaryButtonText: nullableText,
  205. secondaryButtonTextColor: nullableColor,
  206. secondaryButtonBackgroundColor: nullableColor,
  207. secondaryActionURL: nullableURL,
  208. appData: nullableAppData
  209. )
  210. let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
  211. .InAppMessagingPreviewHelpers.modalMessage()
  212. let _: FirebaseInAppMessaging.InAppMessagingModalDisplay = FirebaseInAppMessagingSwift
  213. .InAppMessagingPreviewHelpers.modalMessage(
  214. campaignName: nonnullText,
  215. title: nonnullText,
  216. body: nullableText,
  217. textColor: nonnullColor,
  218. backgroundColor: nonnullColor,
  219. image: nullableImage,
  220. buttonText: nullableText,
  221. buttonTextColor: nullableColor,
  222. buttonBackgroundColor: nullableColor,
  223. actionURL: nullableURL,
  224. appData: nullableAppData
  225. )
  226. let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
  227. .InAppMessagingPreviewHelpers.bannerMessage()
  228. let _: FirebaseInAppMessaging.InAppMessagingBannerDisplay = FirebaseInAppMessagingSwift
  229. .InAppMessagingPreviewHelpers.bannerMessage(
  230. campaignName: nonnullText,
  231. title: nonnullText,
  232. body: nullableText,
  233. textColor: nonnullColor,
  234. backgroundColor: nonnullColor,
  235. image: nullableImage,
  236. actionURL: nullableURL,
  237. appData: nullableAppData
  238. )
  239. let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
  240. .InAppMessagingPreviewHelpers.imageOnlyMessage(image: UIImage())
  241. let _: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay = FirebaseInAppMessagingSwift
  242. .InAppMessagingPreviewHelpers.imageOnlyMessage(
  243. campaignName: nonnullText,
  244. image: UIImage(),
  245. actionURL: nullableURL,
  246. appData: nullableAppData
  247. )
  248. let swiftDelegate = FirebaseInAppMessagingSwift.InAppMessagingPreviewHelpers.Delegate()
  249. _ = swiftDelegate as InAppMessagingDisplayDelegate
  250. }
  251. @available(iOS 13, tvOS 13, *)
  252. struct MyView: View {
  253. var body: some View {
  254. Text("Hello, world!")
  255. .imageOnlyInAppMessage(
  256. closure: { (_: FirebaseInAppMessaging.InAppMessagingImageOnlyDisplay,
  257. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  258. Text("My image-only display!")
  259. }
  260. )
  261. Text("Hello, world!")
  262. .bannerInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingBannerDisplay,
  263. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  264. Text("My banner!")
  265. })
  266. Text("Hello, world!")
  267. .modalInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingModalDisplay,
  268. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  269. Text("My modal!")
  270. })
  271. Text("Hello, world!")
  272. .cardInAppMessage(closure: { (_: FirebaseInAppMessaging.InAppMessagingCardDisplay,
  273. _: FirebaseInAppMessaging.InAppMessagingDisplayDelegate) in
  274. Text("My card!")
  275. })
  276. }
  277. }
  278. }
  279. }