| App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::verify | 15 | 100.0% |
| App\Identity\Application\Command\AdminUpdateUserHandler::handle | 9 | 100.0% |
| App\Trip\Application\Query\GetTripMembersHandler::handle | 8 | 100.0% |
| App\Shared\Infrastructure\Storage\ImageStorage::store | 7 | 100.0% |
| App\Trip\Infrastructure\Controllers\ArchiveTripController::archive | 6.74 | 44.4% |
| App\Identity\Infrastructure\Console\GrantAdminCommand::execute | 6.03 | 90.9% |
| App\Trip\Infrastructure\Controllers\ChangeMemberRoleController::change | 6.01 | 94.1% |
| App\Trip\Infrastructure\Controllers\InviteMemberController::invite | 6.01 | 94.7% |
| App\Expense\Domain\Category::label | 6 | 100.0% |
| App\Expense\Domain\Category::icon | 6 | 100.0% |
| App\Expense\Domain\Category::color | 6 | 100.0% |
| App\Expense\Infrastructure\Controllers\UpdateExpenseController::update | 6 | 95.0% |
| App\Identity\Application\Port\GoogleIdentity::nameParts | 6 | 100.0% |
| App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::update | 6 | 95.5% |
| App\Trip\Application\Command\InviteMemberHandler::handle | 6 | 100.0% |
| App\Trip\Infrastructure\Controllers\SetTripImageController::set | 6 | 100.0% |
| App\Expense\Infrastructure\Controllers\DeleteExpenseController::delete | 5.27 | 77.8% |
| App\Expense\Infrastructure\Controllers\RecordExpenseController::record | 5 | 100.0% |
| App\Shared\Domain\ValueObject\IsoDate::parse | 5 | 100.0% |
| App\Trip\Application\Command\RemoveMemberHandler::handle | 5 | 100.0% |
| App\Trip\Infrastructure\Controllers\CancelInvitationController::cancel | 5 | 100.0% |
| App\Trip\Infrastructure\Controllers\RemoveMemberController::remove | 5 | 100.0% |
| App\Trip\Infrastructure\Controllers\UpdateTripController::update | 5 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToDatabaseValue | 4.12 | 50.0% |
| App\Shared\Infrastructure\Console\PruneMediaCommand::execute | 4.06 | 84.6% |
| App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::delete | 4.01 | 90.9% |
| App\Currency\Infrastructure\ExchangeRate\FrankfurterExchangeRateProvider::lookup | 4 | 100.0% |
| App\Expense\Application\Query\ListCategoriesHandler::handle | 4 | 100.0% |
| App\Expense\Infrastructure\Controllers\GetExpenseController::get | 4 | 100.0% |
| App\Identity\Application\Command\SignInWithGoogleHandler::handle | 4 | 100.0% |
| App\Identity\Infrastructure\Controllers\SetMyAvatarController::set | 4 | 100.0% |
| App\Identity\Infrastructure\Controllers\UpdateUserController::update | 4 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleAuthenticator::authenticate | 4 | 100.0% |
| App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::findIdByEmail | 4 | 100.0% |
| App\Trip\Application\Command\AcceptInvitationHandler::pendingForMe | 4 | 100.0% |
| App\Trip\Application\Command\CancelInvitationHandler::handle | 4 | 100.0% |
| App\Trip\Application\Command\DeclineInvitationHandler::handle | 4 | 100.0% |
| App\Trip\Application\Query\ListMyInvitationsHandler::handle | 4 | 100.0% |
| App\Trip\Application\TripAccess::getForExpenseWrite | 4 | 100.0% |
| App\Trip\Application\TripAccess::getForManage | 4 | 100.0% |
| App\Trip\Application\TripAccess::accessibleTrips | 4 | 100.0% |
| App\Trip\Infrastructure\Controllers\DeleteTripController::delete | 4 | 100.0% |
| App\Trip\Infrastructure\Controllers\DeleteTripImageController::delete | 4 | 100.0% |
| App\Shared\Infrastructure\Storage\ImageStorage::storedNames | 3.14 | 75.0% |
| App\Trip\Infrastructure\Controllers\DeclineInvitationController::decline | 3.03 | 85.7% |
| App\Trip\Infrastructure\Controllers\ListTripMembersController::list | 3.03 | 85.7% |
| App\Currency\Application\Query\ListCurrenciesHandler::handle | 3 | 100.0% |
| App\Currency\Infrastructure\Controllers\GetRateController::get | 3 | 100.0% |
| App\Currency\Infrastructure\ExchangeRate\FrankfurterExchangeRateProvider::rate | 3 | 100.0% |
| App\Expense\Application\OwnedExpenseFinder::expenseOnTrip | 3 | 100.0% |
| App\Expense\Application\Query\ExpenseViewFactory::create | 3 | 100.0% |
| App\Expense\Domain\CategorySetting::normalizeLabel | 3 | 100.0% |
| App\Expense\Domain\CategorySetting::normalize | 3 | 100.0% |
| App\Expense\Domain\Expense::assertAmount | 3 | 100.0% |
| App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::update | 3 | 100.0% |
| App\Expense\Infrastructure\Controllers\ListExpensesController::list | 3 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToDatabaseValue | 3 | 100.0% |
| App\Health\Application\Query\HealthCheckHandler::handle | 3 | 100.0% |
| App\Identity\Application\Command\ChangePasswordHandler::handle | 3 | 100.0% |
| App\Identity\Application\Command\DeleteUserByAdminHandler::handle | 3 | 100.0% |
| App\Identity\Application\Command\UpdateUserHandler::handle | 3 | 100.0% |
| App\Identity\Domain\User::sanitizeName | 3 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::__construct | 3 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::fromNullable | 3 | 100.0% |
| App\Identity\Infrastructure\Controllers\ChangePasswordController::changePassword | 3 | 100.0% |
| App\Identity\Infrastructure\Controllers\RegisterUserController::register | 3 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToDatabaseValue | 3 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToDatabaseValue | 3 | 100.0% |
| App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::assert | 3 | 100.0% |
| App\Identity\Infrastructure\Security\UserChecker::checkPreAuth | 3 | 100.0% |
| App\Identity\Infrastructure\Security\UserProvider::loadUserByIdentifier | 3 | 100.0% |
| App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::summariesOf | 3 | 100.0% |
| App\Shared\Domain\ValueObject\Currency::__construct | 3 | 100.0% |
| App\Shared\Infrastructure\Controllers\FileController::show | 3 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\CurrencyType::convertToDatabaseValue | 3 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\UuidType::convertToDatabaseValue | 3 | 100.0% |
| App\Shared\Infrastructure\Storage\ImageStorage::delete | 3 | 100.0% |
| App\Trip\Application\Command\ChangeMemberRoleHandler::handle | 3 | 100.0% |
| App\Trip\Application\OwnershipTransferOnUserDeletion::onUserDeletion | 3 | 100.0% |
| App\Trip\Application\OwnershipTransferOnUserDeletion::pickHeir | 3 | 100.0% |
| App\Trip\Application\Query\GetTripHandler::handle | 3 | 100.0% |
| App\Trip\Application\TripAccess::readableWithRole | 3 | 100.0% |
| App\Trip\Domain\Trip::sanitizeText | 3 | 100.0% |
| App\Trip\Domain\Trip::assertBudget | 3 | 100.0% |
| App\Trip\Infrastructure\Controllers\AcceptInvitationController::accept | 3 | 100.0% |
| App\Trip\Infrastructure\Controllers\GetTripController::get | 3 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\InvitationStatusType::convertToDatabaseValue | 3 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\TripRoleType::convertToDatabaseValue | 3 | 100.0% |
| App\Trip\Domain\TripMember::__construct | 2.50 | 50.0% |
| App\Trip\Infrastructure\Controllers\ChangeMemberRoleController::isUuid | 2.50 | 50.0% |
| App\Trip\Domain\TripMember::changeRole | 2.15 | 66.7% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToPHPValue | 2.06 | 75.0% |
| App\Shared\Infrastructure\Http\ReadsJsonPayload::boolField | 2.06 | 75.0% |
| App\Currency\Application\Query\GetRateHandler::handle | 2 | 100.0% |
| App\Expense\Application\OwnedExpenseFinder::findReadable | 2 | 100.0% |
| App\Expense\Application\Query\GetExpenseHandler::handle | 2 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::all | 2 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToPHPValue | 2 | 100.0% |
| App\Health\Infrastructure\Controllers\HealthCheckController::check | 2 | 100.0% |
| App\Identity\Application\AuthenticatedUserFinder::getOrFail | 2 | 100.0% |
| App\Identity\Application\Command\ChangeMyAvatarHandler::handle | 2 | 100.0% |
| App\Identity\Application\Command\DeleteUserHandler::handle | 2 | 100.0% |
| App\Identity\Application\Command\RegisterUserHandler::handle | 2 | 100.0% |
| App\Identity\Application\Query\GetCurrentUserHandler::handle | 2 | 100.0% |
| App\Identity\Domain\User::birthDate | 2 | 100.0% |
| App\Identity\Domain\UserIdentity::__construct | 2 | 100.0% |
| App\Identity\Domain\ValueObject\Email::__construct | 2 | 100.0% |
| App\Identity\Domain\ValueObject\HashedPassword::__construct | 2 | 100.0% |
| App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::delete | 2 | 100.0% |
| App\Identity\Infrastructure\Controllers\DeleteUserController::delete | 2 | 100.0% |
| App\Identity\Infrastructure\Controllers\MeController::me | 2 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToPHPValue | 2 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToPHPValue | 2 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::getSQLDeclaration | 2 | 0.0% |
| App\Identity\Infrastructure\Security\GoogleAuthenticator::supports | 2 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::claim | 2 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::getRoles | 2 | 100.0% |
| App\Identity\Infrastructure\Security\UserProvider::refreshUser | 2 | 100.0% |
| App\Identity\Infrastructure\Security\UserProvider::supportsClass | 2 | 100.0% |
| App\Shared\Domain\ValueObject\DateRange::__construct | 2 | 100.0% |
| App\Shared\Domain\ValueObject\DateRange::equals | 2 | 100.0% |
| App\Shared\Domain\ValueObject\Money::equals | 2 | 100.0% |
| App\Shared\Domain\ValueObject\Money::assertSameCurrency | 2 | 100.0% |
| App\Shared\Domain\ValueObject\Uuid::__construct | 2 | 100.0% |
| App\Shared\Domain\ValueObject\Uuid::equals | 2 | 100.0% |
| App\Shared\Infrastructure\Console\PruneMediaCommand::referencedNames | 2 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\CurrencyType::convertToPHPValue | 2 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\UuidType::convertToPHPValue | 2 | 100.0% |
| App\Shared\Infrastructure\Storage\SignedImageUrl::for | 2 | 100.0% |
| App\Trip\Application\Command\ChangeTripImageHandler::handle | 2 | 100.0% |
| App\Trip\Application\TripAccess::roleFor | 2 | 100.0% |
| App\Trip\Domain\TripInvitation::__construct | 2 | 100.0% |
| App\Trip\Domain\ValueObject\TripRole::canWriteExpense | 2 | 100.0% |
| App\Trip\Domain\ValueObject\TripRole::isStorableMembership | 2 | 100.0% |
| App\Trip\Infrastructure\Controllers\CreateTripController::create | 2 | 100.0% |
| App\Trip\Infrastructure\Controllers\RemoveMemberController::isUuid | 2 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\InvitationStatusType::convertToPHPValue | 2 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\TripRoleType::convertToPHPValue | 2 | 100.0% |
| App\Expense\Infrastructure\Http\ValidatesExpenseId::parseExpenseId | 2 | 100.0% |
| App\Identity\Infrastructure\Http\ValidatesUserId::parseUserId | 2 | 100.0% |
| App\Shared\Infrastructure\Http\ReadsJsonPayload::decodeJsonBody | 2 | 100.0% |
| App\Shared\Infrastructure\Http\ReadsJsonPayload::stringField | 2 | 100.0% |
| App\Shared\Infrastructure\Http\ReadsJsonPayload::intField | 2 | 100.0% |
| App\Trip\Infrastructure\Http\ValidatesInvitationId::parseInvitationId | 2 | 100.0% |
| App\Trip\Infrastructure\Http\ValidatesTripId::parseTripId | 2 | 100.0% |
| App\Currency\Application\Query\GetRateHandler::__construct | 1 | 100.0% |
| App\Currency\Application\Query\GetRateQuery::__construct | 1 | 100.0% |
| App\Currency\Infrastructure\Controllers\GetRateController::__construct | 1 | 100.0% |
| App\Currency\Infrastructure\Controllers\ListCurrenciesController::__construct | 1 | 100.0% |
| App\Currency\Infrastructure\Controllers\ListCurrenciesController::list | 1 | 100.0% |
| App\Currency\Infrastructure\ExchangeRate\FrankfurterExchangeRateProvider::__construct | 1 | 100.0% |
| App\Expense\Application\Command\DeleteExpenseCommand::__construct | 1 | 100.0% |
| App\Expense\Application\Command\DeleteExpenseHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Command\DeleteExpenseHandler::handle | 1 | 100.0% |
| App\Expense\Application\Command\RecordExpenseCommand::__construct | 1 | 100.0% |
| App\Expense\Application\Command\RecordExpenseHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Command\RecordExpenseHandler::handle | 1 | 100.0% |
| App\Expense\Application\Command\UpdateCategoryCommand::__construct | 1 | 100.0% |
| App\Expense\Application\Command\UpdateCategoryHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Command\UpdateCategoryHandler::handle | 1 | 100.0% |
| App\Expense\Application\Command\UpdateExpenseCommand::__construct | 1 | 100.0% |
| App\Expense\Application\Command\UpdateExpenseHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Command\UpdateExpenseHandler::handle | 1 | 100.0% |
| App\Expense\Application\OwnedExpenseFinder::__construct | 1 | 100.0% |
| App\Expense\Application\OwnedExpenseFinder::getForWrite | 1 | 100.0% |
| App\Expense\Application\Query\CategoryView::of | 1 | 100.0% |
| App\Expense\Application\Query\ExpenseView::__construct | 1 | 100.0% |
| App\Expense\Application\Query\ExpenseView::fromExpense | 1 | 100.0% |
| App\Expense\Application\Query\ExpenseView::toArray | 1 | 100.0% |
| App\Expense\Application\Query\ExpenseViewFactory::__construct | 1 | 100.0% |
| App\Expense\Application\Query\GetExpenseHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Query\GetExpenseQuery::__construct | 1 | 100.0% |
| App\Expense\Application\Query\ListCategoriesHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Query\ListCategoriesQuery::__construct | 1 | 100.0% |
| App\Expense\Application\Query\ListExpensesHandler::__construct | 1 | 100.0% |
| App\Expense\Application\Query\ListExpensesHandler::handle | 1 | 100.0% |
| App\Expense\Application\Query\ListExpensesQuery::__construct | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::__construct | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::for | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::change | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::category | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::label | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::icon | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::color | 1 | 100.0% |
| App\Expense\Domain\CategorySetting::isActive | 1 | 100.0% |
| App\Expense\Domain\Exceptions\CategoryNotFound::withValue | 1 | 100.0% |
| App\Expense\Domain\Exceptions\ExpenseNotFound::withId | 1 | 100.0% |
| App\Expense\Domain\Expense::__construct | 1 | 100.0% |
| App\Expense\Domain\Expense::record | 1 | 100.0% |
| App\Expense\Domain\Expense::update | 1 | 100.0% |
| App\Expense\Domain\Expense::belongsToTrip | 1 | 100.0% |
| App\Expense\Domain\Expense::id | 1 | 100.0% |
| App\Expense\Domain\Expense::tripId | 1 | 100.0% |
| App\Expense\Domain\Expense::money | 1 | 100.0% |
| App\Expense\Domain\Expense::category | 1 | 100.0% |
| App\Expense\Domain\Expense::description | 1 | 100.0% |
| App\Expense\Domain\Expense::spentAt | 1 | 100.0% |
| App\Expense\Domain\Expense::createdAt | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::list | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\DeleteExpenseController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\GetExpenseController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\ListCategoriesController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\ListCategoriesController::list | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\ListExpensesController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\RecordExpenseController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Controllers\UpdateExpenseController::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::save | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::ofCategory | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::__construct | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::save | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::remove | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofId | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofTrip | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::getSQLDeclaration | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseIdType::className | 1 | 100.0% |
| App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseTripIdType::className | 1 | 100.0% |
| App\Health\Application\Query\HealthCheckHandler::__construct | 1 | 100.0% |
| App\Health\Infrastructure\Controllers\HealthCheckController::__construct | 1 | 100.0% |
| App\Identity\Application\AuthenticatedUserFinder::__construct | 1 | 100.0% |
| App\Identity\Application\AvatarCleanupOnUserDeletion::__construct | 1 | 100.0% |
| App\Identity\Application\AvatarCleanupOnUserDeletion::onUserDeletion | 1 | 100.0% |
| App\Identity\Application\Command\AdminUpdateUserCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\AdminUpdateUserHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\ChangeMyAvatarCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\ChangeMyAvatarHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\ChangePasswordCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\ChangePasswordHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\DeleteUserByAdminCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\DeleteUserByAdminHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\DeleteUserCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\DeleteUserHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\RegisterUserCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\RegisterUserHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\SignInWithGoogleCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\SignInWithGoogleHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Command\UpdateUserCommand::__construct | 1 | 100.0% |
| App\Identity\Application\Command\UpdateUserHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Port\GoogleIdentity::__construct | 1 | 100.0% |
| App\Identity\Application\Query\AdminUserView::__construct | 1 | 100.0% |
| App\Identity\Application\Query\AdminUserView::fromUser | 1 | 100.0% |
| App\Identity\Application\Query\AdminUserView::toArray | 1 | 100.0% |
| App\Identity\Application\Query\CurrentUserView::__construct | 1 | 100.0% |
| App\Identity\Application\Query\CurrentUserView::fromUser | 1 | 100.0% |
| App\Identity\Application\Query\CurrentUserView::toArray | 1 | 100.0% |
| App\Identity\Application\Query\GetCurrentUserHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Query\GetCurrentUserQuery::__construct | 1 | 100.0% |
| App\Identity\Application\Query\ListUsersHandler::__construct | 1 | 100.0% |
| App\Identity\Application\Query\ListUsersHandler::handle | 1 | 100.0% |
| App\Identity\Application\Query\ListUsersQuery::__construct | 1 | 100.0% |
| App\Identity\Domain\Exceptions\AdminSelfAction::cannotRevokeSelf | 1 | 100.0% |
| App\Identity\Domain\Exceptions\AdminSelfAction::cannotDeleteSelf | 1 | 100.0% |
| App\Identity\Domain\Exceptions\AdminSelfAction::cannotSuspendSelf | 1 | 100.0% |
| App\Identity\Domain\Exceptions\EmailAlreadyInUse::of | 1 | 100.0% |
| App\Identity\Domain\Exceptions\InvalidCurrentPassword::create | 1 | 100.0% |
| App\Identity\Domain\Exceptions\UserNotFound::of | 1 | 100.0% |
| App\Identity\Domain\Exceptions\WeakPassword::of | 1 | 100.0% |
| App\Identity\Domain\User::__construct | 1 | 100.0% |
| App\Identity\Domain\User::register | 1 | 100.0% |
| App\Identity\Domain\User::registerWithoutPassword | 1 | 100.0% |
| App\Identity\Domain\User::update | 1 | 100.0% |
| App\Identity\Domain\User::changePassword | 1 | 100.0% |
| App\Identity\Domain\User::grantAdmin | 1 | 100.0% |
| App\Identity\Domain\User::revokeAdmin | 1 | 100.0% |
| App\Identity\Domain\User::isAdmin | 1 | 100.0% |
| App\Identity\Domain\User::suspend | 1 | 100.0% |
| App\Identity\Domain\User::activate | 1 | 100.0% |
| App\Identity\Domain\User::status | 1 | 100.0% |
| App\Identity\Domain\User::id | 1 | 100.0% |
| App\Identity\Domain\User::email | 1 | 100.0% |
| App\Identity\Domain\User::password | 1 | 100.0% |
| App\Identity\Domain\User::hasPassword | 1 | 100.0% |
| App\Identity\Domain\User::preferredCurrency | 1 | 100.0% |
| App\Identity\Domain\User::name | 1 | 100.0% |
| App\Identity\Domain\User::surnames | 1 | 100.0% |
| App\Identity\Domain\User::createdAt | 1 | 100.0% |
| App\Identity\Domain\User::avatarName | 1 | 100.0% |
| App\Identity\Domain\User::changeAvatar | 1 | 100.0% |
| App\Identity\Domain\UserIdentity::provider | 1 | 100.0% |
| App\Identity\Domain\UserIdentity::subject | 1 | 100.0% |
| App\Identity\Domain\UserIdentity::userId | 1 | 100.0% |
| App\Identity\Domain\UserIdentity::createdAt | 1 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::fromDate | 1 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::age | 1 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::toDateTimeImmutable | 1 | 100.0% |
| App\Identity\Domain\ValueObject\BirthDate::value | 1 | 100.0% |
| App\Identity\Domain\ValueObject\Email::__toString | 1 | 100.0% |
| App\Identity\Domain\ValueObject\Email::value | 1 | 100.0% |
| App\Identity\Domain\ValueObject\Email::equals | 1 | 100.0% |
| App\Identity\Domain\ValueObject\HashedPassword::__toString | 1 | 100.0% |
| App\Identity\Domain\ValueObject\HashedPassword::value | 1 | 100.0% |
| App\Identity\Infrastructure\Console\GrantAdminCommand::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Console\GrantAdminCommand::configure | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\Admin\ListUsersController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\Admin\ListUsersController::list | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\ChangePasswordController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\DeleteUserController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::config | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\MeController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\RegisterUserController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\SetMyAvatarController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Controllers\UpdateUserController::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::save | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::ofProviderSubject | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::save | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::remove | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofId | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofEmail | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::existsByEmail | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::paginate | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::count | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::getSQLDeclaration | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::getSQLDeclaration | 1 | 100.0% |
| App\Identity\Infrastructure\Persistence\Doctrine\Type\UserIdType::className | 1 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleAuthenticator::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationSuccess | 1 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationFailure | 1 | 100.0% |
| App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::fromDomain | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::userId | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::preferredCurrency | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::getUserIdentifier | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::getPassword | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::isAdmin | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::isSuspended | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SecurityUser::eraseCredentials | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SymfonyPasswordHasher::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SymfonyPasswordHasher::hash | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SymfonyPasswordHasher::verify | 1 | 100.0% |
| App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Security\UserChecker::checkPostAuth | 1 | 100.0% |
| App\Identity\Infrastructure\Security\UserProvider::__construct | 1 | 100.0% |
| App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::__construct | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Currency::__toString | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Currency::code | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Currency::minorUnits | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Currency::equals | 1 | 100.0% |
| App\Shared\Domain\ValueObject\DateRange::fromIso | 1 | 100.0% |
| App\Shared\Domain\ValueObject\DateRange::start | 1 | 100.0% |
| App\Shared\Domain\ValueObject\DateRange::end | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Money::__construct | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Money::amount | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Money::currency | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Money::add | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Uuid::__toString | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Uuid::generate | 1 | 100.0% |
| App\Shared\Domain\ValueObject\Uuid::value | 1 | 100.0% |
| App\Shared\Infrastructure\Console\PruneMediaCommand::__construct | 1 | 100.0% |
| App\Shared\Infrastructure\Console\PruneMediaCommand::configure | 1 | 100.0% |
| App\Shared\Infrastructure\Controllers\FileController::__construct | 1 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Schema\ForeignKeyConstraintListener::postGenerateSchema | 1 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\CurrencyType::getSQLDeclaration | 1 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\UuidType::getSQLDeclaration | 1 | 100.0% |
| App\Shared\Infrastructure\Storage\ImageStorage::__construct | 1 | 100.0% |
| App\Shared\Infrastructure\Storage\ImageStorage::absolutePath | 1 | 100.0% |
| App\Shared\Infrastructure\Storage\SignedImageUrl::__construct | 1 | 100.0% |
| App\Trip\Application\Command\AcceptInvitationCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\AcceptInvitationHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\AcceptInvitationHandler::handle | 1 | 100.0% |
| App\Trip\Application\Command\ArchiveTripCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ArchiveTripHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ArchiveTripHandler::handle | 1 | 100.0% |
| App\Trip\Application\Command\CancelInvitationCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\CancelInvitationHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ChangeMemberRoleCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ChangeMemberRoleHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ChangeTripImageCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\ChangeTripImageHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\CreateTripCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\CreateTripHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\CreateTripHandler::handle | 1 | 100.0% |
| App\Trip\Application\Command\DeclineInvitationCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\DeclineInvitationHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\DeleteTripCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\DeleteTripHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\DeleteTripHandler::handle | 1 | 100.0% |
| App\Trip\Application\Command\InviteMemberCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\InviteMemberHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\RemoveMemberCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\RemoveMemberHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\UpdateTripCommand::__construct | 1 | 100.0% |
| App\Trip\Application\Command\UpdateTripHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Command\UpdateTripHandler::handle | 1 | 100.0% |
| App\Trip\Application\OwnershipTransferOnUserDeletion::__construct | 1 | 100.0% |
| App\Trip\Application\Port\MemberSummary::__construct | 1 | 100.0% |
| App\Trip\Application\Query\GetTripHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Query\GetTripMembersHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Query\GetTripMembersHandler::memberEntry | 1 | 100.0% |
| App\Trip\Application\Query\GetTripMembersQuery::__construct | 1 | 100.0% |
| App\Trip\Application\Query\GetTripQuery::__construct | 1 | 100.0% |
| App\Trip\Application\Query\ListMyInvitationsHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Query\ListMyInvitationsQuery::__construct | 1 | 100.0% |
| App\Trip\Application\Query\ListTripsHandler::__construct | 1 | 100.0% |
| App\Trip\Application\Query\ListTripsHandler::handle | 1 | 100.0% |
| App\Trip\Application\Query\ListTripsQuery::__construct | 1 | 100.0% |
| App\Trip\Application\Query\TripMembersView::__construct | 1 | 100.0% |
| App\Trip\Application\Query\TripMembersView::toArray | 1 | 100.0% |
| App\Trip\Application\Query\TripView::__construct | 1 | 100.0% |
| App\Trip\Application\Query\TripView::fromTrip | 1 | 100.0% |
| App\Trip\Application\Query\TripView::toArray | 1 | 100.0% |
| App\Trip\Application\TripAccess::__construct | 1 | 100.0% |
| App\Trip\Application\TripAccess::findReadable | 1 | 100.0% |
| App\Trip\Application\TripAccess::getReadable | 1 | 100.0% |
| App\Trip\Domain\Exceptions\AlreadyMemberOrInvited::create | 1 | 100.0% |
| App\Trip\Domain\Exceptions\InvitationNotFound::withId | 1 | 100.0% |
| App\Trip\Domain\Exceptions\InviteeNotFound::withEmail | 1 | 100.0% |
| App\Trip\Domain\Exceptions\MemberNotFound::withId | 1 | 100.0% |
| App\Trip\Domain\Exceptions\TripAccessDenied::cannotWriteExpense | 1 | 100.0% |
| App\Trip\Domain\Exceptions\TripAccessDenied::cannotManageTrip | 1 | 100.0% |
| App\Trip\Domain\Exceptions\TripNotFound::withId | 1 | 100.0% |
| App\Trip\Domain\Trip::__construct | 1 | 100.0% |
| App\Trip\Domain\Trip::create | 1 | 100.0% |
| App\Trip\Domain\Trip::update | 1 | 100.0% |
| App\Trip\Domain\Trip::transferOwnershipTo | 1 | 100.0% |
| App\Trip\Domain\Trip::id | 1 | 100.0% |
| App\Trip\Domain\Trip::ownerId | 1 | 100.0% |
| App\Trip\Domain\Trip::isOwnedBy | 1 | 100.0% |
| App\Trip\Domain\Trip::name | 1 | 100.0% |
| App\Trip\Domain\Trip::destination | 1 | 100.0% |
| App\Trip\Domain\Trip::dateRange | 1 | 100.0% |
| App\Trip\Domain\Trip::currency | 1 | 100.0% |
| App\Trip\Domain\Trip::budget | 1 | 100.0% |
| App\Trip\Domain\Trip::createdAt | 1 | 100.0% |
| App\Trip\Domain\Trip::imageName | 1 | 100.0% |
| App\Trip\Domain\Trip::changeImage | 1 | 100.0% |
| App\Trip\Domain\Trip::archive | 1 | 100.0% |
| App\Trip\Domain\Trip::isArchived | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::invite | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::accept | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::decline | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::id | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::tripId | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::inviteeId | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::inviterId | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::role | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::status | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::isPending | 1 | 100.0% |
| App\Trip\Domain\TripInvitation::createdAt | 1 | 100.0% |
| App\Trip\Domain\TripMember::tripId | 1 | 100.0% |
| App\Trip\Domain\TripMember::userId | 1 | 100.0% |
| App\Trip\Domain\TripMember::role | 1 | 100.0% |
| App\Trip\Domain\TripMember::createdAt | 1 | 100.0% |
| App\Trip\Domain\ValueObject\TripRole::canManageTrip | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\AcceptInvitationController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ArchiveTripController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\CancelInvitationController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ChangeMemberRoleController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\CreateTripController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\DeclineInvitationController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\DeleteTripController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\DeleteTripImageController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\GetTripController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\InviteMemberController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ListMyInvitationsController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ListMyInvitationsController::list | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ListTripMembersController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ListTripsController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\ListTripsController::list | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\RemoveMemberController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\SetTripImageController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Controllers\UpdateTripController::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::save | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::remove | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::ofId | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::pendingFor | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::pendingOfTrip | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripInvitationRepository::pendingOfInvitee | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::save | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::remove | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::roleOf | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::find | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::ofTrip | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripMemberRepository::ofUser | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripRepository::__construct | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripRepository::save | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripRepository::remove | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripRepository::ofId | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\DoctrineTripRepository::ofOwner | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\InvitationIdType::className | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\InvitationStatusType::getSQLDeclaration | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\MemberIdType::className | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\OwnerIdType::className | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\TripIdType::className | 1 | 100.0% |
| App\Trip\Infrastructure\Persistence\Doctrine\Type\TripRoleType::getSQLDeclaration | 1 | 100.0% |
| App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser::securityUser | 1 | 100.0% |
| App\Shared\Infrastructure\Persistence\Doctrine\Type\UuidType::className | 0 | 100.0% |