FirebaseInAppMessaging_APIBuildTests.swift 12 KB

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