has_moderated 0.0.21 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|