Files
react-native/scripts/cocoapods/__tests__/test_utils/InstallerMock.rb
T
Riccardo Cipolleschi 4f732ba9ee Move utilities out of react_native_pods - Part 2 (#33982)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/33982

This Diff moves another part of the utilities from the `react_native_pods` file to a specific `utils.rb` file.

It adds tests for these utils and improve our test mocks.

The goal is to simplify the `react_native_pods.rb` so it's easier to work with it.

I decided to split this diff in 2 because it was becoming quite big.

## Changelog

[iOS][Changed] - Refactoring part of the react_native_pods.rb script

Reviewed By: cortinico

Differential Revision: D37006265

fbshipit-source-id: ffaac3270cb098fa30b73c97ce7cd350dfb8d7d6
2022-06-10 07:25:52 -07:00

139 lines
3.6 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# This file replicate the structure of the Installer used Cocoapods in the post_install step.
#
# To use it, add `require_relative path/to/InstallerMock.rb` into your test file
#
# ## Initialization
# You can create a new mock with the `InstallerMock.new` statement. In this case, you will
# create an empty mock.
#
# It's possible to create complex with the initializer. To create an Installer with a pod, for example, we can
# use the following code:
#
# ```ruby
# installer = Installer.new(
# PodsProjectMock.new([
# TargetMock.new(
# "MyPod",
# [
# BuildConfigurationMock.new("Debug"),
# ]
# )
# )
# )
# ```
#
# ## Assert
# All the properties of these objects are accessible in read mode.
# To access the target's list, for example, you can use the following line:
#
# ```ruby
# targets = installer.pods_project.targets
# ```
class InstallerMock
attr_reader :pods_project
attr_reader :aggregate_targets
def initialize(pods_project = PodsProjectMock.new, aggregate_targets = [AggregatedProjectMock.new])
@pods_project = pods_project
@aggregate_targets = aggregate_targets
end
def target_with_name(name)
return @pods_project.targets
.select { |target| target.name == name }
.first
end
end
class PodsProjectMock
attr_reader :targets
attr_reader :native_targets
attr_reader :path
attr_reader :build_configurations
@pod_group
attr_reader :save_invocation_count
def initialize(targets = [], pod_group = {}, path = "test/path-pod.xcodeproj", build_configurations = [], native_targets: [])
@targets = targets
@pod_group = pod_group
@path = path
@build_configurations = build_configurations
@save_invocation_count = 0
@native_targets = native_targets
end
def pod_group(name)
return @pod_group[name]
end
def save()
@save_invocation_count += 1
end
end
class AggregatedProjectMock
attr_reader :user_project
def initialize(user_project = UserProjectMock.new)
@user_project = user_project
end
end
class UserProjectMock
attr_reader :path
attr_reader :build_configurations
attr_reader :native_targets
attr_reader :save_invocation_count
def initialize(path = "/test/path.xcproj", build_configurations = [], native_targets: [])
@path = path
@build_configurations = build_configurations
@native_targets = native_targets
@save_invocation_count = 0
end
def save()
@save_invocation_count += 1
end
end
ReceivedCommonResolvedBuildSettings = Struct.new(:key, :resolve_against_xcconfig)
class TargetMock
attr_reader :name
attr_reader :build_configurations
attr_reader :received_resolved_build_setting_parameters
def initialize(name, build_configurations = [])
@name = name
@build_configurations = build_configurations
@received_resolved_build_setting_parameters = []
end
def resolved_build_setting(key, resolve_against_xcconfig: false)
received_resolved_build_setting_parameters.append(ReceivedCommonResolvedBuildSettings.new(key, resolve_against_xcconfig))
return {name: build_configurations[0].build_settings[key]}
end
end
class BuildConfigurationMock
attr_reader :name
attr_reader :build_settings
def initialize(name, build_settings = {})
@name = name
@build_settings = build_settings
end
end