vestal_versions 0.8.3 → 1.0.0
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/.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
|