Changeset 41266
- Timestamp:
- 08/18/2017 03:03:43 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/widgets.php
r37648 r41266 679 679 } 680 680 681 /** 682 * Register nav menu sidebars. 683 * 684 * @param array $sidebars Sidebar slugs. 685 */ 686 function register_sidebars( $sidebars ) { 687 foreach ( $sidebars as $sidebar ) { 688 register_sidebar( array( 'id' => $sidebar ) ); 689 } 690 } 691 692 /** 693 * Tests for when 'sidebars_widgets' theme mod is populated. 694 * 695 * @covers retrieve_widgets() 696 */ 697 function test_retrieve_widgets_with_theme_mod() { 698 global $sidebars_widgets, $_wp_sidebars_widgets; 699 700 wp_widgets_init(); 701 $this->register_sidebars( array( 'sidebar-1', 'sidebar-2','sidebar-3', 'wp_inactive_widgets' ) ); 702 703 set_theme_mod( 'sidebars_widgets', array( 704 'time' => time(), 705 'data' => array( 706 'sidebar-1' => array( 'tag_cloud-1' ), 707 'sidebar-2' => array( 'text-1' ), 708 'sidebar-3' => array( 'unregistered_widget-1' ), 709 'fantasy' => array( 'archives-2' ), 710 'wp_inactive_widgets' => array(), 711 ), 712 ) ); 713 714 $result = retrieve_widgets( true ); 715 716 $_wp_sidebars_widgets = array(); 717 $this->assertInternalType( 'array', $result ); 718 $this->assertNotEmpty( $result ); 719 720 foreach ( $sidebars_widgets as $widgets ) { 721 $this->assertInternalType( 'array', $widgets ); 722 } 723 724 $this->assertContains( 'tag_cloud-1', $sidebars_widgets['sidebar-1'] ); 725 $this->assertContains( 'text-1', $sidebars_widgets['sidebar-2'] ); 726 $this->assertContains( 'archives-2', $sidebars_widgets['orphaned_widgets_1'] ); 727 728 // Unregistered widget should be filtered out. 729 $this->assertEmpty( $sidebars_widgets['sidebar-3'] ); 730 731 // 6 default widgets - 1 active text widget = 5. 732 $this->assertCount( 5, $sidebars_widgets['wp_inactive_widgets'] ); 733 $this->assertContains( 'meta-2', $sidebars_widgets['wp_inactive_widgets'] ); 734 $this->assertContains( 'search-2', $sidebars_widgets['wp_inactive_widgets'] ); 735 $this->assertContains( 'categories-2', $sidebars_widgets['wp_inactive_widgets'] ); 736 $this->assertContains( 'recent-posts-2', $sidebars_widgets['wp_inactive_widgets'] ); 737 $this->assertContains( 'recent-comments-2', $sidebars_widgets['wp_inactive_widgets'] ); 738 739 // Theme mode with previous widgets was removed. 740 $this->assertFalse( get_theme_mod( 'sidebars_widgets' ) ); 741 742 // Sidebar_widgets option was updated. 743 $this->assertEquals( $sidebars_widgets, wp_get_sidebars_widgets() ); 744 } 745 746 /** 747 * Tests for when sidebars widgets matches registered sidebars. 748 * 749 * @covers retrieve_widgets() 750 */ 751 function test_retrieve_widgets_with_sidebars_widgets_matching_registered_sidebars() { 752 global $sidebars_widgets; 753 754 wp_widgets_init(); 755 $this->register_sidebars( array( 'sidebar-1', 'sidebar-2','sidebar-3', 'wp_inactive_widgets' ) ); 756 757 $sidebars_widgets = array( 758 'sidebar-1' => array( 'tag_cloud-1' ), 759 'sidebar-2' => array( 'text-1' ), 760 'sidebar-3' => array( 'custom_widget-1' ), 761 'wp_inactive_widgets' => array(), 762 ); 763 764 $result = retrieve_widgets( true ); 765 766 // $sidebars_widgets matches registered sidebars. 767 $this->assertNull( $result ); 768 769 foreach ( $sidebars_widgets as $widgets ) { 770 $this->assertInternalType( 'array', $widgets ); 771 } 772 773 $this->assertContains( 'tag_cloud-1', $sidebars_widgets['sidebar-1'] ); 774 $this->assertContains( 'text-1', $sidebars_widgets['sidebar-2'] ); 775 776 // No widget validity check when $sidebars_widgets matches registered sidebars. 777 $this->assertContains( 'custom_widget-1', $sidebars_widgets['sidebar-3'] ); 778 779 // No lost widgets when $sidebars_widgets matches registered sidebars. 780 $this->assertEmpty( $sidebars_widgets['wp_inactive_widgets'] ); 781 } 782 783 /** 784 * Tests for when sidebars widgets doesn't match registered sidebars. 785 * 786 * @covers retrieve_widgets() 787 */ 788 function test_retrieve_widgets_with_sidebars_widgets_not_matching_registered_sidebars() { 789 global $sidebars_widgets, $_wp_sidebars_widgets; 790 791 wp_widgets_init(); 792 $this->register_sidebars( array( 'sidebar-1', 'sidebar-2','sidebar-3', 'wp_inactive_widgets' ) ); 793 794 $sidebars_widgets = array( 795 'sidebar-1' => array( 'tag_cloud-1' ), 796 'sidebar-2' => array( 'text-1' ), 797 'fantasy' => array( 'unregistered_widget-1' ), 798 'wp_inactive_widgets' => array(), 799 ); 800 801 // Theme changed. 802 $result = retrieve_widgets( true ); 803 804 $_wp_sidebars_widgets = array(); 805 $this->assertInternalType( 'array', $result ); 806 $this->assertNotEmpty( $result ); 807 808 foreach ( $sidebars_widgets as $widgets ) { 809 $this->assertInternalType( 'array', $widgets ); 810 } 811 812 // Current theme doesn't have a fantasy-sidebar. 813 $this->assertArrayNotHasKey( 'fantasy', $sidebars_widgets ); 814 $this->assertArrayHasKey( 'sidebar-3', $sidebars_widgets ); 815 816 $this->assertContains( 'tag_cloud-1', $sidebars_widgets['sidebar-1'] ); 817 $this->assertContains( 'text-1', $sidebars_widgets['sidebar-2'] ); 818 $this->assertEmpty( $sidebars_widgets['sidebar-3'] ); 819 820 // We should not have orphaned widgets, because widget was not registered. 821 $this->assertArrayNotHasKey( 'orphaned_widgets_1', $sidebars_widgets ); 822 823 // 6 default widgets. 824 $this->assertCount( 6, $sidebars_widgets['wp_inactive_widgets'] ); 825 826 $this->assertContains( 'archives-2', $sidebars_widgets['wp_inactive_widgets'] ); 827 $this->assertContains( 'meta-2', $sidebars_widgets['wp_inactive_widgets'] ); 828 $this->assertContains( 'search-2', $sidebars_widgets['wp_inactive_widgets'] ); 829 $this->assertContains( 'categories-2', $sidebars_widgets['wp_inactive_widgets'] ); 830 $this->assertContains( 'recent-posts-2', $sidebars_widgets['wp_inactive_widgets'] ); 831 $this->assertContains( 'recent-comments-2', $sidebars_widgets['wp_inactive_widgets'] ); 832 833 // Sidebar_widgets option was updated. 834 $this->assertEquals( $sidebars_widgets, wp_get_sidebars_widgets() ); 835 836 // Reset. 837 $sidebars_widgets = array( 838 'sidebar-1' => array( 'tag_cloud-1' ), 839 'sidebar-2' => array( 'text-1' ), 840 'fantasy' => array( 'archives-2' ), 841 'wp_inactive_widgets' => array(), 842 ); 843 844 // Theme did not change. 845 $result = retrieve_widgets(); 846 847 $_wp_sidebars_widgets = array(); 848 $this->assertInternalType( 'array', $result ); 849 $this->assertNotEmpty( $result ); 850 851 foreach ( $sidebars_widgets as $widgets ) { 852 $this->assertInternalType( 'array', $widgets ); 853 } 854 855 /* 856 * Only returns intersection of registered sidebars and saved sidebars, 857 * so neither fantasy-sidebar nor sidebar-3 will make the cut. 858 */ 859 $this->assertArrayNotHasKey( 'fantasy', $sidebars_widgets ); 860 $this->assertArrayNotHasKey( 'sidebar-3', $sidebars_widgets ); 861 862 // archives-2 ends up as an orphan because of the above behavior. 863 $this->assertContains( 'archives-2', $sidebars_widgets['orphaned_widgets_1'] ); 864 $this->assertContains( 'tag_cloud-1', $sidebars_widgets['sidebar-1'] ); 865 $this->assertContains( 'text-1', $sidebars_widgets['sidebar-2'] ); 866 867 // 6 default widgets - 1 active text widget = 5. 868 $this->assertCount( 5, $sidebars_widgets['wp_inactive_widgets'] ); 869 870 $this->assertContains( 'meta-2', $sidebars_widgets['wp_inactive_widgets'] ); 871 $this->assertContains( 'search-2', $sidebars_widgets['wp_inactive_widgets'] ); 872 $this->assertContains( 'categories-2', $sidebars_widgets['wp_inactive_widgets'] ); 873 $this->assertContains( 'recent-posts-2', $sidebars_widgets['wp_inactive_widgets'] ); 874 $this->assertContains( 'recent-comments-2', $sidebars_widgets['wp_inactive_widgets'] ); 875 876 // Sidebar_widgets option was updated. 877 $this->assertEquals( $sidebars_widgets, wp_get_sidebars_widgets() ); 878 } 879 880 /** 881 * Tests for Customizer mode. 882 * 883 * @covers retrieve_widgets() 884 */ 885 function test_retrieve_widgets_for_customizer() { 886 global $sidebars_widgets, $_wp_sidebars_widgets; 887 888 wp_widgets_init(); 889 $this->register_sidebars( array( 'sidebar-1', 'sidebar-2','sidebar-3', 'wp_inactive_widgets' ) ); 890 891 $old_sidebars_widgets = array( 892 'time' => time(), 893 'data' => array( 894 'sidebar-1' => array( 'tag_cloud-1' ), 895 'sidebar-2' => array( 'text-1' ), 896 'sidebar-3' => array( 'unregistered_widget-1' ), 897 'fantasy' => array( 'archives-2' ), 898 'wp_inactive_widgets' => array(), 899 ), 900 ); 901 set_theme_mod( 'sidebars_widgets', $old_sidebars_widgets ); 902 903 $result = retrieve_widgets( 'customize' ); 904 905 $_wp_sidebars_widgets = array(); 906 $this->assertInternalType( 'array', $result ); 907 $this->assertNotEmpty( $result ); 908 909 foreach ( $sidebars_widgets as $widgets ) { 910 $this->assertInternalType( 'array', $widgets ); 911 } 912 913 $this->assertContains( 'tag_cloud-1', $sidebars_widgets['sidebar-1'] ); 914 $this->assertContains( 'text-1', $sidebars_widgets['sidebar-2'] ); 915 $this->assertContains( 'archives-2', $sidebars_widgets['orphaned_widgets_1'] ); 916 $this->assertArrayHasKey( 'sidebar-3', $sidebars_widgets ); 917 $this->assertEmpty( $sidebars_widgets['sidebar-3'] ); 918 $this->assertCount( 5, $sidebars_widgets['wp_inactive_widgets'] ); 919 920 $this->assertContains( 'meta-2', $sidebars_widgets['wp_inactive_widgets'] ); 921 $this->assertContains( 'search-2', $sidebars_widgets['wp_inactive_widgets'] ); 922 $this->assertContains( 'categories-2', $sidebars_widgets['wp_inactive_widgets'] ); 923 $this->assertContains( 'recent-posts-2', $sidebars_widgets['wp_inactive_widgets'] ); 924 $this->assertContains( 'recent-comments-2', $sidebars_widgets['wp_inactive_widgets'] ); 925 926 // Theme mod with previous widgets was not removed. 927 $this->assertEqualSets( $old_sidebars_widgets, get_theme_mod( 'sidebars_widgets' ) ); 928 929 // Sidebar_widgets option was not updated. 930 $this->assertNotEquals( $sidebars_widgets, wp_get_sidebars_widgets() ); 931 } 681 932 }
Note: See TracChangeset
for help on using the changeset viewer.