has_moderated 0.0.21 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +48 -9
- data/lib/has_moderated.rb +13 -234
- data/lib/has_moderated/carrier_wave.rb +2 -2
- data/lib/has_moderated/common.rb +129 -0
- data/lib/has_moderated/moderated_associations.rb +59 -0
- data/lib/has_moderated/moderated_attributes.rb +74 -0
- data/lib/has_moderated/moderated_create.rb +48 -0
- data/lib/has_moderated/moderated_destroy.rb +36 -0
- data/lib/has_moderated/moderation_model.rb +64 -23
- data/lib/has_moderated/user_hooks.rb +10 -0
- data/lib/has_moderated/version.rb +1 -1
- data/test/dummy/app/models/hjoin_test.rb +3 -0
- data/test/dummy/app/models/hmanythrough_join.rb +4 -0
- data/test/dummy/app/models/hmanythrough_test.rb +4 -0
- data/test/dummy/app/models/hone_test.rb +3 -0
- data/test/dummy/app/models/photo.rb +1 -1
- data/test/dummy/app/models/subtask.rb +1 -0
- data/test/dummy/app/models/task.rb +7 -2
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20111008195728_create_hone_tests.rb +9 -0
- data/test/dummy/db/migrate/20111008195809_create_hjoin_tests.rb +13 -0
- data/test/dummy/db/migrate/20111009193145_fix_join_table.rb +8 -0
- data/test/dummy/db/migrate/20111009201729_add_title_to_hone_tests.rb +5 -0
- data/test/dummy/db/migrate/20111009205517_create_hmanythrough_tests.rb +9 -0
- data/test/dummy/db/migrate/20111009205545_create_hmanythrough_joins.rb +11 -0
- data/test/dummy/db/schema.rb +33 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +4508 -0
- data/test/dummy/log/test.log +78674 -0
- data/test/dummy/public/test.jpg +0 -0
- data/test/dummy/public/uploads/task_photo/photo/1/test.jpg +0 -0
- data/test/dummy/spec/factories/hjoin_tests.rb +7 -0
- data/test/dummy/spec/factories/hmanythrough_joins.rb +9 -0
- data/test/dummy/spec/factories/hmanythrough_tests.rb +7 -0
- data/test/dummy/spec/factories/hone_tests.rb +7 -0
- data/test/dummy/spec/models/hjoin_test_spec.rb +36 -0
- data/test/dummy/spec/models/hmanythrough_test_spec.rb +99 -0
- data/test/dummy/spec/models/hone_test_spec.rb +36 -0
- data/test/dummy/spec/models/photo_holder_spec.rb +9 -17
- data/test/dummy/spec/models/photo_spec.rb +16 -29
- data/test/dummy/spec/models/task_photo_spec.rb +3 -9
- data/test/dummy/spec/models/task_spec.rb +36 -2
- data/test/dummy/spec/support/photos.rb +28 -0
- metadata +50 -8
- data/test/dummy/falaf/test.rb +0 -0
- data/test/dummy/public/uploads/task_photo/photo/1/logo_arnes.gif +0 -0
Binary file
|
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HjoinTest do
|
4
|
+
it "moderates assoc on create" do
|
5
|
+
t = Task.new :title => "Test"
|
6
|
+
t.hjoin_tests.build :title => "HJoin"
|
7
|
+
t.save
|
8
|
+
|
9
|
+
HjoinTest.count.should eq(0)
|
10
|
+
Task.count.should eq(0)
|
11
|
+
|
12
|
+
Moderation.last.accept
|
13
|
+
|
14
|
+
Task.first.hjoin_tests.count.should eq(1)
|
15
|
+
Task.first.hjoin_tests.first.title.should eq("HJoin")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "moderates assoc on update" do
|
19
|
+
t = Task.new :title => "Test"
|
20
|
+
t.save
|
21
|
+
|
22
|
+
Task.count.should eq(0)
|
23
|
+
|
24
|
+
Moderation.last.accept
|
25
|
+
|
26
|
+
t = Task.first
|
27
|
+
t.hjoin_tests.create! :title => "HJoin"
|
28
|
+
HjoinTest.count.should eq(0)
|
29
|
+
|
30
|
+
Moderation.last.accept
|
31
|
+
HjoinTest.count.should eq(1)
|
32
|
+
|
33
|
+
Task.first.hjoin_tests.count.should eq(1)
|
34
|
+
Task.first.hjoin_tests.first.title.should eq("HJoin")
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HmanythroughTest do
|
4
|
+
it "moderates assoc on create" do
|
5
|
+
t = Task.new :title => "Test"
|
6
|
+
t.hmanythrough_test.build :title => "HJoin"
|
7
|
+
t.save
|
8
|
+
|
9
|
+
HmanythroughTest.count.should eq(0)
|
10
|
+
Task.count.should eq(0)
|
11
|
+
|
12
|
+
Moderation.last.accept
|
13
|
+
|
14
|
+
Task.first.hmanythrough_test.count.should eq(1)
|
15
|
+
Task.first.hmanythrough_test.first.title.should eq("HJoin")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "moderates assoc on update" do
|
19
|
+
t = Task.new :title => "Test"
|
20
|
+
t.save
|
21
|
+
|
22
|
+
Task.count.should eq(0)
|
23
|
+
|
24
|
+
Moderation.last.accept
|
25
|
+
|
26
|
+
t = Task.first
|
27
|
+
t.hmanythrough_test.create! :title => "HJoin"
|
28
|
+
HmanythroughTest.count.should eq(0)
|
29
|
+
|
30
|
+
Moderation.last.accept
|
31
|
+
HmanythroughTest.count.should eq(1)
|
32
|
+
|
33
|
+
Task.first.hmanythrough_test.count.should eq(1)
|
34
|
+
Task.first.hmanythrough_test.first.title.should eq("HJoin")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "moderates assoc on update (through model)" do
|
38
|
+
t = Task.new :title => "Test"
|
39
|
+
t.save
|
40
|
+
|
41
|
+
Task.count.should eq(0)
|
42
|
+
|
43
|
+
Moderation.last.accept
|
44
|
+
|
45
|
+
t = Task.first
|
46
|
+
j = HmanythroughJoin.new :exdata => "Data"
|
47
|
+
j.hmanythrough_test = HmanythroughTest.new :title => "Hello"
|
48
|
+
t.hmanythrough_join << j
|
49
|
+
t.save
|
50
|
+
HmanythroughTest.count.should eq(0)
|
51
|
+
|
52
|
+
Moderation.last.accept
|
53
|
+
HmanythroughTest.count.should eq(1)
|
54
|
+
|
55
|
+
Task.first.hmanythrough_test.count.should eq(1)
|
56
|
+
Task.first.hmanythrough_test.first.title.should eq("Hello")
|
57
|
+
Task.first.hmanythrough_test.first.hmanythrough_join.first.exdata.should eq("Data")
|
58
|
+
end
|
59
|
+
|
60
|
+
it "moderates assoc on update (through model) 2" do
|
61
|
+
pending("need to figure this out, hook will trigger when calling build already")
|
62
|
+
t = Task.new :title => "Test"
|
63
|
+
t.save
|
64
|
+
|
65
|
+
Task.count.should eq(0)
|
66
|
+
|
67
|
+
Moderation.last.accept
|
68
|
+
|
69
|
+
t = Task.first
|
70
|
+
j = t.hmanythrough_join.build :exdata => "Data"
|
71
|
+
j.hmanythrough_test = HmanythroughTest.new :title => "Hello"
|
72
|
+
t.save
|
73
|
+
HmanythroughTest.count.should eq(0)
|
74
|
+
|
75
|
+
raise Moderation.last.to_yaml
|
76
|
+
Moderation.last.accept
|
77
|
+
HmanythroughTest.count.should eq(1)
|
78
|
+
|
79
|
+
Task.first.hmanythrough_test.count.should eq(1)
|
80
|
+
Task.first.hmanythrough_test.first.title.should eq("Hello")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "moderates assoc extra data on create" do
|
84
|
+
t = Task.new :title => "Test"
|
85
|
+
j = t.hmanythrough_join.build :exdata => "Data"
|
86
|
+
j.hmanythrough_test = HmanythroughTest.new :title => "Hello"
|
87
|
+
t.save
|
88
|
+
|
89
|
+
HmanythroughTest.count.should eq(0)
|
90
|
+
Task.count.should eq(0)
|
91
|
+
|
92
|
+
Moderation.last.accept
|
93
|
+
HmanythroughTest.count.should eq(1)
|
94
|
+
|
95
|
+
Task.first.hmanythrough_test.count.should eq(1)
|
96
|
+
Task.first.hmanythrough_test.first.title.should eq("Hello")
|
97
|
+
Task.first.hmanythrough_test.first.hmanythrough_join.first.exdata.should eq("Data")
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HoneTest do
|
4
|
+
it "moderates assoc on create" do
|
5
|
+
t = Task.new :title => "Test"
|
6
|
+
t.hone_test = HoneTest.new :title => "Hone"
|
7
|
+
t.save
|
8
|
+
|
9
|
+
HoneTest.count.should eq(0)
|
10
|
+
Task.count.should eq(0)
|
11
|
+
|
12
|
+
Moderation.last.accept
|
13
|
+
HoneTest.count.should eq(1)
|
14
|
+
|
15
|
+
Task.first.hone_test.title.should eq("Hone")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "moderates assoc on update" do
|
19
|
+
t = Task.new :title => "Test"
|
20
|
+
t.save
|
21
|
+
|
22
|
+
Task.count.should eq(0)
|
23
|
+
|
24
|
+
Moderation.last.accept
|
25
|
+
|
26
|
+
t = Task.first
|
27
|
+
t.association(:hone_test).build :title => "Hone"
|
28
|
+
t.save
|
29
|
+
HoneTest.count.should eq(0)
|
30
|
+
|
31
|
+
Moderation.last.accept
|
32
|
+
HoneTest.count.should eq(1)
|
33
|
+
|
34
|
+
Task.first.hone_test.title.should eq("Hone")
|
35
|
+
end
|
36
|
+
end
|
@@ -1,29 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
def dirEmpty? dirname
|
5
|
-
return true unless File.directory?(dirname)
|
6
|
-
Dir.entries(dirname).size == 2
|
7
|
-
end
|
8
|
-
|
9
|
-
tempdir = File.expand_path("../../../public/uploads/tmp", __FILE__)
|
10
|
-
uploaddir = "/Users/apple/rails/has_moderated/test/dummy/public/uploads/photo/photo/1"
|
11
|
-
SAMPLE_PHOTO_URL = "http://www.arnes.si/typo3conf/ext/ag_arnes_eff_template/templates/template-index/images/logo_arnes.gif"
|
12
2
|
|
13
3
|
describe PhotoHolder do
|
4
|
+
before(:each) do
|
5
|
+
FileUtils.rm_rf(TEMPDIR) # remove temp dir
|
6
|
+
FileUtils.rm_rf(File.expand_path("../../../public/uploads", __FILE__)) # remove uploads dir
|
7
|
+
end
|
8
|
+
|
14
9
|
it "should upload photo" do
|
15
|
-
photo = PhotoHolder.create!(:photos_attributes => { 0 => {:
|
10
|
+
photo = PhotoHolder.create!(:photos_attributes => { 0 => {:photo => carrierwave_test_photo}})
|
16
11
|
|
17
12
|
Photo.count.should eq(0)
|
18
|
-
|
13
|
+
tmpEmpty?.should be_false
|
19
14
|
Moderation.last.accept
|
20
|
-
|
15
|
+
tmpEmpty?.should be_true
|
21
16
|
|
22
17
|
Photo.count.should eq(1)
|
23
18
|
photo = Photo.first
|
24
|
-
photo.photo
|
25
|
-
photo.photo.file.should_not be_nil
|
26
|
-
photo.photo.file.file.should_not be_nil
|
27
|
-
assert(Photo.first.photo.file.file =~ /photo\/1\/logo_arnes.gif\Z/)
|
19
|
+
assert_photo_uploaded(photo.photo)
|
28
20
|
end
|
29
21
|
end
|
@@ -1,43 +1,31 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
def dirEmpty? dirname
|
5
|
-
return true unless File.directory?(dirname)
|
6
|
-
Dir.entries(dirname).size == 2
|
7
|
-
end
|
8
|
-
|
9
|
-
tempdir = File.expand_path("../../../public/uploads/tmp", __FILE__)
|
10
|
-
uploaddir = "/Users/apple/rails/has_moderated/test/dummy/public/uploads/photo/photo/1"
|
11
|
-
SAMPLE_PHOTO_URL = "http://www.arnes.si/typo3conf/ext/ag_arnes_eff_template/templates/template-index/images/logo_arnes.gif"
|
12
2
|
|
13
3
|
describe Photo do
|
14
4
|
before(:each) do
|
15
|
-
FileUtils.rm_rf(
|
5
|
+
FileUtils.rm_rf(TEMPDIR) # remove temp dir
|
16
6
|
FileUtils.rm_rf(File.expand_path("../../../public/uploads", __FILE__)) # remove uploads dir
|
17
7
|
end
|
18
8
|
|
19
9
|
it "should upload photo" do
|
20
|
-
photo = Photo.create!(:
|
10
|
+
photo = Photo.create!(:photo => carrierwave_test_photo)
|
21
11
|
|
22
12
|
Photo.count.should eq(0)
|
23
|
-
|
13
|
+
tmpEmpty?.should be_false
|
24
14
|
Moderation.last.accept
|
25
|
-
|
15
|
+
tmpEmpty?.should be_true
|
26
16
|
|
27
17
|
Photo.count.should eq(1)
|
28
18
|
photo = Photo.first
|
29
|
-
photo.photo
|
30
|
-
photo.photo.file.should_not be_nil
|
31
|
-
photo.photo.file.file.should_not be_nil
|
19
|
+
assert_photo_uploaded(photo.photo)
|
32
20
|
end
|
33
21
|
|
34
22
|
it "should delete temp files if discarding a photo moderation" do
|
35
|
-
photo = Photo.create!(:
|
23
|
+
photo = Photo.create!(:photo => carrierwave_test_photo)
|
36
24
|
|
37
25
|
Photo.count.should eq(0)
|
38
|
-
|
26
|
+
tmpEmpty?.should be_false
|
39
27
|
Moderation.last.discard
|
40
|
-
|
28
|
+
tmpEmpty?.should be_true
|
41
29
|
|
42
30
|
Photo.count.should eq(0)
|
43
31
|
end
|
@@ -49,20 +37,19 @@ describe Photo do
|
|
49
37
|
Moderation.last.accept
|
50
38
|
|
51
39
|
p = Photo.first
|
52
|
-
p.
|
53
|
-
dirEmpty?(
|
40
|
+
p.photo = carrierwave_test_photo
|
41
|
+
dirEmpty?(UPLOADDIR).should be_true
|
54
42
|
p.save
|
55
|
-
dirEmpty?(
|
43
|
+
dirEmpty?(UPLOADDIR).should be_true
|
56
44
|
|
57
45
|
Photo.first.photo.file.should be_nil
|
58
46
|
Moderation.count.should eq(1)
|
59
47
|
|
60
|
-
|
48
|
+
tmpEmpty?.should be_false
|
61
49
|
Moderation.last.accept
|
62
|
-
|
63
|
-
dirEmpty?(
|
64
|
-
Photo.first
|
65
|
-
|
66
|
-
assert(Photo.first.photo.file.file =~ /photo\/1\/logo_arnes.gif\Z/)
|
50
|
+
tmpEmpty?.should be_true
|
51
|
+
dirEmpty?(UPLOADDIR).should be_false
|
52
|
+
photo = Photo.first
|
53
|
+
assert_photo_uploaded(photo.photo)
|
67
54
|
end
|
68
55
|
end
|
@@ -1,19 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
tempdir = File.expand_path("../../../public/uploads/tmp", __FILE__)
|
4
|
-
uploaddir = "/Users/apple/rails/has_moderated/test/dummy/public/uploads/photo/photo/1"
|
5
|
-
SAMPLE_PHOTO_URL = "http://www.arnes.si/typo3conf/ext/ag_arnes_eff_template/templates/template-index/images/logo_arnes.gif"
|
6
|
-
|
7
3
|
describe TaskPhoto do
|
8
4
|
before(:each) do
|
9
|
-
FileUtils.rm_rf(
|
5
|
+
FileUtils.rm_rf(TEMPDIR) # remove temp dir
|
10
6
|
FileUtils.rm_rf(File.expand_path("../../../public/uploads", __FILE__)) # remove uploads dir
|
11
7
|
end
|
12
8
|
|
13
9
|
it "should moderate photos for task on create even if photos themselves are not moderated" do
|
14
10
|
t = Task.new :title => "Task 1"
|
15
11
|
p = t.task_photos.build
|
16
|
-
p.
|
12
|
+
p.photo = carrierwave_test_photo
|
17
13
|
t.save
|
18
14
|
Moderation.count.should eq(1)
|
19
15
|
Task.count.should eq(0)
|
@@ -24,8 +20,6 @@ describe TaskPhoto do
|
|
24
20
|
Task.count.should eq(1)
|
25
21
|
Task.first.title.should eq("Task 1")
|
26
22
|
p = Task.first.task_photos.first
|
27
|
-
p.
|
28
|
-
p.photo.should_not be_nil
|
29
|
-
p.photo.file.should_not be_nil
|
23
|
+
assert_photo_uploaded(p.photo)
|
30
24
|
end
|
31
25
|
end
|
@@ -177,7 +177,7 @@ describe Task do
|
|
177
177
|
Task.count.should eq(0)
|
178
178
|
end
|
179
179
|
|
180
|
-
it "moderates new associations on existing records" do
|
180
|
+
it "moderates new associations on existing records (add_associations_moderated)" do
|
181
181
|
t = Task.create! :title => "Bye Bye"
|
182
182
|
Moderation.last.accept
|
183
183
|
|
@@ -194,7 +194,7 @@ describe Task do
|
|
194
194
|
Task.first.subtasks.first.title.should eq("Hollywood Hills")
|
195
195
|
end
|
196
196
|
|
197
|
-
it "moderates new associations to existing records on existing records" do
|
197
|
+
it "moderates new associations to existing records on existing records (add_associations_moderated)" do
|
198
198
|
sub = Subtask.create! :title => "Hollywood Hills"
|
199
199
|
t = Task.create! :title => "Bye Bye"
|
200
200
|
Moderation.last.accept
|
@@ -211,4 +211,38 @@ describe Task do
|
|
211
211
|
Subtask.count.should eq(1)
|
212
212
|
Task.first.subtasks.first.title.should eq("Hollywood Hills")
|
213
213
|
end
|
214
|
+
|
215
|
+
it "moderates new associations with build" do
|
216
|
+
Task.create! :title => "Bye Bye"
|
217
|
+
Moderation.last.accept
|
218
|
+
|
219
|
+
t = Task.last
|
220
|
+
t.subtasks.build :title => "Jo jo"
|
221
|
+
# TODO
|
222
|
+
# Moderation.count.should eq(0)
|
223
|
+
t.save
|
224
|
+
Moderation.count.should eq(1)
|
225
|
+
|
226
|
+
Task.last.subtasks.count.should eq(0)
|
227
|
+
Moderation.last.accept
|
228
|
+
Task.last.subtasks.first.title.should eq("Jo jo")
|
229
|
+
end
|
230
|
+
|
231
|
+
it "moderates associations to existing records with <<" do
|
232
|
+
Task.create! :title => "Bye Bye"
|
233
|
+
Moderation.last.accept
|
234
|
+
Subtask.create! :title => "Jo jo"
|
235
|
+
|
236
|
+
Moderation.count.should eq(0)
|
237
|
+
|
238
|
+
t = Task.first
|
239
|
+
t.subtasks << Subtask.first
|
240
|
+
|
241
|
+
Task.first.subtasks.count.should eq(0)
|
242
|
+
Moderation.last.accept
|
243
|
+
|
244
|
+
st = Task.first.subtasks.first
|
245
|
+
st.title.should eq("Jo jo")
|
246
|
+
st.id.should eq(Subtask.first.id)
|
247
|
+
end
|
214
248
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
def dirEmpty? dirname
|
4
|
+
return true unless File.directory?(dirname)
|
5
|
+
Dir.entries(dirname).size == 2
|
6
|
+
end
|
7
|
+
|
8
|
+
def tmpEmpty?
|
9
|
+
dirEmpty?(TEMPDIR)
|
10
|
+
end
|
11
|
+
|
12
|
+
TEMPDIR = File.expand_path("../../../public/uploads/tmp", __FILE__)
|
13
|
+
UPLOADDIR = "/Users/apple/rails/has_moderated/test/dummy/public/uploads/photo/photo/1"
|
14
|
+
|
15
|
+
def carrierwave_test_photo
|
16
|
+
test_photo_path = File.expand_path("../../../public/test.jpg", __FILE__)
|
17
|
+
File.open(test_photo_path, "r")
|
18
|
+
end
|
19
|
+
|
20
|
+
def assert_photo_uploaded photo
|
21
|
+
photo.should_not be_nil
|
22
|
+
photo.file.should_not be_nil
|
23
|
+
photo.file.file.should_not be_nil
|
24
|
+
|
25
|
+
filename = photo.file.file
|
26
|
+
File.exist?(filename)
|
27
|
+
assert(filename =~ /photo\/1\/test.jpg\Z/)
|
28
|
+
end
|