diff options
author | Gil <mcg@google.com> | 2018-02-22 08:26:22 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-22 08:26:22 -0800 |
commit | 4dc63f8d7cbf60417b88c6a77839ea32656627b9 (patch) | |
tree | 9e06e7c40b71caea3a89813a506c9aebccdf1401 /Firestore/core/test/firebase/firestore/testutil | |
parent | 935f3ca7d749f96c7207236a39c57f32a02c05d3 (diff) |
Fix Firestore tests for M22 (#834)
* Add FIRFirestoreTests to the Firestore Xcode project
* Avoid waitForExpectations:timeout:
This API was added in Xcode 8.3, but we still build production releases
with Xcode 8.2. waitForExpectationsWithTimeout:handler: is available
from Xcode 7.2.
* Add AppForUnitTesting
Add a utility for constructing a Firebase App for testing.
* Handle the nil UID from FIRAuth
* Avoid running CMake tests twice
* Only build app_testing on Apple platforms
* Revise test.sh messages
Diffstat (limited to 'Firestore/core/test/firebase/firestore/testutil')
3 files changed, 126 insertions, 0 deletions
diff --git a/Firestore/core/test/firebase/firestore/testutil/CMakeLists.txt b/Firestore/core/test/firebase/firestore/testutil/CMakeLists.txt new file mode 100644 index 0000000..b9fcd47 --- /dev/null +++ b/Firestore/core/test/firebase/firestore/testutil/CMakeLists.txt @@ -0,0 +1,35 @@ +# Copyright 2018 Google +# +# 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. + +cc_library( + firebase_firestore_testutil_apple + SOURCES + app_testing.h + app_testing.mm + DEPENDS + FirebaseCore + absl_strings +) + +if(APPLE) + list(APPEND TESTUTIL_DEPENDS firebase_firestore_testutil_apple) +endif() + +add_library( + firebase_firestore_testutil INTERFACE +) +target_link_libraries( + firebase_firestore_testutil INTERFACE + ${TESTUTIL_DEPENDS} +) diff --git a/Firestore/core/test/firebase/firestore/testutil/app_testing.h b/Firestore/core/test/firebase/firestore/testutil/app_testing.h new file mode 100644 index 0000000..d18ba4f --- /dev/null +++ b/Firestore/core/test/firebase/firestore/testutil/app_testing.h @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Google + * + * 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. + */ + +#ifndef FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_TESTUTIL_APP_TESTING_H_ +#define FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_TESTUTIL_APP_TESTING_H_ + +#include "absl/strings/string_view.h" + +#if __OBJC__ + +@class FIRApp; + +namespace firebase { +namespace firestore { +namespace testutil { + +/** Creates a set of default Firebase Options for testing. */ +FIROptions* OptionsForUnitTesting( + const absl::string_view project_id = "project_id"); + +/** Creates a new Firebase App for testing. */ +FIRApp* AppForUnitTesting(const absl::string_view project_id = "project_id"); + +} // namespace testutil +} // namespace firestore +} // namespace firebase + +#endif // __OBJC__ + +#endif // FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_TESTUTIL_APP_TESTING_H_ diff --git a/Firestore/core/test/firebase/firestore/testutil/app_testing.mm b/Firestore/core/test/firebase/firestore/testutil/app_testing.mm new file mode 100644 index 0000000..21db0db --- /dev/null +++ b/Firestore/core/test/firebase/firestore/testutil/app_testing.mm @@ -0,0 +1,48 @@ +/* + * Copyright 2018 Google + * + * 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 <FirebaseCore/FIRApp.h> +#import <FirebaseCore/FIROptions.h> + +#include "Firestore/core/src/firebase/firestore/util/string_apple.h" +#include "Firestore/core/test/firebase/firestore/testutil/app_testing.h" + +namespace firebase { +namespace firestore { +namespace testutil { + +FIROptions* OptionsForUnitTesting(const absl::string_view project_id) { + FIROptions* options = + [[FIROptions alloc] initWithGoogleAppID:@"1:123:ios:123ab" + GCMSenderID:@"gcm_sender_id"]; + options.projectID = util::WrapNSString(project_id); + return options; +} + +FIRApp* AppForUnitTesting(const absl::string_view project_id) { + static int counter = 0; + + NSString* appName = + [NSString stringWithFormat:@"app_for_unit_testing_%d", counter++]; + FIROptions* options = OptionsForUnitTesting(project_id); + [FIRApp configureWithName:appName options:options]; + + return [FIRApp appNamed:appName]; +} + +} // namespace testutil +} // namespace firestore +} // namespace firebase |