rspec-paper_trail 0.0.7 → 0.0.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.
- data/lib/generators/rspec/paper_trail/install_generator.rb +39 -31
- data/lib/generators/rspec/paper_trail/templates/features/support/rspec-paper_trail.rb +1 -0
- data/lib/generators/rspec/paper_trail/templates/features/versioning.rb +2 -2
- data/lib/generators/rspec/paper_trail/templates/migrations/{create_versions.rb → create_versions.rb.erb} +1 -1
- data/lib/generators/rspec/paper_trail/templates/migrations/stringify_versions_item_id.rb +1 -0
- data/lib/rspec/paper_trail/features_support.rb +19 -0
- data/lib/rspec/paper_trail/version.rb +1 -1
- data/rspec-paper_trail.gemspec +6 -1
- data/spec/rspec-paper_trail/versioning_extensions_spec.rb +37 -0
- data/spec/spec_helper.rb +29 -0
- metadata +74 -16
@@ -1,43 +1,51 @@
|
|
1
1
|
require 'rails/generators/active_record/migration'
|
2
2
|
|
3
3
|
module Rspec
|
4
|
-
module PaperTrail
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module PaperTrail
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
extend ActiveRecord::Generators::Migration
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
class_option :with_string_ids, type: :boolean, default: true, desc: 'versions.type_id as string (vs integer)'
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
class_option :'skip-migrations', type: :boolean, default: false, desc: 'do not generate migrations'
|
13
|
+
class_option :force, type: :boolean, default: false, desc: 'force generation migrations'
|
14
14
|
|
15
|
-
|
15
|
+
desc 'Generates (but does not run) a migration to add versions table.'
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
def generate_migration_file
|
18
|
+
return if options.send(:'skip-migrations')
|
19
|
+
migration_template 'migrations/create_versions.rb.erb', 'db/migrate/create_versions.rb'
|
20
|
+
migration_template 'migrations/stringify_versions_item_id.rb', 'db/migrate/stringify_versions_item_id.rb' if use_string_ids? && (!migrated? || has_integer_column?)
|
21
|
+
end
|
22
22
|
|
23
|
-
|
23
|
+
desc 'Generates initialization files.'
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
25
|
+
def generate_configuration_files
|
26
|
+
copy_file 'features/versioning.rb', 'config/features/versioning.rb'
|
27
|
+
copy_file 'spec/support/rspec-paper_trail.rb', 'spec/support/rspec-paper_trail.rb'
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def use_string_ids?
|
33
|
+
options.with_string_ids?
|
34
|
+
end
|
35
|
+
|
36
|
+
def connected?
|
37
|
+
ActiveRecord::Base.connected?
|
38
|
+
end
|
39
|
+
|
40
|
+
def migrated?
|
41
|
+
ActiveRecord::Base.connection.table_exists? 'versions'
|
42
|
+
end
|
43
|
+
|
44
|
+
def has_integer_column?
|
45
|
+
return false unless migrated?
|
46
|
+
Version.columns.select { |obj| obj.name == 'item_id' }.first.try(:type) == :integer
|
47
|
+
end
|
39
48
|
end
|
40
|
-
end
|
41
49
|
|
42
|
-
end
|
50
|
+
end
|
43
51
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'rspec/paper_trail/step_definition_helpers'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Configuration.for('versioning') do
|
2
2
|
enabled true
|
3
|
-
path
|
4
|
-
url
|
3
|
+
path ':rails_root/public/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension'
|
4
|
+
url %w(development test).include?(Rails.env) ? '/attachments/:id/download' : '/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension'
|
5
5
|
end
|
6
6
|
|
@@ -2,7 +2,7 @@ class CreateVersions < ActiveRecord::Migration
|
|
2
2
|
def change
|
3
3
|
create_table :versions, force: true do |t|
|
4
4
|
t.string :item_type, null: false
|
5
|
-
<% if use_string_ids? && (migrated? && !has_integer_column?) %>t.string :item_id, null: false # item_type.id generally should be GUID<% else %>t.integer :item_id, null: false, limit: 8<% end %>
|
5
|
+
<% if use_string_ids? && (!connected? || (migrated? && !has_integer_column?)) %>t.string :item_id, null: false # item_type.id generally should be GUID<% else %>t.integer :item_id, null: false, limit: 8<% end %>
|
6
6
|
t.string :event, null: false
|
7
7
|
t.string :whodunnit
|
8
8
|
t.text :object
|
@@ -0,0 +1,19 @@
|
|
1
|
+
if defined? World
|
2
|
+
module RspecPaperTrailCucumberSupport
|
3
|
+
# :call-seq:
|
4
|
+
# with_versioning
|
5
|
+
#
|
6
|
+
# enable versioning for specific blocks
|
7
|
+
|
8
|
+
def with_versioning
|
9
|
+
was_enabled = ::PaperTrail.enabled?
|
10
|
+
::PaperTrail.enabled = true
|
11
|
+
begin
|
12
|
+
yield
|
13
|
+
ensure
|
14
|
+
::PaperTrail.enabled = was_enabled
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
World(RspecPaperTrailCucumberSupport
|
19
|
+
end
|
data/rspec-paper_trail.gemspec
CHANGED
@@ -27,20 +27,25 @@ Gem::Specification.new do |spec|
|
|
27
27
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
28
28
|
spec.add_runtime_dependency 'paper_trail', ['~> 2.7.1']
|
29
29
|
spec.add_runtime_dependency 'rspec', ['~> 2.13.0']
|
30
|
-
|
30
|
+
spec.add_runtime_dependency 'rails', '~> 3.2'
|
31
31
|
spec.add_development_dependency 'bundler', ['~> 1.3.0']
|
32
32
|
spec.add_development_dependency 'rake'
|
33
|
+
spec.add_development_dependency 'sqlite3'
|
33
34
|
else
|
34
35
|
spec.add_dependency 'paper_trail', ['~> 2.7.1']
|
35
36
|
spec.add_dependency 'rspec', ['~> 2.13.0']
|
37
|
+
spec.add_dependency 'rails', '~> 3.2'
|
36
38
|
spec.add_dependency 'bundler', ['~> 1.3']
|
37
39
|
spec.add_dependency 'rake'
|
40
|
+
spec.add_dependency 'sqlite3'
|
38
41
|
end
|
39
42
|
else
|
40
43
|
spec.add_dependency 'paper_trail', ['~> 2.7.1']
|
41
44
|
spec.add_dependency 'rspec', ['~> 2.13.0']
|
45
|
+
spec.add_dependency 'rails', '~> 3.2'
|
42
46
|
spec.add_dependency 'bundler', ['~> 1.3']
|
43
47
|
spec.add_dependency 'rake'
|
48
|
+
spec.add_dependency 'sqlite3'
|
44
49
|
end
|
45
50
|
|
46
51
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RspecExtensions do
|
4
|
+
context 'default' do
|
5
|
+
it 'should have versioning off by default' do
|
6
|
+
PaperTrail.enabled?.should_not be_true
|
7
|
+
end
|
8
|
+
it 'should turn versioning on in a with_versioning block' do
|
9
|
+
PaperTrail.enabled?.should_not be_true
|
10
|
+
with_versioning do
|
11
|
+
PaperTrail.enabled?.should be_true
|
12
|
+
end
|
13
|
+
PaperTrail.enabled?.should_not be_true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
context 'versioning: true', :versioning => true do
|
17
|
+
it 'should have versioning on by default' do
|
18
|
+
PaperTrail.enabled?.should be_true
|
19
|
+
end
|
20
|
+
it 'should keep versioning on after a with_versioning block' do
|
21
|
+
PaperTrail.enabled?.should be_true
|
22
|
+
with_versioning do
|
23
|
+
PaperTrail.enabled?.should be_true
|
24
|
+
end
|
25
|
+
PaperTrail.enabled?.should be_true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe Model do
|
31
|
+
context 'be_versioned matcher', :versioning => true do
|
32
|
+
it 'should respond to be_versioned' do
|
33
|
+
model = Model.create(:name => 'Bob', :color => 'blue')
|
34
|
+
model.should be_versioned
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'rails'
|
5
|
+
require 'active_record'
|
6
|
+
require 'paper_trail'
|
7
|
+
require 'rspec/paper_trail'
|
8
|
+
|
9
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
10
|
+
|
11
|
+
ActiveRecord::Schema.define(:version => 1) do
|
12
|
+
create_table :models do |t|
|
13
|
+
t.string :name
|
14
|
+
t.string :color
|
15
|
+
end
|
16
|
+
create_table :versions do |t|
|
17
|
+
t.string :item_type, :null => false
|
18
|
+
t.integer :item_id, :null => false
|
19
|
+
t.string :event, :null => false
|
20
|
+
t.string :whodunnit
|
21
|
+
t.text :object
|
22
|
+
t.datetime :created_at
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Model < ActiveRecord::Base
|
27
|
+
has_paper_trail
|
28
|
+
attr_accessible :name, :color
|
29
|
+
end
|
metadata
CHANGED
@@ -1,60 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-paper_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.7
|
5
4
|
prerelease:
|
5
|
+
version: 0.0.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paul Belt
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: paper_trail
|
16
|
-
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 2.7.1
|
17
21
|
none: false
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
18
23
|
requirements:
|
19
24
|
- - ~>
|
20
25
|
- !ruby/object:Gem::Version
|
21
26
|
version: 2.7.1
|
22
|
-
|
27
|
+
none: false
|
23
28
|
prerelease: false
|
24
|
-
|
29
|
+
type: :runtime
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ~>
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.13.0
|
28
37
|
none: false
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
29
39
|
requirements:
|
30
40
|
- - ~>
|
31
41
|
- !ruby/object:Gem::Version
|
32
42
|
version: 2.13.0
|
43
|
+
none: false
|
44
|
+
prerelease: false
|
33
45
|
type: :runtime
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rails
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ~>
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.2'
|
53
|
+
none: false
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '3.2'
|
59
|
+
none: false
|
34
60
|
prerelease: false
|
35
|
-
|
61
|
+
type: :runtime
|
36
62
|
- !ruby/object:Gem::Dependency
|
37
63
|
name: bundler
|
38
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.3.0
|
39
69
|
none: false
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
40
71
|
requirements:
|
41
72
|
- - ~>
|
42
73
|
- !ruby/object:Gem::Version
|
43
74
|
version: 1.3.0
|
44
|
-
|
75
|
+
none: false
|
45
76
|
prerelease: false
|
46
|
-
|
77
|
+
type: :development
|
47
78
|
- !ruby/object:Gem::Dependency
|
48
79
|
name: rake
|
49
|
-
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
50
85
|
none: false
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
51
87
|
requirements:
|
52
88
|
- - ! '>='
|
53
89
|
- !ruby/object:Gem::Version
|
54
90
|
version: '0'
|
91
|
+
none: false
|
92
|
+
prerelease: false
|
55
93
|
type: :development
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: sqlite3
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
none: false
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
none: false
|
56
108
|
prerelease: false
|
57
|
-
|
109
|
+
type: :development
|
58
110
|
description: use paper_trail within rspec, conveniently
|
59
111
|
email:
|
60
112
|
- paul.belt@gmail.com
|
@@ -70,15 +122,19 @@ files:
|
|
70
122
|
- README.md
|
71
123
|
- Rakefile
|
72
124
|
- lib/generators/rspec/paper_trail/install_generator.rb
|
125
|
+
- lib/generators/rspec/paper_trail/templates/features/support/rspec-paper_trail.rb
|
73
126
|
- lib/generators/rspec/paper_trail/templates/features/versioning.rb
|
74
|
-
- lib/generators/rspec/paper_trail/templates/migrations/create_versions.rb
|
127
|
+
- lib/generators/rspec/paper_trail/templates/migrations/create_versions.rb.erb
|
75
128
|
- lib/generators/rspec/paper_trail/templates/migrations/stringify_versions_item_id.rb
|
76
129
|
- lib/generators/rspec/paper_trail/templates/spec/support/rspec-paper_trail.rb
|
77
130
|
- lib/rspec/paper_trail.rb
|
78
131
|
- lib/rspec/paper_trail/extensions.rb
|
132
|
+
- lib/rspec/paper_trail/features_support.rb
|
79
133
|
- lib/rspec/paper_trail/version.rb
|
80
134
|
- rspec-paper_trail.gemspec
|
135
|
+
- spec/rspec-paper_trail/versioning_extensions_spec.rb
|
81
136
|
- spec/spec.opts
|
137
|
+
- spec/spec_helper.rb
|
82
138
|
homepage: https://github.com/belt/rspec-paper_trail
|
83
139
|
licenses:
|
84
140
|
- MIT
|
@@ -87,22 +143,24 @@ rdoc_options: []
|
|
87
143
|
require_paths:
|
88
144
|
- lib
|
89
145
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
146
|
requirements:
|
92
147
|
- - ! '>='
|
93
148
|
- !ruby/object:Gem::Version
|
94
149
|
version: 1.9.2
|
95
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
150
|
none: false
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
152
|
requirements:
|
98
153
|
- - ! '>='
|
99
154
|
- !ruby/object:Gem::Version
|
100
155
|
version: '0'
|
156
|
+
none: false
|
101
157
|
requirements: []
|
102
158
|
rubyforge_project:
|
103
|
-
rubygems_version: 1.8.
|
159
|
+
rubygems_version: 1.8.25
|
104
160
|
signing_key:
|
105
161
|
specification_version: 3
|
106
162
|
summary: provides rspec-matcher to ensure versioning and per-spec, per-block versioning
|
107
163
|
test_files:
|
164
|
+
- spec/rspec-paper_trail/versioning_extensions_spec.rb
|
108
165
|
- spec/spec.opts
|
166
|
+
- spec/spec_helper.rb
|