Skip to content

Commit 368abcf

Browse files
authored
Merge pull request #345 from Trim/fix-diary-converter
Fix diary converter
2 parents c176575 + d61cf09 commit 368abcf

2 files changed

Lines changed: 13 additions & 18 deletions

File tree

app/models/diary.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class Diary < Content
3030
length: { maximum: 100, message: "Le titre est trop long" }
3131
validates :wiki_body, presence: { message: "Vous ne pouvez pas poster un journal vide" }
3232

33+
validate :convert_only_cc_licensed_diary, on: :convert
34+
3335
wikify_attr :body
3436
truncate_attr :body
3537

@@ -57,8 +59,12 @@ def destroyable_by?(account)
5759
end
5860

5961
### Moving ###
62+
def convert_only_cc_licensed_diary
63+
errors.add :base, :cannot_convert, message: "Le journal n’a pas été publié sous licence CC By-SA 4.0, il ne peut donc pas être proposé en dépêche." unless node.cc_licensed?
64+
end
6065

6166
def convert
67+
validate!(:convert)
6268
@news = News.new title: title,
6369
wiki_body: "**TODO** insérer une synthèse du journal",
6470
wiki_second_part: wiki_body,
@@ -68,9 +74,8 @@ def convert
6874
@news.transaction do
6975
@news.save!
7076
$redis.set "convert/#{@news.id}", self.id
71-
@news.node.update_column(:cc_licensed, true) if node.cc_licensed?
77+
@news.node.update_column(:cc_licensed, node.cc_licensed)
7278
@news.links.create title: "Journal à l’origine de la dépêche", url: "https://#{MY_DOMAIN}/users/#{owner.to_param}/journaux/#{to_param}", lang: "fr"
73-
@news.submit! unless node.cc_licensed?
7479
@news
7580
end
7681
end

test/models/diary_test.rb

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,13 @@ class DiaryTest < ActiveSupport::TestCase
5757
assert_equal "draft", news.state;
5858
end
5959

60-
test "convert copyrighted diary to news in moderation space" do
60+
test "cannot convert non CC licensed diary to news" do
6161
diary = diaries(:lorem_copyright);
6262
diary.node = nodes(:diary_lorem_copyright);
63-
created_news = diary.convert();
64-
# Retrieve News from database to ensure it were saved correctly
65-
news = News.find(created_news.id);
66-
# Ensure convert work
67-
assert_equal diary.title, news.title;
68-
assert_equal "**TODO** insérer une synthèse du journal", news.versions.first().body;
69-
assert_equal diary.wiki_body, news.versions.first().second_part;
70-
assert_equal diary.owner.try(:name), news.author_name;
71-
assert_equal diary.owner.try(:account).try(:email), news.author_email;
72-
# Even if original diary were copyrighted, the created news is cc_licensed
73-
assert_not_equal diary.node.cc_licensed, news.node.cc_licensed;
74-
assert news.node.cc_licensed;
75-
assert_equal sections(:default).id, news.section_id;
76-
# As diary is not cc_licensed, news cannot be reworked collectively in the redaction space
77-
assert_equal "candidate", news.state;
63+
assert_raises(ActiveRecord::RecordInvalid) do
64+
diary.convert
65+
end
66+
assert_equal diary.errors.details[:base].first[:error], :cannot_convert
67+
assert diary.invalid?(:convert)
7868
end
7969
end

0 commit comments

Comments
 (0)