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.
Files changed (47) hide show
  1. data/.gitignore +20 -2
  2. data/README.rdoc +110 -8
  3. data/Rakefile +14 -3
  4. data/VERSION +1 -1
  5. data/lib/vestal_versions.rb +93 -143
  6. data/lib/vestal_versions/changes.rb +125 -0
  7. data/lib/vestal_versions/conditions.rb +69 -0
  8. data/lib/vestal_versions/configuration.rb +40 -0
  9. data/lib/vestal_versions/control.rb +175 -0
  10. data/lib/vestal_versions/creation.rb +85 -0
  11. data/lib/vestal_versions/options.rb +42 -0
  12. data/lib/vestal_versions/reload.rb +23 -0
  13. data/lib/vestal_versions/reset.rb +56 -0
  14. data/lib/vestal_versions/reversion.rb +69 -0
  15. data/lib/vestal_versions/tagging.rb +50 -0
  16. data/lib/vestal_versions/users.rb +57 -0
  17. data/lib/vestal_versions/version.rb +32 -0
  18. data/lib/vestal_versions/versioned.rb +30 -0
  19. data/lib/vestal_versions/versions.rb +74 -0
  20. data/rails/init.rb +1 -0
  21. data/rails_generators/vestal_versions/templates/initializer.rb +9 -0
  22. data/{generators/vestal_versions_migration → rails_generators/vestal_versions}/templates/migration.rb +9 -2
  23. data/rails_generators/vestal_versions/vestal_versions_generator.rb +10 -0
  24. data/test/changes_test.rb +154 -13
  25. data/test/conditions_test.rb +137 -0
  26. data/test/configuration_test.rb +39 -0
  27. data/test/control_test.rb +152 -0
  28. data/test/creation_test.rb +70 -30
  29. data/test/options_test.rb +52 -0
  30. data/test/reload_test.rb +19 -0
  31. data/test/reset_test.rb +107 -0
  32. data/test/{revert_test.rb → reversion_test.rb} +8 -22
  33. data/test/schema.rb +4 -1
  34. data/test/tagging_test.rb +38 -0
  35. data/test/test_helper.rb +2 -1
  36. data/test/users_test.rb +25 -0
  37. data/test/version_test.rb +43 -0
  38. data/test/versioned_test.rb +18 -0
  39. data/test/versions_test.rb +172 -0
  40. data/vestal_versions.gemspec +61 -21
  41. metadata +75 -15
  42. data/generators/vestal_versions_migration/vestal_versions_migration_generator.rb +0 -11
  43. data/init.rb +0 -1
  44. data/lib/version.rb +0 -14
  45. data/test/between_test.rb +0 -58
  46. data/test/comparable_test.rb +0 -35
  47. data/test/latest_changes_test.rb +0 -42
@@ -1,11 +0,0 @@
1
- class VestalVersionsMigrationGenerator < Rails::Generator::Base
2
- def manifest
3
- record do |m|
4
- m.migration_template 'migration.rb', 'db/migrate'
5
- end
6
- end
7
-
8
- def file_name
9
- 'create_vestal_versions'
10
- end
11
- end
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require 'vestal_versions'
@@ -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
@@ -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
@@ -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
@@ -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