mm-draft 0.1.7 → 0.1.8

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 220381bc555c836661398b132bf81d72da0f555c
4
+ data.tar.gz: 246c792cc5415c90189e39f57c4b36a4fa05e1f9
5
+ SHA512:
6
+ metadata.gz: f177e282b70d2073b394ec42db30d6045e17fba04593a0b63797feeb0ddbab4e574f6dd42499a8a4408eb2d4a825515f9dc7f00b7f0847ea7397d35c6c169c3c
7
+ data.tar.gz: 98e8501ff1417fd4310b2235d6bf2cc7e1351018cb267f476dd8a247b2dee33aa4bc4f30917e631670b4e0ffa102e76b4e5c852aa12bbcca3f0d8ce6b96d281a
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
  gem 'bson_ext', '>= 1.6.4'
@@ -7,14 +7,13 @@ gem 'multi_json', '>= 1.3.6'
7
7
  group :test do
8
8
  gem 'jnunemaker-matchy', '>= 0.4', :require => 'matchy'
9
9
  gem 'shoulda', '>= 3.1.1'
10
- gem 'mocha', '>= 0.12.3'
10
+ gem 'mocha', '>= 0.12.3', :require => 'mocha/setup'
11
11
  gem 'database_cleaner', '>= 0.8.0'
12
12
  end
13
13
 
14
- group :development do
15
- gem "wirble"
16
- gem "hirb"
17
- gem "awesome_print"
14
+ group :development, :test do
15
+ gem 'coveralls', :require => false
16
+ gem 'simplecov', :require => false
18
17
  end
19
18
 
20
- gemspec
19
+ gem 'mongo_mapper', '> 0.12'
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # MongoMapper Draft plugin
2
+ [![Build Status](https://travis-ci.org/leifcr/mm-draft.svg?branch=master)](https://travis-ci.org/leifcr/mm-draft) [![Coverage Status](https://coveralls.io/repos/leifcr/mm-draft/badge.png)](https://coveralls.io/r/leifcr/mm-draft) [![Dependency Status](https://gemnasium.com/leifcr/mm-draft.svg)](https://gemnasium.com/leifcr/mm-draft)
2
3
 
3
- Plugin for MongoMapper to have draft/published option on models.
4
4
 
5
- Works with ramdiv-mongo_mapper_acts_as_tree.
5
+ Plugin for MongoMapper to have draft/published option on models.
6
6
 
7
- NOTE: Since ramdiv-mongo_mapper_acts_as_tree hasn't been updated in a while, I will change this to support Oktavilla/mongo_mapper_tree instead (http://github.com/ramdiv/mongo_mapper_acts_as_tree)
7
+ NOTE: Can have issues with other plugins...
8
8
 
9
9
  ##Instance methods
10
10
  <pre>
@@ -14,7 +14,7 @@ module MongoMapper
14
14
  def draft?
15
15
  self.draft
16
16
  end
17
-
17
+
18
18
  def published?
19
19
  if draft?
20
20
  return false if self.draft_record_published_id == nil # save a query and return false
@@ -24,28 +24,28 @@ module MongoMapper
24
24
  end
25
25
  false
26
26
  end
27
-
27
+
28
28
  def publish
29
- if (draft? == false) # don't publish non-drafts...
30
- return false
31
- end
32
-
29
+ return false if (draft? == false) # don't publish non-drafts...
30
+
33
31
  if (self.changed?) # save any changes, in case publish is called directly instead of save
34
32
  return false if (self.save == false)
35
33
  end
36
34
 
37
-
35
+
38
36
  # if already published, keep some old data to update instead of insert
39
37
  if (self.published?)
40
38
  old_published_record = self.published_record
41
39
  # support for mm-tree
42
40
  # remove parents from previous published record
43
- if (self.respond_to?("parent_id_field") && self.respond_to?("path_field") && self.respond_to?("depth_field"))
44
- old_published_record.parent = nil
45
- old_published_record.save
46
- end
41
+ # TREE Support disabled for now
42
+ # if (self.respond_to?("parent_id_field") && self.respond_to?("path_field") && self.respond_to?("depth_field"))
43
+ # old_published_record.parent = nil
44
+ # old_published_record.save
45
+ # end
46
+ # destroy old published record... Not ideal, but should work
47
+ self.published_record.destroy if self.published_record != nil
47
48
  live_record = self.clone
48
- live_record._id = self.published_record_id
49
49
  live_record.created_at = old_published_record.created_at if self.respond_to?("created_at")
50
50
  else
51
51
  live_record = self.clone
@@ -57,28 +57,30 @@ module MongoMapper
57
57
  self.save!
58
58
  self.class.set_callback(:save, :before, :update_timestamps ) if self.respond_to?("updated_at")
59
59
 
60
- if (self.respond_to?("parent_id_field") && self.respond_to?("path_field") && self.respond_to?("depth_field"))
61
- # if so, remove the current parent (should have already been don)
62
- # set parent to nil for live_record before setting "real" parent.
63
- # live_record.parent = nil
64
-
65
- if (self.parent != nil)
66
- # no need to copy order value, as it's copied in the clone process
67
- # check draft.parent.published_record != nil, and set as parent
68
- if (self.parent != nil)
69
- if (self.parent.published_record != nil)
70
- live_record.parent = self.parent.published_record
71
- end
72
- end
73
- end
74
- end
75
-
60
+
61
+ # TREE Support disabled for now
62
+ # if (self.respond_to?("parent_id_field") && self.respond_to?("path_field") && self.respond_to?("depth_field"))
63
+ # # if so, remove the current parent (should have already been don)
64
+ # # set parent to nil for live_record before setting "real" parent.
65
+ # # live_record.parent = nil
66
+
67
+ # if (self.parent != nil)
68
+ # # no need to copy order value, as it's copied in the clone process
69
+ # # check draft.parent.published_record != nil, and set as parent
70
+ # if (self.parent != nil)
71
+ # if (self.parent.published_record != nil)
72
+ # live_record.parent = self.parent.published_record
73
+ # end
74
+ # end
75
+ # end
76
+ # end
77
+
76
78
  live_record.draft = false;
77
79
  live_record.updated_at = Time.now.utc if self.respond_to?("updated_at")
78
80
  live_record.save!
79
81
  return true
80
82
  end
81
-
83
+
82
84
  def published_record
83
85
  if draft?
84
86
  return nil if self.draft_record_published_id == nil # save a query and return nil of draft_record_published_id == nil
@@ -95,7 +97,7 @@ module MongoMapper
95
97
  self._id
96
98
  end
97
99
  end
98
-
100
+
99
101
  def draft_record
100
102
  if draft?
101
103
  self
@@ -103,7 +105,7 @@ module MongoMapper
103
105
  self.class.all(:conditions => { :draft => true, :draft_record_published_id => self._id }).first
104
106
  end
105
107
  end
106
-
108
+
107
109
  def unpublish
108
110
  published_rec = self.published_record
109
111
  draft_rec = self.draft_record
@@ -1,5 +1,5 @@
1
1
  module MongoMapper
2
2
  module Draft
3
- VERSION = '0.1.7'
3
+ VERSION = '0.1.8'
4
4
  end
5
5
  end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,14 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
+ if ENV['TRAVIS']
5
+ require 'coveralls'
6
+ Coveralls.wear!
7
+ elsif ENV['COVERAGE']
8
+ require 'simplecov'
9
+ SimpleCov.start
10
+ end
11
+
4
12
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
13
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
14
  require 'mm-draft'
@@ -17,32 +17,32 @@ class DraftTest < Test::Unit::TestCase
17
17
  should "be published" do
18
18
  @monkey_1.published_record.should_not == nil
19
19
  end
20
-
20
+
21
21
  should "not have same created time as draft" do
22
- @monkey_1.unpublish
22
+ @monkey_1.unpublish
23
23
  @monkey_1.publish
24
24
  @monkey_1.created_at.should_not == @monkey_1.published_record.created_at
25
25
  end
26
-
26
+
27
27
  should "not be published" do
28
28
  @monkey_2.published?.should_not == true
29
29
  @monkey_2.published_record.should == nil
30
30
  end
31
-
31
+
32
32
  should "not be draft" do
33
33
  @monkey_1.published_record.draft?.should_not == true
34
34
  end
35
-
35
+
36
36
  should "be draft" do
37
37
  @monkey_2.draft?.should == true
38
38
  end
39
-
39
+
40
40
  should "rename draft only" do
41
41
  @monkey_1.name = "Sagofon"
42
42
  @monkey_1.published_record.should_not == nil
43
43
  @monkey_1.name.should_not == @monkey_1.published_record.name
44
44
  end
45
-
45
+
46
46
  should "rename both draft and published record" do
47
47
  @monkey_1.name = "Sagofon"
48
48
  @monkey_1.publish
@@ -98,15 +98,34 @@ class DraftTest < Test::Unit::TestCase
98
98
  Monkey.find(tmp_published_id).should == nil
99
99
  end
100
100
 
101
+ should 'get id of the published record on the published record' do
102
+ @monkey_1.published_record.published_record_id.should == @monkey_1.published_record._id
103
+ @monkey_1.draft_record_published_id.should == @monkey_1.published_record.published_record_id
104
+ end
105
+
106
+ should 'not be able to publish a published record' do
107
+ @monkey_1.published_record.publish.should == false
108
+ end
109
+
110
+ should 'return that a published_record is published' do
111
+ @monkey_1.published_record.published?.should == true
112
+ end
113
+
114
+ should 'return false for published? if a published record has been deleted instead of destroyed' do
115
+ @monkey_1.published_record.delete
116
+ @monkey_1.published?.should == false
117
+ end
118
+
119
+
101
120
  end # context "draft monkey records" do
102
-
121
+
103
122
  # context "tree-record" do
104
123
  # setup do
105
124
  # @root_1 = Dog.create(:name => "Atmel")
106
125
  # @child_1 = Dog.create(:name => "ATmega644P", :parent => @root_1)
107
126
  # @child_2 = Dog.create(:name => "ATmega2561", :parent => @root_1)
108
127
  # @child_2_1 = Dog.create(:name => "ATtiny24", :parent => @child_2)
109
-
128
+
110
129
  # @root_2 = Dog.create(:name => "ST Ericsson")
111
130
  # @child_3 = Dog.create(:name => "ISP1181B", :parent => @root_2)
112
131
 
@@ -116,10 +135,10 @@ class DraftTest < Test::Unit::TestCase
116
135
  # @child_2_1.publish
117
136
  # @root_2.publish
118
137
  # end
119
-
138
+
120
139
  # should "test draft record parents" do
121
140
  # assert_equal(@root_2, @child_3.parent)
122
- # assert_equal(@child_2, @child_2_1.parent)
141
+ # assert_equal(@child_2, @child_2_1.parent)
123
142
  # end
124
143
 
125
144
  # should "test parents for published records" do
@@ -130,7 +149,7 @@ class DraftTest < Test::Unit::TestCase
130
149
 
131
150
  # should "move draft record to new parent, but keep published at old parent" do
132
151
  # @child_2.parent = @root_2
133
-
152
+
134
153
  # assert !@root_2.is_or_is_ancestor_of?(@child_2_1)
135
154
  # assert !@child_2_1.is_or_is_descendant_of?(@root_2)
136
155
  # assert !@root_2.descendants.include?(@child_2_1)
@@ -145,12 +164,12 @@ class DraftTest < Test::Unit::TestCase
145
164
  # # test published against root_1
146
165
  # assert @root_1.published_record.is_or_is_ancestor_of?(@child_2_1.published_record)
147
166
  # assert @child_2_1.published_record.is_or_is_descendant_of?(@root_1.published_record)
148
- # assert @root_1.published_record.descendants.include?(@child_2_1.published_record)
167
+ # assert @root_1.published_record.descendants.include?(@child_2_1.published_record)
149
168
  # end
150
-
169
+
151
170
  # should "move both draft and published record to new parent" do
152
171
  # @child_2.parent = @root_2
153
-
172
+
154
173
  # assert !@root_2.is_or_is_ancestor_of?(@child_2_1)
155
174
  # assert !@child_2_1.is_or_is_descendant_of?(@root_2)
156
175
  # assert !@root_2.descendants.include?(@child_2_1)
@@ -169,10 +188,10 @@ class DraftTest < Test::Unit::TestCase
169
188
  # assert @child_2_1.published_record.is_or_is_descendant_of?(@root_2.published_record)
170
189
  # assert @root_2.published_record.descendants.include?(@child_2_1.published_record)
171
190
  # end
172
-
191
+
173
192
  # should "set a record as a root and check for ancestor" do
174
193
  # @child_2.parent = nil
175
-
194
+
176
195
  # assert !@root_2.is_or_is_ancestor_of?(@child_2_1)
177
196
  # assert !@child_2_1.is_or_is_descendant_of?(@root_2)
178
197
  # assert !@root_2.descendants.include?(@child_2_1)
@@ -189,6 +208,6 @@ class DraftTest < Test::Unit::TestCase
189
208
 
190
209
  # assert !@root_1.published_record.is_or_is_ancestor_of?(@child_2_1.published_record)
191
210
  # assert !@child_2_1.published_record.is_or_is_descendant_of?(@root_1.published_record)
192
- # assert !@root_1.published_record.descendants.include?(@child_2_1.published_record)
211
+ # assert !@root_1.published_record.descendants.include?(@child_2_1.published_record)
193
212
  # end
194
213
  end
metadata CHANGED
@@ -1,48 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mm-draft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
5
- prerelease:
4
+ version: 0.1.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Leif Ringstad
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-11 00:00:00.000000000 Z
11
+ date: 2014-03-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: i18n
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: mongo_mapper
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
- version: 0.12.0
33
+ version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
- version: 0.12.0
40
+ version: '0'
46
41
  description:
47
42
  email:
48
43
  - leifcr@gmail.com
@@ -50,15 +45,15 @@ executables: []
50
45
  extensions: []
51
46
  extra_rdoc_files: []
52
47
  files:
48
+ - Gemfile
49
+ - README.md
50
+ - Rakefile
53
51
  - lib/locale/en.yml
54
52
  - lib/mm-draft.rb
55
53
  - lib/mongo_mapper/plugins/draft/callbacks.rb
56
54
  - lib/mongo_mapper/plugins/draft/draft.rb
57
55
  - lib/mongo_mapper/plugins/draft/keys.rb
58
56
  - lib/mongo_mapper/plugins/draft/version.rb
59
- - Gemfile
60
- - Rakefile
61
- - README.md
62
57
  - test/models/monkey.rb
63
58
  - test/performance/models/monkey.rb
64
59
  - test/performance/models/monkey_no_draft.rb
@@ -68,33 +63,32 @@ files:
68
63
  - test/unit/test_draft.rb
69
64
  homepage: http://github.com/leifcr/mm-draft
70
65
  licenses: []
66
+ metadata: {}
71
67
  post_install_message:
72
68
  rdoc_options: []
73
69
  require_paths:
74
70
  - lib
75
71
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
72
  requirements:
78
- - - ! '>='
73
+ - - ">="
79
74
  - !ruby/object:Gem::Version
80
75
  version: '0'
81
76
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
77
  requirements:
84
- - - ! '>='
78
+ - - ">="
85
79
  - !ruby/object:Gem::Version
86
80
  version: '0'
87
81
  requirements: []
88
82
  rubyforge_project:
89
- rubygems_version: 1.8.24
83
+ rubygems_version: 2.2.2
90
84
  signing_key:
91
- specification_version: 3
85
+ specification_version: 4
92
86
  summary: A MongoMapper extension adding draft/publishing support
93
87
  test_files:
94
88
  - test/models/monkey.rb
95
- - test/performance/models/monkey.rb
96
- - test/performance/models/monkey_no_draft.rb
89
+ - test/test_helper.rb
97
90
  - test/performance/performance_helper.rb
91
+ - test/performance/models/monkey_no_draft.rb
92
+ - test/performance/models/monkey.rb
98
93
  - test/performance/test/read_write.rb
99
- - test/test_helper.rb
100
94
  - test/unit/test_draft.rb