FirebaseInAppMessaging_APIBuildTests.swift 12 KB

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