diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index d347c6e..beb993c 100644 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":"pest_3.8.4","defects":{"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\CreateItemRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\EditAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\FetchAListOfItemsRequestTest::__pest_evaluable_it_can_perform_the_request":5,"P\\Tests\\Requests\\Items\\FetchAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":7},"times":{"P\\Tests\\Requests\\ManualEntries\\FetchAListOfManualEntriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\GetNextReferenceNumberRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\CreateAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.004,"P\\Tests\\Requests\\BusinessYears\\FetchAListOfBusinessYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\FetchAListOfFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Notes\\FetchANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Reports\\JournalRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFilesOfAccountingEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\IssueAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_store_and_retrieve_an_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_handles_serialization_and_unserialization_correctly":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_uses_configured_cache_store":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_falls_back_to_default_cache_store_when_bexio_cache_store_is_not_configured":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_cached_data_cannot_be_decrypted":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_forget_cached_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_no_authenticator_is_cached":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_refreshes_expired_token_automatically":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_encrypts_the_authenticator_when_storing":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAListOfContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DefaultPositions\\CreateADefaultPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\ContactAdditionalAddresses\\DeleteAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\CreateContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\EditAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Accounts\\SearchAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\DeleteATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ManualEntries\\FetchFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\EditAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Languages\\FetchAListOfLanguagesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchACompanyProfileRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\Users\\FetchAuthenticatedUserRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\EditAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\FetchAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchAListOfCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactSectors\\FetchAListOfContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchAListOfTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\CompanyProfiles\\FetchAListOfCompanyProfilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_throws_exception_when_required_config_is_missing":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_a_new_instance_each_time":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_resolves_to_a_ConnectWithOAuth_instance":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_ConnectWithOAuth_with_config_values":0,"P\\Tests\\Requests\\Invoices\\SubPositions\\CreateASubPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Core\\ArchTest::__pest_evaluable_it_will_not_use_any_debug_function":0.212,"P\\Tests\\Requests\\ContactAdditionalAddresses\\CreateContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_with_custom_redirect":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_authenticator_without_refresh_token":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_always_returns_success_result_for_any_connector":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_without_custom_redirect":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_expired_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_success_result_using_static_method":0,"P\\Tests\\Requests\\Titles\\SearchTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\DownloadFIleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchAListOfBankAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\FetchAListOfSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\SearchContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\CreateContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.019,"P\\Tests\\Requests\\ContactRelations\\SearchContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactGroups\\SearchContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\DeleteATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\CreateContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\DeleteANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\RestoreAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetASingleFileRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\DeleteAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\OAuth\\EndSessionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\EditASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactAdditionalAddresses\\SearchContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessActivities\\FetchAListOfBusinessActivitiesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\DeleteASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\BankAccounts\\FetchASingleBankAccountRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\DeleteACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Notes\\CreateANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DeleteAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\IbanPayments\\CreateIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\SearchFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\BusinessYears\\FetchABusinessYearRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\DocumentSettings\\FetchAListOfDocumentSettingsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\SearchContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AccountGroups\\FetchAListOfAccountGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\CreateATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\QrPayments\\CreateQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\FetchAListOfPaymentsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Salutations\\FetchASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\OAuth\\OpenIDConfigurationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\SearchNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\DeleteFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OpenID\\FetchUserInfoRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Files\\GetAFilePreviewRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAListOfContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\ShowPdfRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\VatPeriods\\FetchAVatPeriodRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Units\\FetchAListOfUnitsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Accounts\\FetchAListOfAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Users\\FetchAListOfUsersRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\DeleteAnAdditonalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\FetchAListOfInvoicesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\FetchAListOfContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\FetchAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\EditAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\CalendarYears\\FetchACalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\AdditionalAddresses\\SearchAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DeleteAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Salutations\\CreateASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\CreateManualEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\Salutations\\SearchSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\EditACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\EditANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Notes\\FetchAListOfNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\CreateAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\IbanPayments\\GetIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Payments\\DeleteAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Projects\\FetchAListOfProjectsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\CreateCurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\EditAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\EditAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\CancelAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\DeleteAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\PaymentTypes\\FetchAListOfPaymentTypesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\EditATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\VatPeriods\\FetchAListOfVatPeriodsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\DeleteAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchExchangeRatesForCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\SetIssuedInvoiceToDraftRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Payments\\CancelAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchAllPossibleCurrencyCodesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactGroups\\FetchAListOfContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\QrPayments\\GetQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Items\\FetchAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.357,"P\\Tests\\Requests\\Items\\SearchItemsRequestTest::__pest_evaluable_it_can_perform_the_request":0.25,"P\\Tests\\Requests\\Items\\CreateItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.196,"P\\Tests\\Requests\\Items\\EditAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.542,"P\\Tests\\Requests\\Items\\DeleteAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.394,"P\\Tests\\Requests\\Items\\FetchAListOfItemsRequestTest::__pest_evaluable_it_can_perform_the_request":0.326}} \ No newline at end of file +{"version":"pest_3.8.4","defects":{"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\CreateItemRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\EditAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Items\\FetchAListOfItemsRequestTest::__pest_evaluable_it_can_perform_the_request":5,"P\\Tests\\Requests\\Items\\FetchAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\Countries\\CreateCountryRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\Countries\\EditACountryRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\Countries\\DeleteACountryRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\Countries\\FetchACountryRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\Countries\\FetchAListOfCountriesRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\Countries\\SearchCountriesRequestTest::__pest_evaluable_it_can_perform_the_request":8},"times":{"P\\Tests\\Requests\\ManualEntries\\FetchAListOfManualEntriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\GetNextReferenceNumberRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\CreateAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.009,"P\\Tests\\Requests\\BusinessYears\\FetchAListOfBusinessYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\FetchAListOfFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Reports\\JournalRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFilesOfAccountingEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\IssueAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_store_and_retrieve_an_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_handles_serialization_and_unserialization_correctly":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_uses_configured_cache_store":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_falls_back_to_default_cache_store_when_bexio_cache_store_is_not_configured":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_cached_data_cannot_be_decrypted":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_forget_cached_authenticator":0.002,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_no_authenticator_is_cached":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_refreshes_expired_token_automatically":0.002,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_encrypts_the_authenticator_when_storing":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAListOfContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DefaultPositions\\CreateADefaultPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactAdditionalAddresses\\DeleteAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\CreateContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\EditAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Accounts\\SearchAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\DeleteATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\EditAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Languages\\FetchAListOfLanguagesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchACompanyProfileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Users\\FetchAuthenticatedUserRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\EditAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchAListOfCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactGroups\\FetchAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\FetchAListOfContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchAListOfTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchAListOfCompanyProfilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_throws_exception_when_required_config_is_missing":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_a_new_instance_each_time":0.002,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_resolves_to_a_ConnectWithOAuth_instance":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_ConnectWithOAuth_with_config_values":0.003,"P\\Tests\\Requests\\Invoices\\SubPositions\\CreateASubPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Core\\ArchTest::__pest_evaluable_it_will_not_use_any_debug_function":0.269,"P\\Tests\\Requests\\ContactAdditionalAddresses\\CreateContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_with_custom_redirect":0.002,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_authenticator_without_refresh_token":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_always_returns_success_result_for_any_connector":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_without_custom_redirect":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_expired_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_success_result_using_static_method":0,"P\\Tests\\Requests\\Titles\\SearchTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DownloadFIleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchAListOfBankAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Salutations\\FetchAListOfSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\SearchContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\CreateContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\ContactRelations\\SearchContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\SearchContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\DeleteATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\CreateContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.036,"P\\Tests\\Requests\\Notes\\DeleteANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\RestoreAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetASingleFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\DeleteAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OAuth\\EndSessionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\EditASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\SearchContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessActivities\\FetchAListOfBusinessActivitiesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\DeleteASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\BankAccounts\\FetchASingleBankAccountRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\DeleteACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\CreateANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DeleteAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\IbanPayments\\CreateIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\SearchFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessYears\\FetchABusinessYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\DocumentSettings\\FetchAListOfDocumentSettingsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\SearchContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\AccountGroups\\FetchAListOfAccountGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\CreateATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\CreateQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\FetchAListOfPaymentsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\FetchASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OAuth\\OpenIDConfigurationRequestTest::__pest_evaluable_it_can_perform_the_request":0.006,"P\\Tests\\Requests\\Notes\\SearchNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ManualEntries\\DeleteFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OpenID\\FetchUserInfoRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetAFilePreviewRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAListOfContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\ShowPdfRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\VatPeriods\\FetchAVatPeriodRequestTest::__pest_evaluable_it_can_perform_the_request":0.005,"P\\Tests\\Requests\\Units\\FetchAListOfUnitsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Accounts\\FetchAListOfAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Users\\FetchAListOfUsersRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\DeleteAnAdditonalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAListOfInvoicesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAListOfContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\EditAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\CalendarYears\\FetchACalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\SearchAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DeleteAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\CreateASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\CreateManualEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\SearchSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\EditACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\EditANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchAListOfNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Files\\CreateAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\IbanPayments\\GetIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\DeleteAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Projects\\FetchAListOfProjectsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\CreateCurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\EditAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\EditAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Invoices\\CancelAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\DeleteAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\PaymentTypes\\FetchAListOfPaymentTypesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\EditATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\VatPeriods\\FetchAListOfVatPeriodsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\DeleteAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchExchangeRatesForCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\SetIssuedInvoiceToDraftRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\CancelAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchAllPossibleCurrencyCodesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAListOfContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\GetQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Items\\FetchAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.384,"P\\Tests\\Requests\\Items\\SearchItemsRequestTest::__pest_evaluable_it_can_perform_the_request":0.32,"P\\Tests\\Requests\\Items\\CreateItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.335,"P\\Tests\\Requests\\Items\\EditAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.373,"P\\Tests\\Requests\\Items\\DeleteAnItemRequestTest::__pest_evaluable_it_can_perform_the_request":0.5,"P\\Tests\\Requests\\Items\\FetchAListOfItemsRequestTest::__pest_evaluable_it_can_perform_the_request":0.169,"P\\Tests\\Requests\\Countries\\CreateCountryRequestTest::__pest_evaluable_it_can_perform_the_request":0.233,"P\\Tests\\Requests\\Countries\\EditACountryRequestTest::__pest_evaluable_it_can_perform_the_request":0.497,"P\\Tests\\Requests\\Countries\\DeleteACountryRequestTest::__pest_evaluable_it_can_perform_the_request":0.309,"P\\Tests\\Requests\\Countries\\FetchACountryRequestTest::__pest_evaluable_it_can_perform_the_request":0.292,"P\\Tests\\Requests\\Countries\\FetchAListOfCountriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.163,"P\\Tests\\Requests\\Countries\\SearchCountriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.155}} \ No newline at end of file diff --git a/README.md b/README.md index a76a101..d262572 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ This package was developed to give you a quick start to the Bexio API. - [Contact Relations](#contact-relations) - [Contacts](#contacts) - [Contact Sectors](#contact-sectors) + - [Countries](#countries) - [Currencies](#currencies) - [Files](#files) - [Iban Payments](#iban-payments) @@ -681,9 +682,10 @@ We provide enums for the following values: | ContactRelations: OrderByEnum | ID(), ID_ASC(), ID_DESC(), CONTACT_ID(), CONTACT_ID_ASC(), CONTACT_ID_DESC(), CONTACT_SUB_ID(), CONTACT_SUB_ID_ASC(), CONTACT_SUB_ID_DESC(), UPDATED_AT(), UPDATED_AT_ASC(), UPDATED_AT_DESC() | | Contacts: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NR(), NR_ASC(), NR_DESC(), NAME_1(), NAME_1_ASC(), NAME_1_DESC(), UPDATED_AT(), UPDATED_AT_ASC(), UPDATED_AT_DESC() | | ContactSectors: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC() | +| Countries: CountriesOrderByEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC(), NAME_SHORT(), NAME_SHORT_ASC(), NAME_SHORT_DESC() | | IbanPayments: AllowanceTypeEnum | FEE_PAID_BY_SENDER(), FEE_PAID_BY_RECIPIENT(), FEE_SPLIT(), NO_FEE() | | IbanPayments: StatusEnum | OPEN(), TRANSFERRED(), DOWNLOADED(), ERROR(), CANCELLED() | -| Items: OrderByEnum | ID(), ID_ASC(), ID_DESC(), INTERN_NAME(), INTERN_NAME_ASC(), INTERN_NAME_DESC() | +| Items: ItemsOrderByEnum | ID(), ID_ASC(), ID_DESC(), INTERN_NAME(), INTERN_NAME_ASC(), INTERN_NAME_DESC() | | ManualEntries: TypeEnum | MANUAL_SINGLE_ENTRY(), MANUAL_GROUP_ENTRY(), MANUAL_COMPOUND_ENTRY() | | QrPayments: AllowanceTypeEnum | FEE_PAID_BY_SENDER(), FEE_PAID_BY_RECIPIENT(), FEE_SPLIT(), NO_FEE() | | QrPayments: StatusEnum | OPEN(), TRANSFERRED(), DOWNLOADED(), ERROR(), CANCELLED() | @@ -2082,6 +2084,69 @@ $response = $connector->send(new DeleteAnItemRequest( )); ``` +### Countries +```php +/** + * Fetch A List Of Countries + */ +$countries = $connector->send(new FetchAListOfCountriesRequest())->dto(); +``` + +```php +/** + * Fetch A Country + */ +$country = $connector->send(new FetchACountryRequest( + country_id: 1 +))->dto(); +``` + +```php +/** + * Search Countries + */ +$countries = $connector->send(new SearchCountriesRequest( + searchField: 'name', + searchTerm: 'Switzerland' +))->dto(); +``` + +```php +/** + * Create Country + */ +$country = $connector->send(new CreateCountryRequest( + data: new CreateEditCountryDTO( + name: 'Switzerland', + name_short: 'CH', + iso3166_alpha2: 'CH' + ) +))->dto(); +``` + +```php +/** + * Edit Country + */ +$country = $connector->send(new EditACountryRequest( + country_id: 1, + data: new CreateEditCountryDTO( + name: 'Switzerland', + name_short: 'CH', + iso3166_alpha2: 'CH' + ) +))->dto(); +``` + +```php +/** + * Delete Country + */ +$response = $connector->send(new DeleteACountryRequest( + country_id: 1 +)); +``` + ### VAT Periods ```php /** diff --git a/src/Dto/Countries/CountryDTO.php b/src/Dto/Countries/CountryDTO.php new file mode 100644 index 0000000..8e2c800 --- /dev/null +++ b/src/Dto/Countries/CountryDTO.php @@ -0,0 +1,43 @@ +failed()) { + throw new \Exception('Failed to create DTO from Response'); + } + + $data = $response->json(); + + return self::fromArray($data); + } + + public static function fromArray(array $data): self + { + if (! $data) { + throw new Exception('Unable to create DTO. Data missing from response.'); + } + + return new self( + id: Arr::get($data, 'id'), + name: Arr::get($data, 'name'), + name_short: Arr::get($data, 'name_short'), + iso3166_alpha2: Arr::get($data, 'iso_3166_alpha2'), + ); + } +} diff --git a/src/Dto/Countries/CreateEditCountryDTO.php b/src/Dto/Countries/CreateEditCountryDTO.php new file mode 100644 index 0000000..b71d6c7 --- /dev/null +++ b/src/Dto/Countries/CreateEditCountryDTO.php @@ -0,0 +1,41 @@ +failed()) { + throw new \Exception('Failed to create DTO from Response'); + } + + $data = $response->json(); + + return self::fromArray($data); + } + + public static function fromArray(array $data): self + { + if (! $data) { + throw new Exception('Unable to create DTO. Data missing from response.'); + } + + return new self( + name: Arr::get($data, 'name'), + name_short: Arr::get($data, 'name_short'), + iso3166_alpha2: Arr::get($data, 'iso3166_alpha2'), + ); + } +} diff --git a/src/Enums/Countries/CountriesOrderByEnum.php b/src/Enums/Countries/CountriesOrderByEnum.php new file mode 100644 index 0000000..032c300 --- /dev/null +++ b/src/Enums/Countries/CountriesOrderByEnum.php @@ -0,0 +1,49 @@ + 'id', + 'ID_ASC' => 'id_asc', + 'ID_DESC' => 'id_desc', + 'NAME' => 'name', + 'NAME_ASC' => 'name_asc', + 'NAME_DESC' => 'name_desc', + 'NAME_SHORT' => 'name_short', + 'NAME_SHORT_ASC' => 'name_short_asc', + 'NAME_SHORT_DESC' => 'name_short_desc', + ]; + } + + protected static function labels(): array + { + return [ + 'ID' => 'Id', + 'ID_ASC' => 'Id Ascending', + 'ID_DESC' => 'Id Descending', + 'NAME' => 'Name', + 'NAME_ASC' => 'Name Ascending', + 'NAME_DESC' => 'Name Descending', + 'NAME_SHORT' => 'Name Short', + 'NAME_SHORT_ASC' => 'Name Short Ascending', + 'NAME_SHORT_DESC' => 'Name Short Descending', + ]; + } +} diff --git a/src/Enums/Items/OrderByEnum.php b/src/Enums/Items/ItemsOrderByEnum.php similarity index 95% rename from src/Enums/Items/OrderByEnum.php rename to src/Enums/Items/ItemsOrderByEnum.php index 5eb3de1..4e54a23 100644 --- a/src/Enums/Items/OrderByEnum.php +++ b/src/Enums/Items/ItemsOrderByEnum.php @@ -12,7 +12,7 @@ * @method static self INTERN_NAME_ASC() * @method static self INTERN_NAME_DESC() */ -final class OrderByEnum extends Enum +final class ItemsOrderByEnum extends Enum { protected static function values(): array { diff --git a/src/Requests/Countries/CreateCountryRequest.php b/src/Requests/Countries/CreateCountryRequest.php new file mode 100644 index 0000000..75a8597 --- /dev/null +++ b/src/Requests/Countries/CreateCountryRequest.php @@ -0,0 +1,48 @@ +data; + + if (! $body instanceof CreateEditCountryDTO) { + $body = CreateEditCountryDTO::fromArray($body); + } + + return $body->toArray(); + } + + public function createDtoFromResponse(Response $response): CountryDTO + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + return CountryDTO::fromArray($response->json()); + } +} diff --git a/src/Requests/Countries/DeleteACountryRequest.php b/src/Requests/Countries/DeleteACountryRequest.php new file mode 100644 index 0000000..318cbb6 --- /dev/null +++ b/src/Requests/Countries/DeleteACountryRequest.php @@ -0,0 +1,31 @@ +country_id; + } + + public function createDtoFromResponse(Response $response): mixed + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + return $response->json(); + } +} diff --git a/src/Requests/Countries/EditACountryRequest.php b/src/Requests/Countries/EditACountryRequest.php new file mode 100644 index 0000000..4c7405f --- /dev/null +++ b/src/Requests/Countries/EditACountryRequest.php @@ -0,0 +1,49 @@ +country_id; + } + + protected function defaultBody(): array + { + $body = $this->data; + + if (! $body instanceof CreateEditCountryDTO) { + $body = CreateEditCountryDTO::fromArray($body); + } + + return $body->toArray(); + } + + public function createDtoFromResponse(Response $response): CountryDTO + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + return CountryDTO::fromArray($response->json()); + } +} diff --git a/src/Requests/Countries/FetchACountryRequest.php b/src/Requests/Countries/FetchACountryRequest.php new file mode 100644 index 0000000..102e928 --- /dev/null +++ b/src/Requests/Countries/FetchACountryRequest.php @@ -0,0 +1,32 @@ +country_id; + } + + public function createDtoFromResponse(Response $response): CountryDTO + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + return CountryDTO::fromResponse($response); + } +} diff --git a/src/Requests/Countries/FetchAListOfCountriesRequest.php b/src/Requests/Countries/FetchAListOfCountriesRequest.php new file mode 100644 index 0000000..4e65a94 --- /dev/null +++ b/src/Requests/Countries/FetchAListOfCountriesRequest.php @@ -0,0 +1,53 @@ + $this->orderBy instanceof CountriesOrderByEnum ? $this->orderBy->value : $this->orderBy, + 'limit' => $this->limit, + 'offset' => $this->offset, + ]; + } + + public function createDtoFromResponse(Response $response): Collection + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + $res = $response->json(); + + $countries = collect(); + + foreach ($res as $country) { + $countries->push(CountryDTO::fromArray($country)); + } + + return $countries; + } +} diff --git a/src/Requests/Countries/SearchCountriesRequest.php b/src/Requests/Countries/SearchCountriesRequest.php new file mode 100644 index 0000000..ec96718 --- /dev/null +++ b/src/Requests/Countries/SearchCountriesRequest.php @@ -0,0 +1,72 @@ + $this->orderBy instanceof CountriesOrderByEnum ? $this->orderBy->value : $this->orderBy, + 'limit' => $this->limit, + 'offset' => $this->offset, + ]; + } + + protected function defaultBody(): array + { + return [ + [ + 'field' => $this->searchField, + 'value' => $this->searchTerm, + 'criteria' => $this->searchCriteria instanceof SearchCriteriaEnum ? $this->searchCriteria->value : $this->searchCriteria, + ], + ]; + } + + public function createDtoFromResponse(Response $response): Collection + { + if (! $response->successful()) { + throw new Exception('Request was not successful. Unable to create DTO.'); + } + + $res = $response->json(); + + $countries = collect(); + + foreach ($res as $country) { + $countries->push(CountryDTO::fromArray($country)); + } + + return $countries; + } +} diff --git a/src/Requests/Items/FetchAListOfItemsRequest.php b/src/Requests/Items/FetchAListOfItemsRequest.php index 2beaa23..fdf03cb 100644 --- a/src/Requests/Items/FetchAListOfItemsRequest.php +++ b/src/Requests/Items/FetchAListOfItemsRequest.php @@ -3,7 +3,7 @@ namespace CodebarAg\Bexio\Requests\Items; use CodebarAg\Bexio\Dto\Items\ItemDTO; -use CodebarAg\Bexio\Enums\Items\OrderByEnum; +use CodebarAg\Bexio\Enums\Items\ItemsOrderByEnum; use Exception; use Illuminate\Support\Collection; use Saloon\Enums\Method; @@ -15,7 +15,7 @@ class FetchAListOfItemsRequest extends Request protected Method $method = Method::GET; public function __construct( - public readonly string|OrderByEnum $orderBy = 'id', + public readonly string|ItemsOrderByEnum $orderBy = 'id', public readonly int $limit = 500, public readonly int $offset = 0, ) {} @@ -28,7 +28,7 @@ public function resolveEndpoint(): string public function defaultQuery(): array { return [ - 'order_by' => $this->orderBy instanceof OrderByEnum ? $this->orderBy->value : $this->orderBy, + 'order_by' => $this->orderBy instanceof ItemsOrderByEnum ? $this->orderBy->value : $this->orderBy, 'limit' => $this->limit, 'offset' => $this->offset, ]; diff --git a/src/Requests/Items/SearchItemsRequest.php b/src/Requests/Items/SearchItemsRequest.php index 91e62c4..fd7c118 100644 --- a/src/Requests/Items/SearchItemsRequest.php +++ b/src/Requests/Items/SearchItemsRequest.php @@ -3,7 +3,7 @@ namespace CodebarAg\Bexio\Requests\Items; use CodebarAg\Bexio\Dto\Items\ItemDTO; -use CodebarAg\Bexio\Enums\Items\OrderByEnum; +use CodebarAg\Bexio\Enums\Items\ItemsOrderByEnum; use CodebarAg\Bexio\Enums\SearchCriteriaEnum; use Exception; use Illuminate\Support\Collection; @@ -23,7 +23,7 @@ public function __construct( public readonly string $searchField, public readonly string $searchTerm, public readonly string|SearchCriteriaEnum $searchCriteria = 'like', - public readonly string|OrderByEnum $orderBy = 'id', + public readonly string|ItemsOrderByEnum $orderBy = 'id', public readonly int $limit = 500, public readonly int $offset = 0, ) {} @@ -36,7 +36,7 @@ public function resolveEndpoint(): string public function defaultQuery(): array { return [ - 'order_by' => $this->orderBy instanceof OrderByEnum ? $this->orderBy->value : $this->orderBy, + 'order_by' => $this->orderBy instanceof ItemsOrderByEnum ? $this->orderBy->value : $this->orderBy, 'limit' => $this->limit, 'offset' => $this->offset, ]; diff --git a/tests/Fixtures/Saloon/Countries/create-country.json b/tests/Fixtures/Saloon/Countries/create-country.json new file mode 100644 index 0000000..f57c02b --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/create-country.json @@ -0,0 +1,24 @@ +{ + "statusCode": 201, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:12 GMT", + "Content-Type": "application\/json", + "Content-Length": "72", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e8cec7503b5-ZRH", + "x-ratelimit-remaining-minute": "998", + "ratelimit-limit": "1000", + "ratelimit-remaining": "998", + "ratelimit-reset": "48", + "x-ratelimit-limit-minute": "1000", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "{\"id\":47,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"}", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Countries/delete-a-country.json b/tests/Fixtures/Saloon/Countries/delete-a-country.json new file mode 100644 index 0000000..2a4d22c --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/delete-a-country.json @@ -0,0 +1,24 @@ +{ + "statusCode": 200, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:13 GMT", + "Content-Type": "application\/json", + "Content-Length": "16", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e936c981a65-ZRH", + "ratelimit-reset": "47", + "x-ratelimit-limit-minute": "1000", + "x-ratelimit-remaining-minute": "993", + "ratelimit-limit": "1000", + "ratelimit-remaining": "993", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "{\"success\":true}", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Countries/edit-a-country.json b/tests/Fixtures/Saloon/Countries/edit-a-country.json new file mode 100644 index 0000000..9dd6641 --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/edit-a-country.json @@ -0,0 +1,24 @@ +{ + "statusCode": 200, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:12 GMT", + "Content-Type": "application\/json", + "Content-Length": "79", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e90686fbc47-ZRH", + "ratelimit-reset": "48", + "x-ratelimit-limit-minute": "1000", + "x-ratelimit-remaining-minute": "995", + "ratelimit-limit": "1000", + "ratelimit-remaining": "995", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "{\"id\":4,\"name\":\"Updated Country Name\",\"name_short\":\"BR\",\"iso_3166_alpha2\":\"BR\"}", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Countries/fetch-a-country.json b/tests/Fixtures/Saloon/Countries/fetch-a-country.json new file mode 100644 index 0000000..066018c --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/fetch-a-country.json @@ -0,0 +1,24 @@ +{ + "statusCode": 200, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:13 GMT", + "Content-Type": "application\/json", + "Content-Length": "66", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e956a7831a4-ZRH", + "ratelimit-reset": "47", + "x-ratelimit-limit-minute": "1000", + "x-ratelimit-remaining-minute": "991", + "ratelimit-limit": "1000", + "ratelimit-remaining": "991", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "{\"id\":5,\"name\":\"Kanada\",\"name_short\":\"CDN\",\"iso_3166_alpha2\":\"CA\"}", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Countries/fetch-a-list-of-countries.json b/tests/Fixtures/Saloon/Countries/fetch-a-list-of-countries.json new file mode 100644 index 0000000..26defc6 --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/fetch-a-list-of-countries.json @@ -0,0 +1,24 @@ +{ + "statusCode": 200, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:13 GMT", + "Content-Type": "application\/json", + "Content-Length": "3076", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e968ff775ff-ZRH", + "ratelimit-remaining": "990", + "ratelimit-reset": "47", + "x-ratelimit-limit-minute": "1000", + "x-ratelimit-remaining-minute": "990", + "ratelimit-limit": "1000", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "[{\"id\":5,\"name\":\"Kanada\",\"name_short\":\"CDN\",\"iso_3166_alpha2\":\"CA\"},{\"id\":6,\"name\":\"China\",\"name_short\":\"CN\",\"iso_3166_alpha2\":\"CN\"},{\"id\":7,\"name\":\"Tschechische Republik\",\"name_short\":\"CZ\",\"iso_3166_alpha2\":\"CZ\"},{\"id\":8,\"name\":\"Frankreich\",\"name_short\":\"F\",\"iso_3166_alpha2\":\"FR\"},{\"id\":9,\"name\":\"Vereinigtes K\\u00f6nigreich\",\"name_short\":\"GB\",\"iso_3166_alpha2\":\"GB\"},{\"id\":10,\"name\":\"Italien\",\"name_short\":\"I\",\"iso_3166_alpha2\":\"IT\"},{\"id\":11,\"name\":\"Liechtenstein\",\"name_short\":\"FL\",\"iso_3166_alpha2\":\"LI\"},{\"id\":12,\"name\":\"Hong Kong\",\"name_short\":\"HK\",\"iso_3166_alpha2\":\"HK\"},{\"id\":13,\"name\":\"Portugal\",\"name_short\":\"PT\",\"iso_3166_alpha2\":\"PT\"},{\"id\":14,\"name\":\"\\u00c4gypten\",\"name_short\":\"EG\",\"iso_3166_alpha2\":\"EG\"},{\"id\":15,\"name\":\"USA\",\"name_short\":\"USA\",\"iso_3166_alpha2\":\"US\"},{\"id\":16,\"name\":\"Spanien\",\"name_short\":\"ES\",\"iso_3166_alpha2\":\"ES\"},{\"id\":17,\"name\":\"Australien\",\"name_short\":\"AU\",\"iso_3166_alpha2\":\"AU\"},{\"id\":18,\"name\":\"Argentinien\",\"name_short\":\"AR\",\"iso_3166_alpha2\":\"AR\"},{\"id\":19,\"name\":\"Malediven\",\"name_short\":\"MV\",\"iso_3166_alpha2\":\"MV\"},{\"id\":20,\"name\":\"Bulgarien\",\"name_short\":\"BG\",\"iso_3166_alpha2\":\"BG\"},{\"id\":21,\"name\":\"Rum\\u00e4nien\",\"name_short\":\"RO\",\"iso_3166_alpha2\":\"RO\"},{\"id\":22,\"name\":\"Luxemburg\",\"name_short\":\"LU\",\"iso_3166_alpha2\":\"LU\"},{\"id\":23,\"name\":\"T\\u00fcrkei\",\"name_short\":\"TR\",\"iso_3166_alpha2\":\"TR\"},{\"id\":24,\"name\":\"Israel\",\"name_short\":\"ISR\",\"iso_3166_alpha2\":\"IL\"},{\"id\":25,\"name\":\"Niederlande\",\"name_short\":\"NL\",\"iso_3166_alpha2\":\"NL\"},{\"id\":26,\"name\":\"Vereinigte Arabische Emirate\",\"name_short\":\"VAE\",\"iso_3166_alpha2\":\"AE\"},{\"id\":27,\"name\":\"Belgien\",\"name_short\":\"B\",\"iso_3166_alpha2\":\"BE\"},{\"id\":28,\"name\":\"Singapur\",\"name_short\":\"SIN\",\"iso_3166_alpha2\":\"SG\"},{\"id\":29,\"name\":\"Montenegro\",\"name_short\":\"MTN\",\"iso_3166_alpha2\":\"ME\"},{\"id\":30,\"name\":\"Katar\",\"name_short\":\"KAT\",\"iso_3166_alpha2\":\"QA\"},{\"id\":31,\"name\":\"D\\u00e4nemark\",\"name_short\":\"DK\",\"iso_3166_alpha2\":\"DK\"},{\"id\":32,\"name\":\"Schweden\",\"name_short\":\"SE\",\"iso_3166_alpha2\":\"SE\"},{\"id\":33,\"name\":\"Malaysia\",\"name_short\":\"MY\",\"iso_3166_alpha2\":\"MY\"},{\"id\":34,\"name\":\"Irland\",\"name_short\":\"IRL\",\"iso_3166_alpha2\":\"IE\"},{\"id\":35,\"name\":\"Norwegen\",\"name_short\":\"NO\",\"iso_3166_alpha2\":\"NO\"},{\"id\":36,\"name\":\"Finnland\",\"name_short\":\"FI\",\"iso_3166_alpha2\":\"FI\"},{\"id\":37,\"name\":\"Ungarn\",\"name_short\":\"HU\",\"iso_3166_alpha2\":\"HU\"},{\"id\":38,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":39,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":40,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":41,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":42,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":43,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":44,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":45,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":46,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":47,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"}]", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Countries/search-countries.json b/tests/Fixtures/Saloon/Countries/search-countries.json new file mode 100644 index 0000000..1cb63f4 --- /dev/null +++ b/tests/Fixtures/Saloon/Countries/search-countries.json @@ -0,0 +1,24 @@ +{ + "statusCode": 200, + "headers": { + "Date": "Wed, 26 Nov 2025 15:42:12 GMT", + "Content-Type": "application\/json", + "Content-Length": "731", + "Connection": "keep-alive", + "CF-RAY": "9a4a7e8e4fcc2680-ZRH", + "x-ratelimit-remaining-minute": "997", + "ratelimit-limit": "1000", + "ratelimit-remaining": "997", + "ratelimit-reset": "48", + "x-ratelimit-limit-minute": "1000", + "Cache-Control": "no-store", + "pragma": "no-cache", + "vary": "Origin", + "access-control-allow-origin": "https:\/\/office.bexio.com", + "via": "1.1 google", + "cf-cache-status": "DYNAMIC", + "Server": "cloudflare" + }, + "data": "[{\"id\":38,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":39,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":40,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":41,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":42,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":43,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":44,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":45,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":46,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"},{\"id\":47,\"name\":\"Test Country\",\"name_short\":\"TC\",\"iso_3166_alpha2\":\"TC\"}]", + "context": [] +} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Items/create-item.json b/tests/Fixtures/Saloon/Items/create-item.json index 1605918..5cbad00 100644 --- a/tests/Fixtures/Saloon/Items/create-item.json +++ b/tests/Fixtures/Saloon/Items/create-item.json @@ -1,16 +1,16 @@ { "statusCode": 201, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:45 GMT", + "Date": "Wed, 26 Nov 2025 15:31:47 GMT", "Content-Type": "application\/json", "Content-Length": "753", "Connection": "keep-alive", - "CF-RAY": "9a48e6ace936ff00-ZRH", - "ratelimit-reset": "15", + "CF-RAY": "9a4a6f4a7f9f75ff-ZRH", + "ratelimit-reset": "13", "x-ratelimit-limit-minute": "400", - "x-ratelimit-remaining-minute": "384", + "x-ratelimit-remaining-minute": "397", "ratelimit-limit": "400", - "ratelimit-remaining": "384", + "ratelimit-remaining": "397", "Cache-Control": "no-store", "pragma": "no-cache", "vary": "Origin", @@ -19,6 +19,6 @@ "cf-cache-status": "DYNAMIC", "Server": "cloudflare" }, - "data": "{\"id\":7,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764155025\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":\"0\",\"stock_min_nr\":\"0\",\"stock_reserved_nr\":\"0\",\"stock_available_nr\":0,\"stock_picked_nr\":\"0\",\"stock_disposed_nr\":\"0\",\"stock_ordered_nr\":\"0\",\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", + "data": "{\"id\":8,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764171106\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":\"0\",\"stock_min_nr\":\"0\",\"stock_reserved_nr\":\"0\",\"stock_available_nr\":0,\"stock_picked_nr\":\"0\",\"stock_disposed_nr\":\"0\",\"stock_ordered_nr\":\"0\",\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", "context": [] } \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Items/delete-an-item.json b/tests/Fixtures/Saloon/Items/delete-an-item.json index 8abfa33..91939ad 100644 --- a/tests/Fixtures/Saloon/Items/delete-an-item.json +++ b/tests/Fixtures/Saloon/Items/delete-an-item.json @@ -1,16 +1,16 @@ { "statusCode": 200, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:44 GMT", + "Date": "Wed, 26 Nov 2025 15:31:46 GMT", "Content-Type": "application\/json", "Content-Length": "16", "Connection": "keep-alive", - "CF-RAY": "9a48e6a7aea92325-ZRH", - "x-ratelimit-remaining-minute": "387", - "x-ratelimit-limit-minute": "400", - "ratelimit-remaining": "387", + "CF-RAY": "9a4a6f436cb1dc8b-ZRH", + "x-ratelimit-remaining-minute": "398", "ratelimit-limit": "400", - "ratelimit-reset": "16", + "ratelimit-remaining": "398", + "ratelimit-reset": "15", + "x-ratelimit-limit-minute": "400", "Cache-Control": "no-store", "pragma": "no-cache", "vary": "Origin", diff --git a/tests/Fixtures/Saloon/Items/edit-an-item.json b/tests/Fixtures/Saloon/Items/edit-an-item.json index 969d369..e9bf9aa 100644 --- a/tests/Fixtures/Saloon/Items/edit-an-item.json +++ b/tests/Fixtures/Saloon/Items/edit-an-item.json @@ -1,15 +1,15 @@ { "statusCode": 200, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:45 GMT", + "Date": "Wed, 26 Nov 2025 15:31:48 GMT", "Content-Type": "application\/json", "Content-Length": "756", "Connection": "keep-alive", - "CF-RAY": "9a48e6aacd3bbe70-ZRH", - "ratelimit-remaining": "385", - "ratelimit-reset": "15", + "CF-RAY": "9a4a6f521de6a285-ZRH", + "ratelimit-remaining": "392", + "ratelimit-reset": "12", "x-ratelimit-limit-minute": "400", - "x-ratelimit-remaining-minute": "385", + "x-ratelimit-remaining-minute": "392", "ratelimit-limit": "400", "Cache-Control": "no-store", "pragma": "no-cache", @@ -19,6 +19,6 @@ "cf-cache-status": "DYNAMIC", "Server": "cloudflare" }, - "data": "{\"id\":4,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154703\",\"intern_name\":\"Updated Item Name\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":null,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":\"0\",\"stock_min_nr\":\"0\",\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", + "data": "{\"id\":5,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154888\",\"intern_name\":\"Updated Item Name\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":null,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":\"0\",\"stock_min_nr\":\"0\",\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", "context": [] } \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Items/fetch-a-list-of-items.json b/tests/Fixtures/Saloon/Items/fetch-a-list-of-items.json index f58c8c7..fef3633 100644 --- a/tests/Fixtures/Saloon/Items/fetch-a-list-of-items.json +++ b/tests/Fixtures/Saloon/Items/fetch-a-list-of-items.json @@ -1,15 +1,15 @@ { "statusCode": 200, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:45 GMT", + "Date": "Wed, 26 Nov 2025 15:31:48 GMT", "Content-Type": "application\/json", - "Content-Length": "2227", + "Content-Length": "2969", "Connection": "keep-alive", - "CF-RAY": "9a48e6a96c2bbe70-ZRH", - "x-ratelimit-remaining-minute": "386", + "CF-RAY": "9a4a6f514c5ca285-ZRH", + "x-ratelimit-remaining-minute": "393", "ratelimit-limit": "400", - "ratelimit-remaining": "386", - "ratelimit-reset": "16", + "ratelimit-remaining": "393", + "ratelimit-reset": "12", "x-ratelimit-limit-minute": "400", "Cache-Control": "no-store", "pragma": "no-cache", @@ -19,6 +19,6 @@ "cf-cache-status": "DYNAMIC", "Server": "cloudflare" }, - "data": "[{\"id\":4,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154703\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null},{\"id\":5,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154888\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null},{\"id\":6,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154940\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}]", + "data": "[{\"id\":5,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154888\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null},{\"id\":6,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154940\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null},{\"id\":7,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764155025\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null},{\"id\":8,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764171106\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}]", "context": [] } \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Items/fetch-an-item.json b/tests/Fixtures/Saloon/Items/fetch-an-item.json index a068706..01f8d0b 100644 --- a/tests/Fixtures/Saloon/Items/fetch-an-item.json +++ b/tests/Fixtures/Saloon/Items/fetch-an-item.json @@ -1,15 +1,15 @@ { "statusCode": 200, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:44 GMT", + "Date": "Wed, 26 Nov 2025 15:31:47 GMT", "Content-Type": "application\/json", - "Content-Length": "752", + "Content-Length": "741", "Connection": "keep-alive", - "CF-RAY": "9a48e6a5bbafbc47-ZRH", - "x-ratelimit-remaining-minute": "389", + "CF-RAY": "9a4a6f4f3d6d3d61-ZRH", + "x-ratelimit-remaining-minute": "394", "ratelimit-limit": "400", - "ratelimit-remaining": "389", - "ratelimit-reset": "16", + "ratelimit-remaining": "394", + "ratelimit-reset": "13", "x-ratelimit-limit-minute": "400", "Cache-Control": "no-store", "pragma": "no-cache", @@ -19,6 +19,6 @@ "cf-cache-status": "DYNAMIC", "Server": "cloudflare" }, - "data": "{\"id\":3,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154690\",\"intern_name\":\"Updated Item Name\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":null,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", + "data": "{\"id\":5,\"user_id\":1,\"article_type_id\":1,\"contact_id\":null,\"deliverer_code\":\"\",\"deliverer_name\":\"\",\"deliverer_description\":\"\",\"intern_code\":\"TEST-1764154888\",\"intern_name\":\"Test Item\",\"intern_description\":\"\",\"purchase_price\":null,\"sale_price\":null,\"purchase_total\":null,\"sale_total\":null,\"currency_id\":1,\"tax_income_id\":null,\"tax_id\":null,\"tax_expense_id\":null,\"unit_id\":null,\"is_stock\":false,\"stock_id\":null,\"stock_place_id\":null,\"stock_nr\":0,\"stock_min_nr\":0,\"stock_reserved_nr\":0,\"stock_available_nr\":0,\"stock_picked_nr\":0,\"stock_disposed_nr\":0,\"stock_ordered_nr\":0,\"width\":null,\"height\":null,\"weight\":null,\"volume\":null,\"html_text\":\"\",\"remarks\":\"\",\"delivery_price\":null,\"article_group_id\":null,\"account_id\":null,\"expense_account_id\":null}", "context": [] } \ No newline at end of file diff --git a/tests/Fixtures/Saloon/Items/search-items.json b/tests/Fixtures/Saloon/Items/search-items.json index 051bd6d..ee6b518 100644 --- a/tests/Fixtures/Saloon/Items/search-items.json +++ b/tests/Fixtures/Saloon/Items/search-items.json @@ -1,15 +1,15 @@ { "statusCode": 200, "headers": { - "Date": "Wed, 26 Nov 2025 11:03:45 GMT", + "Date": "Wed, 26 Nov 2025 15:31:45 GMT", "Content-Type": "application\/json", "Content-Length": "2", "Connection": "keep-alive", - "CF-RAY": "9a48e6ae3e110396-ZRH", + "CF-RAY": "9a4a6f402cffbe6d-ZRH", + "ratelimit-remaining": "249", "ratelimit-reset": "15", - "x-ratelimit-remaining-minute": "249", "x-ratelimit-limit-minute": "250", - "ratelimit-remaining": "249", + "x-ratelimit-remaining-minute": "249", "ratelimit-limit": "250", "Cache-Control": "no-store", "pragma": "no-cache", diff --git a/tests/Requests/Countries/CreateCountryRequestTest.php b/tests/Requests/Countries/CreateCountryRequestTest.php new file mode 100644 index 0000000..a8903c6 --- /dev/null +++ b/tests/Requests/Countries/CreateCountryRequestTest.php @@ -0,0 +1,36 @@ + MockResponse::fixture('Countries/create-country'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + + $response = $connector->send(new CreateCountryRequest( + new CreateEditCountryDTO( + name: 'Test Country', + name_short: 'TC', + iso3166_alpha2: 'TC' + ) + )); + + expect($response->successful())->toBeTrue(); + expect($response->dto())->toBeInstanceOf(CountryDTO::class); + + Saloon::assertSent(CreateCountryRequest::class); +})->group('countries'); diff --git a/tests/Requests/Countries/DeleteACountryRequestTest.php b/tests/Requests/Countries/DeleteACountryRequestTest.php new file mode 100644 index 0000000..75fe094 --- /dev/null +++ b/tests/Requests/Countries/DeleteACountryRequestTest.php @@ -0,0 +1,38 @@ + MockResponse::fixture('Countries/delete-a-country'), + FetchAListOfCountriesRequest::class => MockResponse::fixture('Countries/fetch-a-list-of-countries'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + + $countriesResponse = $connector->send(new FetchAListOfCountriesRequest); + $existingCountry = $countriesResponse->dto()->first(); + + if (! $existingCountry) { + $this->markTestSkipped('No countries found in the system to delete'); + } + + $response = $connector->send(new DeleteACountryRequest(country_id: $existingCountry->id)); + + expect($response->successful())->toBeTrue(); + + Saloon::assertSent(DeleteACountryRequest::class); +})->group('countries'); diff --git a/tests/Requests/Countries/EditACountryRequestTest.php b/tests/Requests/Countries/EditACountryRequestTest.php new file mode 100644 index 0000000..fd54d16 --- /dev/null +++ b/tests/Requests/Countries/EditACountryRequestTest.php @@ -0,0 +1,48 @@ + MockResponse::fixture('Countries/edit-a-country'), + FetchAListOfCountriesRequest::class => MockResponse::fixture('Countries/fetch-a-list-of-countries'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + + $countriesResponse = $connector->send(new FetchAListOfCountriesRequest); + $existingCountry = $countriesResponse->dto()->first(); + + if (! $existingCountry) { + $this->markTestSkipped('No countries found in the system to edit'); + } + + $response = $connector->send(new EditACountryRequest( + country_id: $existingCountry->id, + data: new CreateEditCountryDTO( + name: 'Updated Country Name', + name_short: $existingCountry->name_short, + iso3166_alpha2: $existingCountry->iso3166_alpha2 + ) + )); + + expect($response->successful())->toBeTrue(); + expect($response->dto())->toBeInstanceOf(CountryDTO::class); + + Saloon::assertSent(EditACountryRequest::class); +})->group('countries'); diff --git a/tests/Requests/Countries/FetchACountryRequestTest.php b/tests/Requests/Countries/FetchACountryRequestTest.php new file mode 100644 index 0000000..2884e8f --- /dev/null +++ b/tests/Requests/Countries/FetchACountryRequestTest.php @@ -0,0 +1,40 @@ + MockResponse::fixture('Countries/fetch-a-country'), + FetchAListOfCountriesRequest::class => MockResponse::fixture('Countries/fetch-a-list-of-countries'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + + $countriesResponse = $connector->send(new FetchAListOfCountriesRequest); + $existingCountry = $countriesResponse->dto()->first(); + + if (! $existingCountry) { + $this->markTestSkipped('No countries found in the system to fetch'); + } + + $response = $connector->send(new FetchACountryRequest(country_id: $existingCountry->id)); + + expect($response->successful())->toBeTrue(); + expect($response->dto())->toBeInstanceOf(CountryDTO::class); + + Saloon::assertSent(FetchACountryRequest::class); +})->group('countries'); diff --git a/tests/Requests/Countries/FetchAListOfCountriesRequestTest.php b/tests/Requests/Countries/FetchAListOfCountriesRequestTest.php new file mode 100644 index 0000000..603169b --- /dev/null +++ b/tests/Requests/Countries/FetchAListOfCountriesRequestTest.php @@ -0,0 +1,28 @@ + MockResponse::fixture('Countries/fetch-a-list-of-countries'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + $response = $connector->send(new FetchAListOfCountriesRequest); + + expect($response->successful())->toBeTrue(); + expect($response->dto())->toBeInstanceOf(Collection::class); + + Saloon::assertSent(FetchAListOfCountriesRequest::class); +})->group('countries'); diff --git a/tests/Requests/Countries/SearchCountriesRequestTest.php b/tests/Requests/Countries/SearchCountriesRequestTest.php new file mode 100644 index 0000000..1412bfe --- /dev/null +++ b/tests/Requests/Countries/SearchCountriesRequestTest.php @@ -0,0 +1,32 @@ + MockResponse::fixture('Countries/search-countries'), + ]); + + $connector = new BexioConnector(new ConnectWithToken); + + $response = $connector->send(new SearchCountriesRequest( + searchField: 'name_short', + searchTerm: 'TC' + )); + + expect($response->successful())->toBeTrue(); + expect($response->dto())->toBeInstanceOf(Collection::class); + + Saloon::assertSent(SearchCountriesRequest::class); +})->group('countries'); diff --git a/tests/Requests/Items/CreateItemRequestTest.php b/tests/Requests/Items/CreateItemRequestTest.php index 1ce7c84..874453e 100644 --- a/tests/Requests/Items/CreateItemRequestTest.php +++ b/tests/Requests/Items/CreateItemRequestTest.php @@ -12,7 +12,7 @@ $fixturePath = __DIR__.'/../../Fixtures/Saloon/Items/create-item.json'; if (shouldResetFixtures()) { - unlink($fixturePath); + @unlink($fixturePath); } Saloon::fake([ diff --git a/tests/Requests/Items/FetchAListOfItemsRequestTest.php b/tests/Requests/Items/FetchAListOfItemsRequestTest.php index 9260ce9..b697b8b 100644 --- a/tests/Requests/Items/FetchAListOfItemsRequestTest.php +++ b/tests/Requests/Items/FetchAListOfItemsRequestTest.php @@ -11,7 +11,7 @@ $fixturePath = __DIR__.'/../../Fixtures/Saloon/Items/fetch-a-list-of-items.json'; if (shouldResetFixtures()) { - unlink($fixturePath); + @unlink($fixturePath); } Saloon::fake([ diff --git a/tests/Requests/Items/SearchItemsRequestTest.php b/tests/Requests/Items/SearchItemsRequestTest.php index 09718cb..1153321 100644 --- a/tests/Requests/Items/SearchItemsRequestTest.php +++ b/tests/Requests/Items/SearchItemsRequestTest.php @@ -11,7 +11,7 @@ $fixturePath = __DIR__.'/../../Fixtures/Saloon/Items/search-items.json'; if (shouldResetFixtures()) { - unlink($fixturePath); + @unlink($fixturePath); } Saloon::fake([