diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index a4fbe1c..bd7d8f3 100644 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":"pest_2.34.2","defects":[],"times":{"P\\Tests\\Unit\\Support\\HasSEOTest::__pest_evaluable_it_automatically_associates_a_SEO_model_on_creation":0.017,"P\\Tests\\Feature\\JSONLD\\ArticleTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__Article":0.033,"P\\Tests\\Feature\\JSONLD\\ArticleTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__Article":0.002,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_canonical_URL_if_allowed":0.001,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_model_level_canonical_url_if_set_on_override":0.002,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_cannot_display_the_canonical_url_if_not_allowed":0.001,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_will_not_break_if_no_canonical__url_column_exists_in_seo_table":0.003,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_model_level_canonical_url_if_set_in_database":0.002,"P\\Tests\\Unit\\Facades\\SEOManagerTest::__pest_evaluable_the_SEOManager_facade_works_as_expected":0,"P\\Tests\\Unit\\Schema\\ArticleSchemaTest::__pest_evaluable_it_can_construct_Schema_Markup__Article":0,"P\\Tests\\Unit\\Schema\\ArticleSchemaTest::__pest_evaluable_it_can_add_multiple_authors_to_Schema_Markup__Article":0,"P\\Tests\\Unit\\Support\\SEODataTest::__pest_evaluable_it_can_determine_the_size_of_an_image":0.001,"P\\Tests\\Unit\\Support\\SEODataTest::__pest_evaluable_it_can_allow_to_prepareForUsage_without_a_model_in_the_database":0.001,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_display_the_image_url_if_it_came_from_a_model":0.002,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_not_render_the_default_image_if_that_was_disabled":0.001,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_display_the_image_url_from_a_model":0.002,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_render_the_default_image#('\/public\/test\/image.jpg')":0.001,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_render_the_default_image#('public\/test\/image.jpg')":0.001,"P\\Tests\\Feature\\Tags\\SitemapTagTest::__pest_evaluable_it_can_display_the_sitemap_if_path_is_set":0.002,"P\\Tests\\Unit\\Schema\\BreadcrumbListSchemaTest::__pest_evaluable_it_can_construct_Schema_Markup__BreadcrumbList":0,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_can_override_the_author":0.002,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_can_display_the_fallback_description_tag":0.001,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_will_not_display_the_author_tag_if_there_isn_t_a_author":0.001,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_will_display_the_author_if_the_associated_SEO_model_has_a_author":0.002,"P\\Tests\\Feature\\JSONLD\\BreadcrumbListTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__BreadcrumbList":0.001,"P\\Tests\\Feature\\JSONLD\\BreadcrumbListTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__BreadcrumbList":0.002,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_will_display_the_description_if_the_associated_SEO_model_has_a_description":0.002,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_can_display_the_fallback_description_tag":0.002,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_will_not_display_the_description_tag_if_there_isn_t_a_description":0.001,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_include_the_widths_and_heights_of_Twitter_images_if_the_image_was_overridden_using_a_URL#('summary', 'images\/twitter-1743x1743.jpg', '1743', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_include_the_widths_and_heights_of_Twitter_images_if_the_image_was_overridden_using_a_URL#('summary_large_image', 'images\/twitter-3597x1799.jpg', '3597', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_with_the_image_on_a_Page#('summary_large_image', 'images\/twitter-3597x1799.jpg', '3597', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_with_the_image_on_a_Page#('summary', 'images\/twitter-1743x1743.jpg', '1743', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_uses_openGraphTitle_over_title":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_render_the_Twitter_Card_summary__large__image_for_too_large_or_small_images#('images\/twitter-72x72.jpg')":0.002,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_render_the_Twitter_Card_summary__large__image_for_too_large_or_small_images#('images\/twitter-4721x4721.jpg')":0.002,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_escape_the_title":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_without_the_image":0.002,"P\\Tests\\Feature\\Tags\\FaviconTagTest::__pest_evaluable_it_will_render_the_favicon_if_the_favicon_is_set":0.001,"P\\Tests\\Feature\\Tags\\FaviconTagTest::__pest_evaluable_it_will_not_render_the_favicon_if_the_favicon_is_set_to_null":0.001,"P\\Tests\\Unit\\SEOManagerTest::__pest_evaluable_the_SEOManager_singleton_works_as_expected":0,"P\\Tests\\Feature\\Tags\\AlternateTagTest::__pest_evaluable_it_will_not_display_the_aternates_tags_if_there_isn_t_any_alternate":0.001,"P\\Tests\\Feature\\Tags\\AlternateTagTest::__pest_evaluable_it_will_display_the_alternates_links_if_the_associated_SEO_model_has_alternates_links":0.002,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager_with_a_SEOData_data_object":0.001,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager":0,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager_with_and_without_a_model":0.001,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_infer_the_title_from_the_url_if_that_is_allowed":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_escape_the_title":0.001,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_display_the_title_if_the_associated_SEO_model_has_a_title":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_infer_the_title_from_the_url_if_that_is_allowed_and_the_model_doesn_t_return_a_title":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_not_infer_the_title_from_the_url_if_that_isn_t_allowed":0.003,"P\\Tests\\Feature\\JSONLD\\FaqPageTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__FaqPageTest":0.002,"P\\Tests\\Feature\\JSONLD\\FaqPageTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__FaqPageTest":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_add_properties_to_a_SEO_model#('description', 'This is a description')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_add_properties_to_a_SEO_model#('title', 'My Cool Page Title')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_have_immutable_timestamps":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_override_certain_SEO_Data#('title', 'My Cool Page Title')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_override_certain_SEO_Data#('description', 'This is a description')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_morph_a_model_to_the_SEO_model":0,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_disable_the_suffix_in_the_page_model":0.002,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_give_the_title_of_a_page_a_suffix_it_was_specified":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_disable_the_suffix_in_the_page_model_dynamically_via_a_function":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_prepare_the_SEO_for_use_on_a_page":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_cannot_overwrite_the_robots_tag__default__value_with_the_robots_attribute_if__force__default__is_set__DB_Model_":0.007,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_overwrite_the_robots_tag__default__value_with_the_robots_attribute__DB_Model_":0.002,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_cannot_overwrite_the_robots_tag__default__value_with_the_robots_attribute_if__force__default__is_set__SEOData_":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_overwrite_the_robots_tag__default__value_with_the_robots_attribute__SEOData_":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_output_the_robots_tag__default__value":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_replace_the_title_if_we_re_on_the_homepage#('Custom homepage title', 'Custom homepage title')":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_replace_the_title_if_we_re_on_the_homepage#(null, '| My Website suffix')":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_pipe_the_generated_tags_through_the_transformers_just_before_render":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_pipe_the_SEOData_through_the_transformer_before_putting_it_into_the_collection":0.002,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_can_render_the_SEOData_from_an_object_that_s_directly_passed_in":0.001,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_uses_openGraphTitle_over_title":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags_for_a_post_or_page_with_a_few_additional_overrides":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_will_escape_the_title":0.002,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags":0.002,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags_for_a_post_or_page":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_locale_tags":0.001}} \ No newline at end of file +{"version":"pest_2.34.2","defects":[],"times":{"P\\Tests\\Unit\\Support\\HasSEOTest::__pest_evaluable_it_automatically_associates_a_SEO_model_on_creation":0.002,"P\\Tests\\Feature\\JSONLD\\ArticleTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__Article":0.005,"P\\Tests\\Feature\\JSONLD\\ArticleTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__Article":0.032,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_canonical_URL_if_allowed":0.001,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_model_level_canonical_url_if_set_on_override":0.002,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_cannot_display_the_canonical_url_if_not_allowed":0.001,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_will_not_break_if_no_canonical__url_column_exists_in_seo_table":0.004,"P\\Tests\\Feature\\Tags\\CanonicalTagTest::__pest_evaluable_it_can_display_the_model_level_canonical_url_if_set_in_database":0.003,"P\\Tests\\Unit\\Facades\\SEOManagerTest::__pest_evaluable_the_SEOManager_facade_works_as_expected":0,"P\\Tests\\Unit\\Schema\\ArticleSchemaTest::__pest_evaluable_it_can_construct_Schema_Markup__Article":0,"P\\Tests\\Unit\\Schema\\ArticleSchemaTest::__pest_evaluable_it_can_add_multiple_authors_to_Schema_Markup__Article":0,"P\\Tests\\Unit\\Support\\SEODataTest::__pest_evaluable_it_can_determine_the_size_of_an_image":0.002,"P\\Tests\\Unit\\Support\\SEODataTest::__pest_evaluable_it_can_allow_to_prepareForUsage_without_a_model_in_the_database":0.002,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_display_the_image_url_if_it_came_from_a_model":0.003,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_not_render_the_default_image_if_that_was_disabled":0.001,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_display_the_image_url_from_a_model":0.003,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_render_the_default_image#('\/public\/test\/image.jpg')":0.003,"P\\Tests\\Feature\\Tags\\ImageTagTest::__pest_evaluable_it_will_render_the_default_image#('public\/test\/image.jpg')":0.002,"P\\Tests\\Feature\\Tags\\SitemapTagTest::__pest_evaluable_it_can_display_the_sitemap_if_path_is_set":0.002,"P\\Tests\\Unit\\Schema\\BreadcrumbListSchemaTest::__pest_evaluable_it_can_construct_Schema_Markup__BreadcrumbList":0.001,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_can_override_the_author":0.004,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_can_display_the_fallback_description_tag":0.002,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_will_not_display_the_author_tag_if_there_isn_t_a_author":0.002,"P\\Tests\\Feature\\Tags\\AuthorTagTest::__pest_evaluable_it_will_display_the_author_if_the_associated_SEO_model_has_a_author":0.003,"P\\Tests\\Feature\\JSONLD\\BreadcrumbListTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__BreadcrumbList":0.002,"P\\Tests\\Feature\\JSONLD\\BreadcrumbListTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__BreadcrumbList":0.002,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_will_display_the_description_if_the_associated_SEO_model_has_a_description":0.003,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_can_display_the_fallback_description_tag":0.001,"P\\Tests\\Feature\\Tags\\DescriptionTagTest::__pest_evaluable_it_will_not_display_the_description_tag_if_there_isn_t_a_description":0.002,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_include_the_widths_and_heights_of_Twitter_images_if_the_image_was_overridden_using_a_URL#('summary', 'images\/twitter-1743x1743.jpg', '1743', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_include_the_widths_and_heights_of_Twitter_images_if_the_image_was_overridden_using_a_URL#('summary_large_image', 'images\/twitter-3597x1799.jpg', '3597', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_with_the_image_on_a_Page#('summary_large_image', 'images\/twitter-3597x1799.jpg', '3597', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_with_the_image_on_a_Page#('summary', 'images\/twitter-1743x1743.jpg', '1743', \u2026)":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_uses_openGraphTitle_over_title":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_render_the_Twitter_Card_summary__large__image_for_too_large_or_small_images#('images\/twitter-72x72.jpg')":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_not_render_the_Twitter_Card_summary__large__image_for_too_large_or_small_images#('images\/twitter-4721x4721.jpg')":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_will_escape_the_title":0.003,"P\\Tests\\Feature\\Tags\\TwitterCardSummaryTagsTest::__pest_evaluable_it_can_correctly_render_the_Twitter_Card_summary_without_the_image":0.002,"P\\Tests\\Feature\\Tags\\FaviconTagTest::__pest_evaluable_it_will_render_the_favicon_if_the_favicon_is_set":0.002,"P\\Tests\\Feature\\Tags\\FaviconTagTest::__pest_evaluable_it_will_not_render_the_favicon_if_the_favicon_is_set_to_null":0.002,"P\\Tests\\Unit\\SEOManagerTest::__pest_evaluable_the_SEOManager_singleton_works_as_expected":0,"P\\Tests\\Feature\\Tags\\AlternateTagTest::__pest_evaluable_it_will_not_display_the_aternates_tags_if_there_isn_t_any_alternate":0.001,"P\\Tests\\Feature\\Tags\\AlternateTagTest::__pest_evaluable_it_will_display_the_alternates_links_if_the_associated_SEO_model_has_alternates_links":0.003,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager_with_a_SEOData_data_object":0.006,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager":0,"P\\Tests\\Unit\\HelpersTest::__pest_evaluable_it_can_get_the_TagManager_with_and_without_a_model":0.011,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_infer_the_title_from_the_url_if_that_is_allowed":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_escape_the_title":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_display_the_title_if_the_associated_SEO_model_has_a_title":0.002,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_infer_the_title_from_the_url_if_that_is_allowed_and_the_model_doesn_t_return_a_title":0.003,"P\\Tests\\Feature\\Tags\\TitleTagTest::__pest_evaluable_it_will_not_infer_the_title_from_the_url_if_that_isn_t_allowed":0.001,"P\\Tests\\Feature\\JSONLD\\FaqPageTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__FaqPageTest":0.002,"P\\Tests\\Feature\\JSONLD\\FaqPageTest::__pest_evaluable_it_does_not_render_by_default_the_JSON_LD_Schema_markup__FaqPageTest":0.002,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_add_properties_to_a_SEO_model#('description', 'This is a description')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_add_properties_to_a_SEO_model#('title', 'My Cool Page Title')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_have_immutable_timestamps":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_override_certain_SEO_Data#('title', 'My Cool Page Title')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_override_certain_SEO_Data#('description', 'This is a description')":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_morph_a_model_to_the_SEO_model":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_disable_the_suffix_in_the_page_model":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_give_the_title_of_a_page_a_suffix_it_was_specified":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_disable_the_suffix_in_the_page_model_dynamically_via_a_function":0.001,"P\\Tests\\Unit\\Models\\SEOTest::__pest_evaluable_it_can_prepare_the_SEO_for_use_on_a_page":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_cannot_overwrite_the_robots_tag__default__value_with_the_robots_attribute_if__force__default__is_set__DB_Model_":0.003,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_overwrite_the_robots_tag__default__value_with_the_robots_attribute__DB_Model_":0.003,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_cannot_overwrite_the_robots_tag__default__value_with_the_robots_attribute_if__force__default__is_set__SEOData_":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_overwrite_the_robots_tag__default__value_with_the_robots_attribute__SEOData_":0.001,"P\\Tests\\Feature\\Tags\\RobotsTagTest::__pest_evaluable_it_can_output_the_robots_tag__default__value":0.002,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_replace_the_title_if_we_re_on_the_homepage#('Custom homepage title', 'Custom homepage title')":0.002,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_replace_the_title_if_we_re_on_the_homepage#(null, '| My Website suffix')":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_pipe_the_generated_tags_through_the_transformers_just_before_render":0.001,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_it_can_pipe_the_SEOData_through_the_transformer_before_putting_it_into_the_collection":0.002,"P\\Tests\\Feature\\TagManagerTest::__pest_evaluable_can_render_the_SEOData_from_an_object_that_s_directly_passed_in":0.001,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_uses_openGraphTitle_over_title":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags_for_a_post_or_page_with_a_few_additional_overrides":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_will_escape_the_title":0.003,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags":0.002,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_OpenGraph_tags_for_a_post_or_page":0.005,"P\\Tests\\Feature\\Tags\\OpenGraphTagsTest::__pest_evaluable_it_can_correctly_render_locale_tags":0.002,"P\\Tests\\Unit\\Support\\TagTest::__pest_evaluable_it_orders_tag_attributes":0.022,"P\\Tests\\Unit\\Schema\\CustomSchemaTest::__pest_evaluable_it_can_construct_a_custom_faq_schema":0.001,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_multiple_custom_JSON_LD_Schemas_markup":0.003,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__FaqPage":0.002,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_a_custom_JSON_LD_Schemas_markup":0.002,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_a_custom_JSON_LD_Schemas_markup_from_a_function":0.002,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__BreadcrumbList":0.003,"P\\Tests\\Feature\\JSONLD\\SchemaCollectionTest::__pest_evaluable_it_can_correctly_render_the_JSON_LD_Schema_markup__Article":0.003}} \ No newline at end of file diff --git a/src/Support/AlternateTag.php b/src/Support/AlternateTag.php index 05bc7a9..259c9f5 100644 --- a/src/Support/AlternateTag.php +++ b/src/Support/AlternateTag.php @@ -9,6 +9,7 @@ public function __construct( string $href, ) { parent::__construct('alternate', $href); + $this->attributes['hreflang'] = $hreflang; } } diff --git a/src/Support/SchemaTagCollection.php b/src/Support/SchemaTagCollection.php index 1f90de8..9dff9ba 100644 --- a/src/Support/SchemaTagCollection.php +++ b/src/Support/SchemaTagCollection.php @@ -21,9 +21,7 @@ public static function initialize(?SEOData $SEOData = null): ?static $collection = new static(); foreach ($schemas as $schema) { - $collection->push( - new CustomSchema(value($schema, $SEOData)) - ); + $collection->push(new CustomSchema(value($schema, $SEOData))); } foreach ($schemas->markup as $markupClass => $markupBuilders) { diff --git a/src/Support/Tag.php b/src/Support/Tag.php index 25a6191..43f257d 100644 --- a/src/Support/Tag.php +++ b/src/Support/Tag.php @@ -7,9 +7,6 @@ use Illuminate\Support\Collection; use Illuminate\Support\HtmlString; -/** - * A representation of a HTML tag - */ abstract class Tag implements Renderable { const ATTRIBUTES_ORDER = ['rel', 'hreflang', 'title', 'name', 'href', 'property', 'description', 'content']; diff --git a/tests/Feature/JSON-LD/SchemaCollectionTest.php b/tests/Feature/JSON-LD/SchemaCollectionTest.php index 1e7a773..e1d0aee 100644 --- a/tests/Feature/JSON-LD/SchemaCollectionTest.php +++ b/tests/Feature/JSON-LD/SchemaCollectionTest.php @@ -13,7 +13,26 @@ it('can correctly render a custom JSON-LD Schemas markup', function () { $page = Page::create([]); - $faqPageSchema = $this->faqTestSchema; + $faqPageSchema = [ + '@context' => 'https://schema.org', + '@type' => 'FAQPage', + 'mainEntity' => [ + '@type' => 'Question', + 'name' => 'Can this package add FaqPage to the schema?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Yes!', + ], + ], + [ + '@type' => 'Question', + 'name' => 'Does it support multiple questions?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Of course.', + ], + ], + ]; $page::$overrides = [ 'schema' => SchemaCollection::make()->add($faqPageSchema), @@ -246,7 +265,26 @@ it('can correctly render multiple custom JSON-LD Schemas markup', function () { $page = Page::create([]); - $faqPageSchema = $this->faqTestSchema; + $faqPageSchema = [ + '@context' => 'https://schema.org', + '@type' => 'FAQPage', + 'mainEntity' => [ + '@type' => 'Question', + 'name' => 'Can this package add FaqPage to the schema?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Yes!', + ], + ], + [ + '@type' => 'Question', + 'name' => 'Does it support multiple questions?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Of course.', + ], + ], + ]; $now = now(); $yesterday = now()->yesterday(); diff --git a/tests/TestCase.php b/tests/TestCase.php index 36bca20..32cdbb4 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -9,27 +9,6 @@ class TestCase extends Orchestra { - public array $faqTestSchema = [ - '@context' => 'https://schema.org', - '@type' => 'FAQPage', - 'mainEntity' => [ - '@type' => 'Question', - 'name' => 'Can this package add FaqPage to the schema?', - 'acceptedAnswer' => [ - '@type' => 'Answer', - 'text' => 'Yes!', - ], - ], - [ - '@type' => 'Question', - 'name' => 'Does it support multiple questions?', - 'acceptedAnswer' => [ - '@type' => 'Answer', - 'text' => 'Of course.', - ], - ], - ]; - protected function setUp(): void { parent::setUp(); diff --git a/tests/Unit/Schema/CustomSchemaTest.php b/tests/Unit/Schema/CustomSchemaTest.php index 89f7232..26626f1 100644 --- a/tests/Unit/Schema/CustomSchemaTest.php +++ b/tests/Unit/Schema/CustomSchemaTest.php @@ -3,10 +3,48 @@ use RalphJSmit\Laravel\SEO\Schema\CustomSchema; it('can construct a custom faq schema', function () { - $schema = new CustomSchema($this->faqTestSchema); + $schema = new CustomSchema([ + '@context' => 'https://schema.org', + '@type' => 'FAQPage', + 'mainEntity' => [ + '@type' => 'Question', + 'name' => 'Can this package add FaqPage to the schema?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Yes!', + ], + ], + [ + '@type' => 'Question', + 'name' => 'Does it support multiple questions?', + 'acceptedAnswer' => [ + '@type' => 'Answer', + 'text' => 'Of course.', + ], + ], + ]); expect((string) $schema->render()) ->toBe( - '' + '' ); });