Files
firebase-ios-sdk/FirebaseInAppMessaging/Swift/Tests/Unit/CustomInAppMessageDisplayViewModifierTests.swift
T
christibbs e22c7a7b44 Display custom FIAMs with SwiftUI (#7496)
* Revert to previous nil check on experiment JSON

* Add Swift extensions podspec

* Add viewmodifier for displaying custom in-app messages w/ SwiftUI

* Add Multiplatform project to integration test SwiftUI pod

* We don't support macOS yet, comment that out from the Podfile

* Fix variable renaming bug

* View modifier implementation that works, but design is questionable

* Super basic integration

* Split view modifiers based on in-app message subtype

* Fix versioning in podspec

* Configure Firebase in test app

* Remove trailing whitespace

* Clean up SDK fetching code, sample app

* Updates to sample code, fully functional modal message now

* Update implementing app example

* Better code readability for view modifiers

* Add unit tests for DelegateBridge

* Add test target to pod spec

* Add copyright notices

* Remove whitespace from pod spec

* Add auto-complete documentation for in-app message extensions

* Lowered min target

* Update Package.swift

* First pass at CI updates

* @available(13) for SwiftUI structs

* Use singleton DelegateBridge

* Update inappmessaging.yml

* Run scripts/style.sh

* Update build.sh

* Modify build.sh

* Update CHANGELOG, try something new with GHA configuration

* Let's try this for GHA

* Fully qualify FIAM message enums

* Remove redundant type declaration

* Let's try direct instantiation of messages in unit tests

* Test CI build works without actual test cases

* Let's try this, making init available.

* Try exposing initializer

* Expose simpler initializer for in-app message superclass

* Fix up UI test app initializers

* Update CHANGELOG, GHA workflows

* Cleaner GHA test flow

* Clean up custom in-app message view modifier implementation

* Configuration cleanup

* Add some tests to ensure FIAM SwiftUI API compiles

* Add SpecsDev to Podfile of integration testing app. Make @State var private
2021-03-16 19:40:03 -04:00

71 lines
2.4 KiB
Swift

// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import XCTest
@testable import FirebaseInAppMessaging
@testable import FirebaseInAppMessagingSwift
class DelegateBridgeTests: XCTestCase {
var delegateBridge = DelegateBridge()
func testClearsInAppMessageOnDismiss() {
let inAppMessage: InAppMessagingDisplayMessage = InAppMessagingDisplayMessage(
messageID: "messageID",
campaignName: "testCampaign",
renderAsTestMessage: false,
messageType: .card,
triggerType: .onAppForeground
)
delegateBridge.displayMessage(inAppMessage, displayDelegate: TestDelegate())
DispatchQueue.main.async {
XCTAssertNotNil(self.delegateBridge.inAppMessageData)
}
delegateBridge.messageDismissed(inAppMessage, dismissType: .typeUserTapClose)
DispatchQueue.main.async {
XCTAssertNil(self.delegateBridge.inAppMessageData)
}
}
func testClearsInAppMessageOnClick() {
let inAppMessage: InAppMessagingDisplayMessage = InAppMessagingDisplayMessage(
messageID: "messageID",
campaignName: "testCampaign",
renderAsTestMessage: false,
messageType: .card,
triggerType: .onAppForeground
)
delegateBridge.displayMessage(inAppMessage, displayDelegate: TestDelegate())
DispatchQueue.main.async {
XCTAssertNotNil(self.delegateBridge.inAppMessageData)
}
delegateBridge.messageClicked(inAppMessage,
with: InAppMessagingAction(actionText: "test",
actionURL: URL(
string: "http://www.test.com"
)))
DispatchQueue.main.async {
XCTAssertNil(self.delegateBridge.inAppMessageData)
}
}
class TestDelegate: NSObject, InAppMessagingDisplayDelegate {}
}