vestal_versions 0.8.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +20 -2
- data/README.rdoc +110 -8
- data/Rakefile +14 -3
- data/VERSION +1 -1
- data/lib/vestal_versions.rb +93 -143
- data/lib/vestal_versions/changes.rb +125 -0
- data/lib/vestal_versions/conditions.rb +69 -0
- data/lib/vestal_versions/configuration.rb +40 -0
- data/lib/vestal_versions/control.rb +175 -0
- data/lib/vestal_versions/creation.rb +85 -0
- data/lib/vestal_versions/options.rb +42 -0
- data/lib/vestal_versions/reload.rb +23 -0
- data/lib/vestal_versions/reset.rb +56 -0
- data/lib/vestal_versions/reversion.rb +69 -0
- data/lib/vestal_versions/tagging.rb +50 -0
- data/lib/vestal_versions/users.rb +57 -0
- data/lib/vestal_versions/version.rb +32 -0
- data/lib/vestal_versions/versioned.rb +30 -0
- data/lib/vestal_versions/versions.rb +74 -0
- data/rails/init.rb +1 -0
- data/rails_generators/vestal_versions/templates/initializer.rb +9 -0
- data/{generators/vestal_versions_migration → rails_generators/vestal_versions}/templates/migration.rb +9 -2
- data/rails_generators/vestal_versions/vestal_versions_generator.rb +10 -0
- data/test/changes_test.rb +154 -13
- data/test/conditions_test.rb +137 -0
- data/test/configuration_test.rb +39 -0
- data/test/control_test.rb +152 -0
- data/test/creation_test.rb +70 -30
- data/test/options_test.rb +52 -0
- data/test/reload_test.rb +19 -0
- data/test/reset_test.rb +107 -0
- data/test/{revert_test.rb → reversion_test.rb} +8 -22
- data/test/schema.rb +4 -1
- data/test/tagging_test.rb +38 -0
- data/test/test_helper.rb +2 -1
- data/test/users_test.rb +25 -0
- data/test/version_test.rb +43 -0
- data/test/versioned_test.rb +18 -0
- data/test/versions_test.rb +172 -0
- data/vestal_versions.gemspec +61 -21
- metadata +75 -15
- data/generators/vestal_versions_migration/vestal_versions_migration_generator.rb +0 -11
- data/init.rb +0 -1
- data/lib/version.rb +0 -14
- data/test/between_test.rb +0 -58
- data/test/comparable_test.rb +0 -35
- data/test/latest_changes_test.rb +0 -42
data/init.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'vestal_versions'
|
data/lib/version.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
class Version < ActiveRecord::Base
|
2
|
-
include Comparable
|
3
|
-
|
4
|
-
belongs_to :versioned, :polymorphic => true
|
5
|
-
|
6
|
-
undef_method :changes
|
7
|
-
serialize :changes, Hash
|
8
|
-
|
9
|
-
alias_attribute :version, :number
|
10
|
-
|
11
|
-
def <=>(other)
|
12
|
-
number <=> other.number
|
13
|
-
end
|
14
|
-
end
|
data/test/between_test.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class BetweenTest < Test::Unit::TestCase
|
4
|
-
context 'The number of versions between' do
|
5
|
-
setup do
|
6
|
-
@user = User.create(:name => 'Steve Richert')
|
7
|
-
@version = @user.version
|
8
|
-
@valid = [@version, 0, 1_000_000, :first, :last, 1.day.since(@user.created_at), @user.versions.first]
|
9
|
-
@invalid = [nil, :bogus, 'bogus', Date.parse('0001-12-25')]
|
10
|
-
end
|
11
|
-
|
12
|
-
context 'the current version and the current version' do
|
13
|
-
should 'equal one' do
|
14
|
-
assert_equal 1, @user.versions.between(@version, @version).size
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'the current version and a valid value' do
|
19
|
-
should 'not equal zero' do
|
20
|
-
@valid.each do |valid|
|
21
|
-
assert_not_equal 0, @user.versions.between(@version, valid).size
|
22
|
-
assert_not_equal 0, @user.versions.between(valid, @version).size
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'the current version and an invalid value' do
|
28
|
-
should 'equal zero' do
|
29
|
-
@invalid.each do |invalid|
|
30
|
-
assert_equal 0, @user.versions.between(@version, invalid).size
|
31
|
-
assert_equal 0, @user.versions.between(invalid, @version).size
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context 'two invalid values' do
|
37
|
-
should 'equal zero' do
|
38
|
-
@invalid.each do |first|
|
39
|
-
@invalid.each do |second|
|
40
|
-
assert_equal 0, @user.versions.between(first, second).size
|
41
|
-
assert_equal 0, @user.versions.between(second, first).size
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context 'a valid value and an invalid value' do
|
48
|
-
should 'equal zero' do
|
49
|
-
@valid.each do |valid|
|
50
|
-
@invalid.each do |invalid|
|
51
|
-
assert_equal 0, @user.versions.between(valid, invalid).size
|
52
|
-
assert_equal 0, @user.versions.between(invalid, valid).size
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/test/comparable_test.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ComparableTest < Test::Unit::TestCase
|
4
|
-
context 'A comparable version' do
|
5
|
-
setup do
|
6
|
-
@version_1 = Version.new(:number => 1)
|
7
|
-
@version_2 = Version.new(:number => 2)
|
8
|
-
end
|
9
|
-
|
10
|
-
should 'equal itself' do
|
11
|
-
assert @version_1 == @version_1
|
12
|
-
assert @version_2 == @version_2
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'with version number 1' do
|
16
|
-
should 'not equal a version with version number 2' do
|
17
|
-
assert @version_1 != @version_2
|
18
|
-
end
|
19
|
-
|
20
|
-
should 'be less than a version with version number 2' do
|
21
|
-
assert @version_1 < @version_2
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'with version number 2' do
|
26
|
-
should 'not equal a version with version number 1' do
|
27
|
-
assert @version_2 != @version_1
|
28
|
-
end
|
29
|
-
|
30
|
-
should 'be greater than a version with version number 1' do
|
31
|
-
assert @version_2 > @version_1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/test/latest_changes_test.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class LatestChangesTest < Test::Unit::TestCase
|
4
|
-
context "A created model's last changes" do
|
5
|
-
setup do
|
6
|
-
@user = User.create(:name => 'Steve Richert')
|
7
|
-
end
|
8
|
-
|
9
|
-
should 'be blank' do
|
10
|
-
assert @user.latest_changes.blank?
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "An updated model's last changes" do
|
15
|
-
setup do
|
16
|
-
@user = User.create(:name => 'Steve Richert')
|
17
|
-
@previous_attributes = @user.attributes
|
18
|
-
@user.update_attribute(:name, 'Steve Jobs')
|
19
|
-
@current_attributes = @user.attributes
|
20
|
-
end
|
21
|
-
|
22
|
-
should 'values of two-element arrays with unique values' do
|
23
|
-
@user.latest_changes.values.each do |value|
|
24
|
-
assert_kind_of Array, value
|
25
|
-
assert_equal 2, value.size
|
26
|
-
assert_equal value, value.uniq
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
should 'begin with the previous attribute values' do
|
31
|
-
changes = @user.latest_changes.inject({}){|h,(k,v)| h.update(k => v.first) }
|
32
|
-
previous = @previous_attributes.slice(*@user.latest_changes.keys)
|
33
|
-
assert_equal previous, changes
|
34
|
-
end
|
35
|
-
|
36
|
-
should 'end with the current attribute values' do
|
37
|
-
changes = @user.latest_changes.inject({}){|h,(k,v)| h.update(k => v.last) }
|
38
|
-
current = @current_attributes.slice(*@user.latest_changes.keys)
|
39
|
-
assert_equal current, changes
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|