Skip to content

Commit

Permalink
Guard for deleted episodes
Browse files Browse the repository at this point in the history
  • Loading branch information
svevang committed Oct 17, 2024
1 parent 9e361ca commit ccc9c62
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 3 deletions.
2 changes: 1 addition & 1 deletion app/controllers/episodes_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def destroy

respond_to do |format|
if @episode.destroy
@episode.podcast.publish!
@episode.publish!
format.html { redirect_to podcast_episodes_url(@episode.podcast_id), notice: t(".notice") }
else
format.html do
Expand Down
2 changes: 1 addition & 1 deletion app/models/apple/episode_delivery_status.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Apple
class EpisodeDeliveryStatus < ApplicationRecord
belongs_to :episode, class_name: "::Episode"
belongs_to :episode, -> { with_deleted }, class_name: "::Episode"

def self.update_status(episode, attrs)
new_status = (episode.apple_episode_delivery_status&.dup || new(episode: episode))
Expand Down
6 changes: 5 additions & 1 deletion test/factories/apple_episode_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@

# set a complete episode factory varient
factory :uploaded_apple_episode do
feeder_episode { create(:episode, apple_episode_delivery_statuses: [Apple::EpisodeDeliveryStatus.new(delivered: true)]) }
feeder_episode do
ep = create(:episode)
ep.apple_has_delivery!
ep
end
transient do
api_response do
build(:apple_episode_api_response,
Expand Down
9 changes: 9 additions & 0 deletions test/models/apple/episode_delivery_status_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ class Apple::EpisodeDeliveryStatusTest < ActiveSupport::TestCase
it "belongs to an episode" do
assert_equal episode, delivery_status.episode
end

it "can belong to deleted episodes" do
episode.destroy
assert_equal episode, delivery_status.episode
assert_difference "Apple::EpisodeDeliveryStatus.count", +1 do
episode.apple_needs_delivery!
end
assert_equal episode, episode.apple_episode_delivery_statuses.first.episode
end
end

describe "scopes" do
Expand Down

0 comments on commit ccc9c62

Please sign in to comment.