Make three separate unit tests instead of one so we know which case breaks if a regression occurs.
What if the url is correctly formed but otherwise points to nothing or a feed which no longer exists? Is this case handled?
Wouldn't this make sense before the trim with a is_blank() style check? Aka check if it's not just pure whitespace?
This feels pseudo duplicated compared to some of the earlier code. What is the reason for both subscription-centric methods existing, just for my own understanding?
Any way to invert this logic so the check is positive instead of negative? Would help grok it faster. Not major either way.
Good guard, would be also nice if the submit button wasn't clickable if the feed_url text box was empty