Skip to content

Commit 0c9fe27

Browse files
authored
[InAppMessaging] Add FIAM and FIAMSwift API build tests (#11793)
1 parent afbfb27 commit 0c9fe27

File tree

1 file changed

+309
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)