diff options
author | Kevin Decherf <kevin@kdecherf.com> | 2018-09-06 22:26:20 +0200 |
---|---|---|
committer | Kevin Decherf <kevin@kdecherf.com> | 2018-10-22 23:01:16 +0200 |
commit | e07fadea76aa7329c4b955a59e74cb867c733706 (patch) | |
tree | 8dcc67b77766c59961d1764c33976b0aa62ac448 /tests/Wallabag | |
parent | 781864b9546b0ff2d6fe42ce72f78b8f40b785e9 (diff) | |
download | wallabag-e07fadea76aa7329c4b955a59e74cb867c733706.tar.gz wallabag-e07fadea76aa7329c4b955a59e74cb867c733706.tar.zst wallabag-e07fadea76aa7329c4b955a59e74cb867c733706.zip |
Refactor updateOriginUrl to include new behaviors behaviors
- Leave origin_url unchanged if difference is an ending slash
- Leave origin_url unchanged if difference is scheme
- Ignore (noop) if difference is query string or fragment
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
Diffstat (limited to 'tests/Wallabag')
-rw-r--r-- | tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php | 121 |
1 files changed, 95 insertions, 26 deletions
diff --git a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php index 84b38f02..c20732cc 100644 --- a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php +++ b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php | |||
@@ -740,6 +740,101 @@ class ContentProxyTest extends TestCase | |||
740 | } | 740 | } |
741 | 741 | ||
742 | /** | 742 | /** |
743 | * Data provider for testWithChangedUrl. | ||
744 | * | ||
745 | * Arrays contain the following values: | ||
746 | * $entry_url | ||
747 | * $origin_url | ||
748 | * $content_url | ||
749 | * $expected_entry_url | ||
750 | * $expected_origin_url | ||
751 | * $expected_domain | ||
752 | */ | ||
753 | public function dataForChangedUrl() | ||
754 | { | ||
755 | return [ | ||
756 | 'normal' => [ | ||
757 | 'http://0.0.0.0', | ||
758 | null, | ||
759 | 'http://1.1.1.1', | ||
760 | 'http://1.1.1.1', | ||
761 | 'http://0.0.0.0', | ||
762 | '1.1.1.1', | ||
763 | ], | ||
764 | 'origin already set' => [ | ||
765 | 'http://0.0.0.0', | ||
766 | 'http://hello', | ||
767 | 'http://1.1.1.1', | ||
768 | 'http://1.1.1.1', | ||
769 | 'http://hello', | ||
770 | '1.1.1.1', | ||
771 | ], | ||
772 | 'trailing slash' => [ | ||
773 | 'https://example.com/hello-world', | ||
774 | null, | ||
775 | 'https://example.com/hello-world/', | ||
776 | 'https://example.com/hello-world/', | ||
777 | null, | ||
778 | 'example.com', | ||
779 | ], | ||
780 | 'no query string in fetched content' => [ | ||
781 | 'https://example.org/hello?world=1', | ||
782 | null, | ||
783 | 'https://example.org/hello', | ||
784 | 'https://example.org/hello?world=1', | ||
785 | null, | ||
786 | 'example.org', | ||
787 | ], | ||
788 | 'query string in fetched content' => [ | ||
789 | 'https://example.org/hello', | ||
790 | null, | ||
791 | 'https://example.org/hello?world=1', | ||
792 | 'https://example.org/hello', | ||
793 | null, | ||
794 | 'example.org', | ||
795 | ], | ||
796 | 'fragment in fetched content' => [ | ||
797 | 'https://example.org/hello', | ||
798 | null, | ||
799 | 'https://example.org/hello#world', | ||
800 | 'https://example.org/hello', | ||
801 | null, | ||
802 | 'example.org', | ||
803 | ], | ||
804 | ]; | ||
805 | } | ||
806 | |||
807 | /** | ||
808 | * @dataProvider dataForChangedUrl | ||
809 | */ | ||
810 | public function testWithChangedUrl($entry_url, $origin_url, $content_url, $expected_entry_url, $expected_origin_url, $expected_domain) | ||
811 | { | ||
812 | $tagger = $this->getTaggerMock(); | ||
813 | $tagger->expects($this->once()) | ||
814 | ->method('tag'); | ||
815 | |||
816 | $proxy = new ContentProxy((new Graby()), $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage, true); | ||
817 | $entry = new Entry(new User()); | ||
818 | $entry->setOriginUrl($origin_url); | ||
819 | $proxy->updateEntry( | ||
820 | $entry, | ||
821 | $entry_url, | ||
822 | [ | ||
823 | 'html' => false, | ||
824 | 'title' => '', | ||
825 | 'url' => $content_url, | ||
826 | 'content_type' => '', | ||
827 | 'language' => '', | ||
828 | ], | ||
829 | true | ||
830 | ); | ||
831 | |||
832 | $this->assertSame($expected_entry_url, $entry->getUrl()); | ||
833 | $this->assertSame($expected_domain, $entry->getDomainName()); | ||
834 | $this->assertSame($expected_origin_url, $entry->getOriginUrl()); | ||
835 | } | ||
836 | |||
837 | /** | ||
743 | * https://stackoverflow.com/a/18506801. | 838 | * https://stackoverflow.com/a/18506801. |
744 | * | 839 | * |
745 | * @param $string | 840 | * @param $string |
@@ -775,32 +870,6 @@ class ContentProxyTest extends TestCase | |||
775 | return $string; | 870 | return $string; |
776 | } | 871 | } |
777 | 872 | ||
778 | public function testWithChangedUrl() | ||
779 | { | ||
780 | $tagger = $this->getTaggerMock(); | ||
781 | $tagger->expects($this->once()) | ||
782 | ->method('tag'); | ||
783 | |||
784 | $proxy = new ContentProxy((new Graby()), $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage, true); | ||
785 | $entry = new Entry(new User()); | ||
786 | $proxy->updateEntry( | ||
787 | $entry, | ||
788 | 'http://0.0.0.0', | ||
789 | [ | ||
790 | 'html' => false, | ||
791 | 'title' => '', | ||
792 | 'url' => 'http://1.1.1.1', | ||
793 | 'content_type' => '', | ||
794 | 'language' => '', | ||
795 | ], | ||
796 | true | ||
797 | ); | ||
798 | |||
799 | $this->assertSame('http://1.1.1.1', $entry->getUrl()); | ||
800 | $this->assertSame('1.1.1.1', $entry->getDomainName()); | ||
801 | $this->assertSame('http://0.0.0.0', $entry->getOriginUrl()); | ||
802 | } | ||
803 | |||
804 | private function getTaggerMock() | 873 | private function getTaggerMock() |
805 | { | 874 | { |
806 | return $this->getMockBuilder(RuleBasedTagger::class) | 875 | return $this->getMockBuilder(RuleBasedTagger::class) |