mongration 0.0.3.pre.beta → 0.0.4.pre.beta

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Gemfile +11 -4
  4. data/README.md +9 -2
  5. data/Rakefile +5 -0
  6. data/lib/mongration.rb +81 -26
  7. data/lib/mongration/configuration.rb +27 -4
  8. data/lib/mongration/create_migration.rb +11 -16
  9. data/lib/mongration/create_migration/migration_file_writer.rb +43 -0
  10. data/lib/mongration/file.rb +52 -9
  11. data/lib/mongration/migrate_all_up.rb +20 -0
  12. data/lib/mongration/migrate_down.rb +20 -0
  13. data/lib/mongration/migrate_up.rb +20 -0
  14. data/lib/mongration/migration.rb +37 -0
  15. data/lib/mongration/null_output.rb +6 -0
  16. data/lib/mongration/rake_tasks.rb +40 -0
  17. data/lib/mongration/rollback.rb +5 -16
  18. data/lib/mongration/status.rb +27 -0
  19. data/lib/mongration/version.rb +1 -1
  20. data/lib/os_check.rb +7 -0
  21. data/spec/fixtures/integration.rb +23 -27
  22. data/spec/integration/{template_spec.rb → create_migration_spec.rb} +5 -1
  23. data/spec/integration/migrate_spec.rb +76 -0
  24. data/spec/integration/migrate_with_version_spec.rb +38 -0
  25. data/spec/integration/{mongration_spec.rb → rollback_spec.rb} +11 -36
  26. data/spec/integration/status_spec.rb +61 -0
  27. data/spec/integration/version_spec.rb +20 -0
  28. data/spec/spec_helper.rb +16 -4
  29. data/spec/unit/mongration/{data_store/mongoid/migration_spec.rb → migration_spec.rb} +9 -3
  30. data/spec/unit/mongration/rake_tasks_spec.rb +95 -0
  31. metadata +40 -35
  32. data/lib/mongration/data_store/in_memory/store.rb +0 -32
  33. data/lib/mongration/data_store/mongoid/migration.rb +0 -24
  34. data/lib/mongration/data_store/mongoid/store.rb +0 -53
  35. data/lib/mongration/migrate.rb +0 -52
  36. data/lib/mongration/migration_file_writer.rb +0 -40
  37. data/lib/mongration/null_migration.rb +0 -16
  38. data/lib/mongration/rake_task.rb +0 -18
  39. data/spec/support/store_interface.rb +0 -18
  40. data/spec/unit/mongration/data_store/in_memory/store_spec.rb +0 -10
  41. data/spec/unit/mongration/data_store/mongoid/store_spec.rb +0 -12
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Mongration.status' do
4
+
5
+ context 'when there are no migrations' do
6
+ it 'returns an empty array' do
7
+ expect(Mongration.status).to eq([])
8
+ end
9
+ end
10
+
11
+ context 'when there is a pending migration' do
12
+ before do
13
+ Mongration.create_migration('AddFoo')
14
+ end
15
+
16
+ let(:file_status) { Mongration.status.first }
17
+
18
+ it "file's status is down" do
19
+ expect(file_status.status).to eq('down')
20
+ end
21
+
22
+ it "file's migration id 001" do
23
+ expect(file_status.migration_id).to eq('001')
24
+ end
25
+
26
+ it "file's migration name is 'add foo'" do
27
+ expect(file_status.migration_name).to eq('add foo')
28
+ end
29
+ end
30
+
31
+ context 'when there is a migration that is run' do
32
+ before do
33
+ Mongration.create_migration('AddFoo')
34
+ Mongration.migrate
35
+ end
36
+
37
+ let(:file_status) { Mongration.status.first }
38
+
39
+ it "file's status is up" do
40
+ expect(file_status.status).to eq('up')
41
+ end
42
+
43
+ it "file's migration id 001" do
44
+ expect(file_status.migration_id).to eq('001')
45
+ end
46
+
47
+ it "file's migration name is 'add foo'" do
48
+ expect(file_status.migration_name).to eq('add foo')
49
+ end
50
+ end
51
+
52
+ it 'sorted in ascending order by id' do
53
+ Mongration.create_migration('AddFoo')
54
+ Mongration.create_migration('AddFoo2')
55
+ Mongration.migrate
56
+ Mongration.create_migration('AddBar')
57
+ Mongration.create_migration('AddBar2')
58
+
59
+ expect(Mongration.status.map(&:migration_id)).to eq(%w(001 002 003 004))
60
+ end
61
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Mongration.version' do
4
+
5
+ context 'when there are no migrations' do
6
+ it 'version is 0' do
7
+ expect(Mongration.version).to eq('0')
8
+ end
9
+ end
10
+
11
+ context 'when there are migrations' do
12
+ it 'version is equal to the number of non-empty migrations run' do
13
+ foo_create_migration
14
+ Mongration.migrate # non-empty migration
15
+ Mongration.migrate # empty migration
16
+
17
+ expect(Mongration.version).to eq('001')
18
+ end
19
+ end
20
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,19 +5,27 @@ require 'coveralls'
5
5
  Coveralls.wear!
6
6
 
7
7
  require 'timecop'
8
+ Timecop.safe_mode = true
8
9
 
9
- require 'rantly/rspec_extensions'
10
+ if RUBY_PLATFORM == 'java'
11
+ require 'ruby-debug'
12
+ else
13
+ if RUBY_VERSION.to_f >= 2.0
14
+ require 'byebug'
15
+ elsif RUBY_VERSION.to_f >= 1.9
16
+ require 'debugger'
17
+ end
18
+ end
10
19
 
11
20
  require 'mongration'
12
21
  Mongration.configure do |config|
13
- config.data_store = Mongration::DataStore::Mongoid::Store.new(config_path: File.join('spec', 'config', 'mongoid.yml'))
22
+ config.config_path = File.join('spec', 'config', 'mongoid.yml')
23
+ config.silent = true
14
24
  end
15
25
 
16
26
  Dir[File.join(Dir.pwd, 'spec', 'support', '*.rb')].each { |f| require f }
17
27
  Dir[File.join(Dir.pwd, 'spec', 'fixtures', '*.rb')].each { |f| require f }
18
28
 
19
- Timecop.safe_mode = true
20
-
21
29
  RSpec.configure do |config|
22
30
 
23
31
  # These two settings work together to allow you to limit a spec run
@@ -43,6 +51,8 @@ RSpec.configure do |config|
43
51
  # --seed 1234
44
52
  config.order = :random
45
53
 
54
+ config.include(IntegrationFixtures)
55
+
46
56
  # Seed global randomization in this process using the `--seed` CLI option.
47
57
  # Setting this allows you to use `--seed` to deterministically reproduce
48
58
  # test failures related to randomization by passing the same `--seed` value
@@ -96,3 +106,5 @@ RSpec.configure do |config|
96
106
  clean_migration_files # prevents tailor from looking in this directory
97
107
  end
98
108
  end
109
+
110
+ require 'rantly/rspec_extensions'
@@ -1,8 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongration::DataStore::Mongoid do
3
+ describe Mongration::Migration do
4
4
 
5
- let(:migration) { Mongration::DataStore::Mongoid::Migration.create! }
5
+ let(:migration) { Mongration::Migration.create! }
6
+
7
+ describe 'collection name' do
8
+ it 'is mongration_migrations'do
9
+ expect(Mongration::Migration.collection.name).to eq('mongration_migrations')
10
+ end
11
+ end
6
12
 
7
13
  describe '#create' do
8
14
  it 'sets created at timestamp' do
@@ -19,7 +25,7 @@ describe Mongration::DataStore::Mongoid do
19
25
  end
20
26
 
21
27
  it 'document is not returned in query' do
22
- expect(Mongration::DataStore::Mongoid::Migration.count).to eq(0)
28
+ expect(Mongration::Migration.count).to eq(0)
23
29
  end
24
30
  end
25
31
  end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'rake tasks' do
4
+
5
+ def run_task(task, args = nil)
6
+ Rake::Task.define_task(:environment)
7
+ Rake::Task[task].reenable
8
+
9
+ if args
10
+ Rake::Task[task].invoke(args)
11
+ else
12
+ Rake::Task[task].invoke
13
+ end
14
+ end
15
+
16
+ describe 'db:migrate' do
17
+ context 'when no VERSION is set' do
18
+ it 'recives migrate with no args' do
19
+ expect(Mongration).to receive(:migrate).with(nil)
20
+ run_task('db:migrate')
21
+ end
22
+ end
23
+
24
+ context 'when a VERSION is set' do
25
+ it 'passes the version to migrate' do
26
+ allow(ENV).to receive(:[]).with('VERSION').and_return('001')
27
+ expect(Mongration).to receive(:migrate).with('001')
28
+ run_task('db:migrate')
29
+ end
30
+ end
31
+ end
32
+
33
+ describe 'db:rollback' do
34
+ context 'when not passed a STEP' do
35
+ it 'receives rollback' do
36
+ expect(Mongration).to receive(:rollback)
37
+ run_task('db:rollback')
38
+ end
39
+ end
40
+
41
+ context 'when passed a STEP of 2' do
42
+ it 'calls rollback with 2' do
43
+ allow(ENV).to receive(:[]).with('STEP').and_return('2')
44
+ expect(Mongration).to receive(:rollback).with(2)
45
+ run_task('db:rollback')
46
+ end
47
+ end
48
+ end
49
+
50
+ describe 'db:version' do
51
+ it 'prints version' do
52
+ allow(Mongration).to receive(:version).and_return(1)
53
+ expect(Mongration.out).to receive(:puts).with('Current version: 1')
54
+ run_task('db:version')
55
+ end
56
+ end
57
+
58
+ describe 'db:migrate:create' do
59
+ it 'receives create_migration' do
60
+ allow(Mongration.out).to receive(:puts)
61
+ expect(Mongration).to receive(:create_migration).with('add_foo').and_return('')
62
+ run_task('db:migrate:create', 'add_foo')
63
+ end
64
+
65
+ it 'prints file name' do
66
+ allow(Mongration).to receive(:create_migration).and_return('spec/db/migrate/001_add_foo.rb')
67
+ expect(Mongration.out).to receive(:puts).with('Created spec/db/migrate/001_add_foo.rb')
68
+ run_task('db:migrate:create', 'add_foo')
69
+ end
70
+ end
71
+
72
+ describe 'db:migrate:status' do
73
+ it 'receives status' do
74
+ allow(Mongration.out).to receive(:puts)
75
+ expect(Mongration).to receive(:status).and_return([])
76
+ run_task('db:migrate:status')
77
+ end
78
+
79
+ it 'prints migration info' do
80
+ output = []
81
+ allow(Mongration.out).to receive(:puts) do |arg|
82
+ output << arg
83
+ end
84
+
85
+ status = Mongration::Status::FileStatus.new(:down, '001', 'add foo')
86
+ allow(Mongration).to receive(:status).and_return([status])
87
+
88
+ run_task('db:migrate:status')
89
+
90
+ expect(output[0]).to match(/Status.*Migration ID.*Migration Name/)
91
+ expect(output[1]).to match(/-+/)
92
+ expect(output[2]).to match(/down.*001.*add foo/)
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.pre.beta
4
+ version: 0.0.4.pre.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-31 00:00:00.000000000 Z
11
+ date: 2014-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
@@ -117,11 +117,11 @@ executables: []
117
117
  extensions: []
118
118
  extra_rdoc_files: []
119
119
  files:
120
- - .gitignore
121
- - .rspec
122
- - .ruby-version
123
- - .tailor
124
- - .travis.yml
120
+ - ".gitignore"
121
+ - ".rspec"
122
+ - ".ruby-version"
123
+ - ".tailor"
124
+ - ".travis.yml"
125
125
  - Gemfile
126
126
  - Guardfile
127
127
  - LICENSE.txt
@@ -130,30 +130,34 @@ files:
130
130
  - lib/mongration.rb
131
131
  - lib/mongration/configuration.rb
132
132
  - lib/mongration/create_migration.rb
133
- - lib/mongration/data_store/in_memory/store.rb
134
- - lib/mongration/data_store/mongoid/migration.rb
135
- - lib/mongration/data_store/mongoid/store.rb
133
+ - lib/mongration/create_migration/migration_file_writer.rb
136
134
  - lib/mongration/errors.rb
137
135
  - lib/mongration/file.rb
138
- - lib/mongration/migrate.rb
139
- - lib/mongration/migration_file_writer.rb
140
- - lib/mongration/null_migration.rb
141
- - lib/mongration/rake_task.rb
136
+ - lib/mongration/migrate_all_up.rb
137
+ - lib/mongration/migrate_down.rb
138
+ - lib/mongration/migrate_up.rb
139
+ - lib/mongration/migration.rb
140
+ - lib/mongration/null_output.rb
141
+ - lib/mongration/rake_tasks.rb
142
142
  - lib/mongration/rollback.rb
143
+ - lib/mongration/status.rb
143
144
  - lib/mongration/version.rb
145
+ - lib/os_check.rb
144
146
  - mongration.gemspec
145
147
  - spec/.coveralls.yml
146
148
  - spec/config/mongoid.yml
147
149
  - spec/db/migrate/.gitkeep
148
150
  - spec/fixtures/integration.rb
149
- - spec/integration/mongration_spec.rb
150
- - spec/integration/template_spec.rb
151
+ - spec/integration/create_migration_spec.rb
152
+ - spec/integration/migrate_spec.rb
153
+ - spec/integration/migrate_with_version_spec.rb
154
+ - spec/integration/rollback_spec.rb
155
+ - spec/integration/status_spec.rb
156
+ - spec/integration/version_spec.rb
151
157
  - spec/spec_helper.rb
152
- - spec/support/store_interface.rb
153
- - spec/unit/mongration/data_store/in_memory/store_spec.rb
154
- - spec/unit/mongration/data_store/mongoid/migration_spec.rb
155
- - spec/unit/mongration/data_store/mongoid/store_spec.rb
156
158
  - spec/unit/mongration/file_spec.rb
159
+ - spec/unit/mongration/migration_spec.rb
160
+ - spec/unit/mongration/rake_tasks_spec.rb
157
161
  homepage: https://github.com/kcdragon/mongration
158
162
  licenses:
159
163
  - MIT
@@ -164,12 +168,12 @@ require_paths:
164
168
  - lib
165
169
  required_ruby_version: !ruby/object:Gem::Requirement
166
170
  requirements:
167
- - - '>='
171
+ - - ">="
168
172
  - !ruby/object:Gem::Version
169
173
  version: '0'
170
174
  required_rubygems_version: !ruby/object:Gem::Requirement
171
175
  requirements:
172
- - - '>'
176
+ - - ">"
173
177
  - !ruby/object:Gem::Version
174
178
  version: 1.3.1
175
179
  requirements: []
@@ -183,12 +187,13 @@ test_files:
183
187
  - spec/config/mongoid.yml
184
188
  - spec/db/migrate/.gitkeep
185
189
  - spec/fixtures/integration.rb
186
- - spec/integration/mongration_spec.rb
187
- - spec/integration/template_spec.rb
190
+ - spec/integration/create_migration_spec.rb
191
+ - spec/integration/migrate_spec.rb
192
+ - spec/integration/migrate_with_version_spec.rb
193
+ - spec/integration/rollback_spec.rb
194
+ - spec/integration/status_spec.rb
195
+ - spec/integration/version_spec.rb
188
196
  - spec/spec_helper.rb
189
- - spec/support/store_interface.rb
190
- - spec/unit/mongration/data_store/in_memory/store_spec.rb
191
- - spec/unit/mongration/data_store/mongoid/migration_spec.rb
192
- - spec/unit/mongration/data_store/mongoid/store_spec.rb
193
197
  - spec/unit/mongration/file_spec.rb
194
- has_rdoc:
198
+ - spec/unit/mongration/migration_spec.rb
199
+ - spec/unit/mongration/rake_tasks_spec.rb
@@ -1,32 +0,0 @@
1
- module Mongration
2
- module DataStore
3
- module InMemory
4
- class Store
5
-
6
- class Migration < Struct.new(:version, :file_names)
7
- attr_reader :destroyed
8
-
9
- def save; end
10
-
11
- def destroy
12
- @destroyed = true
13
- end
14
- end
15
-
16
- def initialize
17
- @migrations = []
18
- end
19
-
20
- def migrations
21
- @migrations.reject(&:destroyed)
22
- end
23
-
24
- def build_migration(version, file_names)
25
- migration = Migration.new(version, file_names)
26
- @migrations << migration
27
- migration
28
- end
29
- end
30
- end
31
- end
32
- end