@@ -142,6 +142,62 @@ class PublishingApiRake < ActiveSupport::TestCase
142
142
end
143
143
end
144
144
145
+ describe "redirect_unpublished_statistics_announcement" do
146
+ let ( :task ) { Rake ::Task [ "publishing_api:redirect_unpublished_statistics_announcement" ] }
147
+
148
+ test "does not redirect when there is no statistics announcement found" do
149
+ request = stub_any_publishing_api_unpublish
150
+
151
+ out , _err = capture_io { task . invoke ( "unknown-slug" , "https://www.test.gov.uk/government/new" ) }
152
+
153
+ assert_not_requested request
154
+ assert_equal "Could not find Statistics Announcement with slug unknown-slug" , out . strip
155
+ end
156
+
157
+ test "does not redirect when there are multiple statistics announcement found" do
158
+ sa1 = create ( :unpublished_statistics_announcement , slug : "same-slug" , redirect_url : "https://www.test.gov.uk/government/old" )
159
+ sa2 = create ( :unpublished_statistics_announcement , slug : "same-slug" , redirect_url : "https://www.test.gov.uk/government/old" )
160
+ request = stub_any_publishing_api_unpublish
161
+
162
+ out , _err = capture_io { task . invoke ( "same-slug" , "https://www.test.gov.uk/government/new" ) }
163
+
164
+ assert_not_requested request
165
+ assert_equal "More than one Statistics Announcement (including Unpublished) with slug same-slug" , out . strip
166
+ assert_equal sa1 . reload . redirect_url , "https://www.test.gov.uk/government/old"
167
+ assert_equal sa2 . reload . redirect_url , "https://www.test.gov.uk/government/old"
168
+ end
169
+
170
+ test "does not redirect when statistics announcement is not unpublished" do
171
+ statistics_announcement = create ( :statistics_announcement , redirect_url : "https://www.test.gov.uk/government/old" )
172
+ request = stub_any_publishing_api_unpublish
173
+
174
+ out , _err = capture_io { task . invoke ( statistics_announcement . slug , "https://www.test.gov.uk/government/new" ) }
175
+
176
+ assert_not_requested request
177
+ assert_equal "Statistics Announcement with slug #{ statistics_announcement . slug } is not unpublished" , out . strip
178
+ assert_equal statistics_announcement . reload . redirect_url , "https://www.test.gov.uk/government/old"
179
+ end
180
+
181
+ test "redirects statistics announcement and updates the redirect_url" do
182
+ statistics_announcement = create ( :unpublished_statistics_announcement , redirect_url : "https://www.test.gov.uk/government/old" )
183
+
184
+ request = stub_publishing_api_unpublish (
185
+ statistics_announcement . content_id ,
186
+ body : {
187
+ type : "redirect" ,
188
+ locale : "en" ,
189
+ alternative_path : "https://www.test.gov.uk/government/new" ,
190
+ } ,
191
+ )
192
+
193
+ out , _err = capture_io { task . invoke ( statistics_announcement . slug , "https://www.test.gov.uk/government/new" ) }
194
+
195
+ assert_requested request
196
+ assert_includes out , "Unpublishing from Publishing API..."
197
+ assert_equal statistics_announcement . reload . redirect_url , "https://www.test.gov.uk/government/new"
198
+ end
199
+ end
200
+
145
201
describe "redirect_html_attachments" do
146
202
describe "#by_content_id" do
147
203
let ( :task ) { Rake ::Task [ "publishing_api:redirect_html_attachments:by_content_id" ] }
0 commit comments