Skip to content

Commit a717c04

Browse files
committed
test diary model to news model convert
1 parent aca26af commit a717c04

File tree

4 files changed

+133
-8
lines changed

4 files changed

+133
-8
lines changed

test/fixtures/diaries.yml

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,77 @@
1-
lorem:
1+
lorem_cc_licensed:
22
title: Lorem ipsum
33
cached_slug: lorem-ipsum
44
owner: visitor_1
5-
body: Lorem ipsum
6-
wiki_body: Lorem ipsum
5+
body: |-
6+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
7+
Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.
8+
Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
9+
Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum
10+
diam nisl sit amet erat. Duis semper.
11+
12+
Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue.
13+
Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
14+
15+
Praesent egestas leo in pede. Praesent blandit odio eu enim.
16+
Pellentesque sed dui ut augue blandit sodales.
17+
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
18+
posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
19+
Maecenas adipiscing ante non diam sodales hendrerit.
20+
wiki_body: >-
21+
<p>
22+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
23+
Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.
24+
Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
25+
Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum
26+
diam nisl sit amet erat. Duis semper.
27+
</p>
28+
<p>
29+
Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue.
30+
Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
31+
</p>
32+
<p>
33+
Praesent egestas leo in pede. Praesent blandit odio eu enim.
34+
Pellentesque sed dui ut augue blandit sodales.
35+
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
36+
posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
37+
Maecenas adipiscing ante non diam sodales hendrerit.
38+
</p>
39+
40+
lorem_copyright:
41+
title: Lorem ipsum
42+
cached_slug: lorem-ipsum
43+
owner: visitor_2
44+
body: |-
45+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
46+
Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.
47+
Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
48+
Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum
49+
diam nisl sit amet erat. Duis semper.
50+
51+
Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue.
52+
Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
53+
54+
Praesent egestas leo in pede. Praesent blandit odio eu enim.
55+
Pellentesque sed dui ut augue blandit sodales.
56+
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
57+
posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
58+
Maecenas adipiscing ante non diam sodales hendrerit.
59+
wiki_body: >-
60+
<p>
61+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
62+
Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.
63+
Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
64+
Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum
65+
diam nisl sit amet erat. Duis semper.
66+
</p>
67+
<p>
68+
Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue.
69+
Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
70+
</p>
71+
<p>
72+
Praesent egestas leo in pede. Praesent blandit odio eu enim.
73+
Pellentesque sed dui ut augue blandit sodales.
74+
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
75+
posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
76+
Maecenas adipiscing ante non diam sodales hendrerit.
77+
</p>

test/fixtures/nodes.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
diary_lorem_cc_licensed:
2+
cc_licensed: true
3+
user: visitor_1
4+
content: lorem_cc_licensed
5+
content_type: Journal
6+
7+
diary_lorem_copyright:
8+
cc_licensed: false
9+
user: visitor_2
10+
content: lorem_copyright
11+
content_type: Journal

test/fixtures/sections.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
default:
2+
title: LinuxFr.org
3+
cached_slug: linuxfr-org

test/models/diary_test.rb

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,79 @@
1+
# encoding: utf-8
12
require 'test_helper'
23

34
class DiaryTest < ActiveSupport::TestCase
45
test "user with positive karma can create diary" do
5-
diary = diaries(:lorem).dup;
6+
diary = diaries(:lorem_cc_licensed).dup;
67
assert diary.creatable_by?(diary.owner.account);
78
assert diary.save();
89
end
910

1011
test "user with zero karma cannot create diary" do
11-
diary = diaries(:lorem).dup;
12+
diary = diaries(:lorem_cc_licensed).dup;
1213
diary.owner = users(:visitor_zero_karma);
1314
assert_not diary.creatable_by?(diary.owner.account);
1415
assert diary.save(), "Diary model were not saved";
1516
end
1617

1718
test "user with negative karma cannot create diary" do
18-
diary = diaries(:lorem).dup;
19+
diary = diaries(:lorem_cc_licensed).dup;
1920
diary.owner = users(:visitor_negative_karma);
2021
assert_not diary.creatable_by?(diary.owner.account);
2122
assert diary.save(), "Diary model were not saved";
2223
end
2324

2425
test "only admin and moderator can update a diary" do
25-
diary = diaries(:lorem);
26+
diary = diaries(:lorem_cc_licensed);
2627
assert_not diary.updatable_by?(accounts(:visitor_1));
2728
assert_not diary.updatable_by?(accounts(:maintainer_1));
2829
assert diary.updatable_by?(accounts(:moderator_1));
2930
assert diary.updatable_by?(accounts(:admin_1));
3031
end
3132

3233
test "only admin and moderator can destroy a diary" do
33-
diary = diaries(:lorem);
34+
diary = diaries(:lorem_cc_licensed);
3435
assert_not diary.destroyable_by?(accounts(:visitor_1));
3536
assert_not diary.destroyable_by?(accounts(:maintainer_1));
3637
assert diary.destroyable_by?(accounts(:moderator_1));
3738
assert diary.destroyable_by?(accounts(:admin_1));
3839
end
40+
41+
test "convert cc_licensed diary to news in redaction space" do
42+
diary = diaries(:lorem_cc_licensed);
43+
diary.node = nodes(:diary_lorem_cc_licensed);
44+
created_news = diary.convert();
45+
# Retrieve News from database to ensure it were saved correctly
46+
news = News.find(created_news.id);
47+
# Ensure convert work
48+
assert_equal diary.title, news.title;
49+
assert_equal "**TODO** insérer une synthèse du journal", news.versions.first().body;
50+
assert_equal diary.wiki_body, news.versions.first().second_part;
51+
assert_equal diary.owner.try(:name), news.author_name;
52+
assert_equal diary.owner.try(:account).try(:email), news.author_email;
53+
assert_equal diary.node.cc_licensed, news.node.cc_licensed;
54+
assert news.node.cc_licensed;
55+
assert_equal sections(:default).id, news.section_id;
56+
# As diary is cc_licensed, news can be reworked collectively in the redaction space
57+
assert_equal "draft", news.state;
58+
end
59+
60+
test "convert copyrighted diary to news in moderation space" do
61+
diary = diaries(:lorem_copyright);
62+
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;
78+
end
3979
end

0 commit comments

Comments
 (0)