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.
@@ -1,43 +1,51 @@
1
1
  require 'rails/generators/active_record/migration'
2
2
 
3
3
  module Rspec
4
- module PaperTrail
5
- class InstallGenerator < Rails::Generators::Base
6
- include Rails::Generators::Migration
7
- extend ActiveRecord::Generators::Migration
4
+ module PaperTrail
5
+ class InstallGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+ extend ActiveRecord::Generators::Migration
8
8
 
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)'
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
- 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'
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
- desc 'Generates (but does not run) a migration to add versions table.'
15
+ desc 'Generates (but does not run) a migration to add versions table.'
16
16
 
17
- def generate_migration_file
18
- return if options.send(:'skip-migrations')
19
- migration_template 'migrations/create_versions.rb', '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
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
- desc 'Generates initialization files.'
23
+ desc 'Generates initialization files.'
24
24
 
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
- private
30
- def use_string_ids?
31
- options.with_string_ids?
32
- end
33
- def migrated?
34
- return true if ActiveRecord::Base.connection.table_exists? 'versions'
35
- end
36
- def has_integer_column?
37
- return false unless migrated?
38
- Version.columns.select{|obj| obj.name == 'item_id'}.first.try(:type) == :integer
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 ":rails_root/public/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension"
4
- url ['development', 'test'].include?(Rails.env) ? "/attachments/:id/download" : "/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension"
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
@@ -2,6 +2,7 @@ class StringifyVersionsItemId < ActiveRecord::Migration
2
2
  def up
3
3
  change_column :versions, :item_id, :string, null: false
4
4
  end
5
+
5
6
  def down
6
7
  change_column :versions, :item_id, :integer, limit: 8, null: false
7
8
  end
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Rspec
2
2
  module PaperTrail
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
5
5
  end
@@ -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
@@ -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-03-26 00:00:00.000000000Z
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
- requirement: &2231106500 !ruby/object:Gem::Requirement
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
- type: :runtime
27
+ none: false
23
28
  prerelease: false
24
- version_requirements: *2231106500
29
+ type: :runtime
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &2231106020 !ruby/object:Gem::Requirement
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
- version_requirements: *2231106020
61
+ type: :runtime
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: bundler
38
- requirement: &2231105540 !ruby/object:Gem::Requirement
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
- type: :development
75
+ none: false
45
76
  prerelease: false
46
- version_requirements: *2231105540
77
+ type: :development
47
78
  - !ruby/object:Gem::Dependency
48
79
  name: rake
49
- requirement: &2231103360 !ruby/object:Gem::Requirement
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
- version_requirements: *2231103360
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.10
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