Skip to content

Commit a4021e2

Browse files
committed
Use new HTTP mock feature to more reliably test
1 parent e4d0dd9 commit a4021e2

File tree

3 files changed

+145
-46
lines changed

3 files changed

+145
-46
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"wp-cli/entity-command": "^1.3 || ^2",
2626
"wp-cli/language-command": "^2.0",
2727
"wp-cli/scaffold-command": "^1.2 || ^2",
28-
"wp-cli/wp-cli-tests": "^4"
28+
"wp-cli/wp-cli-tests": "^4.3.7"
2929
},
3030
"config": {
3131
"process-timeout": 7200,

features/plugin.feature

Lines changed: 70 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -811,57 +811,95 @@ Feature: Manage WordPress plugins
811811
5.5
812812
"""
813813

814-
@require-php-7
815814
Scenario: Show plugin update as unavailable if it doesn't meet WordPress requirements
816815
Given a WP install
817-
818-
When I run `wp core download --version=6.4 --force`
819-
And I run `rm -r wp-content/themes/*`
820-
And I run `wp plugin install wp-super-cache --version=1.9.4`
821-
822-
When I run `wp plugin list --name=wp-super-cache --field=update_version`
823-
And save STDOUT as {UPDATE_VERSION}
824-
825-
When I run `wp plugin list --name=wp-super-cache --field=requires`
826-
And save STDOUT as {REQUIRES}
827-
828-
When I run `wp plugin list --name=wp-super-cache --field=requires_php`
829-
And save STDOUT as {REQUIRES_PHP}
816+
And a wp-content/plugins/example/example.php file:
817+
"""
818+
<?php
819+
/**
820+
* Plugin Name: Example Plugin
821+
* Version: 1.0.0
822+
* Requires at least: 3.7
823+
* Tested up to: 6.7
824+
"""
825+
826+
Given that HTTP requests to https://api.wordpress.org/plugins/update-check/1.1/ will respond with:
827+
"""
828+
HTTP/1.1 200 OK
829+
830+
{
831+
"plugins": [],
832+
"translations": [],
833+
"no_update": {
834+
"example/example.php": {
835+
"id": "w.org/plugins/example",
836+
"slug": "example",
837+
"plugin": "example/example.php",
838+
"new_version": "2.0.0",
839+
840+
"requires": "100",
841+
"requires_php": "7.2",
842+
"requires_plugins": [],
843+
"compatibility": []
844+
}
845+
}
846+
}
847+
"""
830848

831849
And I run `wp plugin list`
832850
Then STDOUT should be a table containing rows:
833851
| name | status | update | version | update_version | auto_update | requires | requires_php |
834-
| wp-super-cache | inactive | unavailable | 1.9.4 | {UPDATE_VERSION} | off | {REQUIRES} | {REQUIRES_PHP} |
852+
| example | inactive | unavailable | 1.0.0 | 2.0.0 | off | 100 | 7.2 |
835853

836-
When I try `wp plugin update wp-super-cache`
854+
When I try `wp plugin update example`
837855
Then STDERR should contain:
838856
"""
839-
Warning: wp-super-cache: This update requires WordPress version
857+
Warning: example: This update requires WordPress version 100
840858
"""
841859

842-
@less-than-php-8.0 @require-wp-5.6
843-
Scenario: Show plugin update as unavailable if it doesn't meet PHP requirements
860+
Scenario: Show plugin update as unavailable if it doesn't meet PHP requirements
844861
Given a WP install
862+
And a wp-content/plugins/example/example.php file:
863+
"""
864+
<?php
865+
/**
866+
* Plugin Name: Example Plugin
867+
* Version: 1.0.0
868+
* Requires at least: 3.7
869+
* Tested up to: 6.7
870+
"""
845871

846-
And I run `wp plugin install edit-flow --version=0.9.8`
847-
848-
When I run `wp plugin list --name=edit-flow --field=update_version`
849-
And save STDOUT as {UPDATE_VERSION}
850-
851-
When I run `wp plugin list --name=edit-flow --field=requires`
852-
And save STDOUT as {REQUIRES}
853-
854-
When I run `wp plugin list --name=edit-flow --field=requires_php`
855-
And save STDOUT as {REQUIRES_PHP}
872+
Given that HTTP requests to https://api.wordpress.org/plugins/update-check/1.1/ will respond with:
873+
"""
874+
HTTP/1.1 200 OK
875+
876+
{
877+
"plugins": {
878+
"example/example.php": {
879+
"id": "w.org/plugins/example",
880+
"slug": "example",
881+
"plugin": "example/example.php",
882+
"new_version": "2.0.0",
883+
"requires": "3.7",
884+
"tested": "6.6",
885+
"requires_php": "100",
886+
"requires_plugins": [],
887+
"compatibility": []
888+
}
889+
},
890+
"translations": [],
891+
"no_update": []
892+
}
893+
"""
856894

857895
And I run `wp plugin list`
858896
Then STDOUT should be a table containing rows:
859897
| name | status | update | version | update_version | auto_update | requires | requires_php |
860-
| edit-flow | inactive | unavailable | 0.9.8 | {UPDATE_VERSION} | off | {REQUIRES} | {REQUIRES_PHP} |
898+
| example | inactive | unavailable | 1.0.0 | 2.0.0 | off | 3.7 | 100 |
861899

862-
When I try `wp plugin update edit-flow`
900+
When I try `wp plugin update example`
863901
Then STDERR should contain:
864902
"""
865-
Warning: edit-flow: This update requires PHP version
903+
Warning: example: This update requires PHP version 100
866904
"""
867905

features/theme.feature

Lines changed: 74 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -624,27 +624,88 @@ Feature: Manage WordPress themes
624624
@require-php-7
625625
Scenario: Show theme update as unavailable if it doesn't meet WordPress requirements
626626
Given a WP install
627+
And a wp-content/themes/example/style.css file:
628+
"""
629+
/*
630+
Theme Name: example
631+
Version: 1.0.0
632+
*/
633+
"""
634+
And a wp-content/themes/example/index.php file:
635+
"""
636+
<?php
637+
// Silence is golden.
638+
"""
627639

628-
When I run `wp core download --version=6.2 --force`
629-
And I run `rm -r wp-content/themes/*`
630-
And I run `wp theme install kadence --version=1.1.1`
640+
Given that HTTP requests to https://api.wordpress.org/themes/update-check/1.1/ will respond with:
641+
"""
642+
HTTP/1.1 200 OK
631643
632-
When I run `wp theme list --name=kadence --field=update_version`
633-
And save STDOUT as {UPDATE_VERSION}
644+
{
645+
"themes": {
646+
"example": {
647+
"theme": "example",
648+
"new_version": "2.0.0",
649+
"requires": "100",
650+
"requires_php": "5.6"
651+
}
652+
},
653+
"translations": [],
654+
"no_update": []
655+
}
656+
"""
634657

635-
When I run `wp theme list --name=kadence --field=requires`
636-
And save STDOUT as {REQUIRES}
658+
And I run `wp theme list`
659+
Then STDOUT should be a table containing rows:
660+
| name | status | update | version | update_version | auto_update | requires | requires_php |
661+
| example | inactive | unavailable | 1.0.0 | 2.0.0 | off | 100 | 5.6 |
662+
663+
When I try `wp theme update example`
664+
Then STDERR should contain:
665+
"""
666+
Warning: example: This update requires WordPress version 100
667+
"""
668+
669+
Scenario: Show theme update as unavailable if it doesn't meet PHP requirements
670+
Given a WP install
671+
And a wp-content/themes/example/style.css file:
672+
"""
673+
/*
674+
Theme Name: example
675+
Version: 1.0.0
676+
*/
677+
"""
678+
And a wp-content/themes/example/index.php file:
679+
"""
680+
<?php
681+
// Silence is golden.
682+
"""
683+
684+
Given that HTTP requests to https://api.wordpress.org/themes/update-check/1.1/ will respond with:
685+
"""
686+
HTTP/1.1 200 OK
637687
638-
When I run `wp theme list --name=kadence --field=requires_php`
639-
And save STDOUT as {REQUIRES_PHP}
688+
{
689+
"themes": {
690+
"example": {
691+
"theme": "example",
692+
"new_version": "2.0.0",
693+
"requires": "3.7",
694+
"requires_php": "100"
695+
}
696+
},
697+
"translations": [],
698+
"no_update": []
699+
}
700+
"""
640701

641702
And I run `wp theme list`
642703
Then STDOUT should be a table containing rows:
643-
| name | status | update | version | update_version | auto_update | requires | requires_php |
644-
| kadence | inactive | unavailable | 1.1.1 | {UPDATE_VERSION} | off | {REQUIRES} | {REQUIRES_PHP} |
704+
| name | status | update | version | update_version | auto_update | requires | requires_php |
705+
| example | inactive | unavailable | 1.0.0 | 2.0.0 | off | 3.7 | 100 |
645706

646-
When I try `wp theme update kadence`
707+
When I try `wp theme update example`
647708
Then STDERR should contain:
648709
"""
649-
Warning: kadence: This update requires WordPress version
710+
Warning: example: This update requires PHP version 100
650711
"""

0 commit comments

Comments
 (0)