generator_spec 0.9.5 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 259e672a9eabc7d6c46c0679efa9a0fce1f4b39fa6ba9bdf7a3698343710ff62
4
- data.tar.gz: 926d8dcf4a13a5319c430b94efa7bcc57ec0ce041aeb141e6fc26949a2ac9ae8
3
+ metadata.gz: ceeb0b383b8f1ef8d46905ff7845c3107ca106de596def8f51d75a33a985d1fb
4
+ data.tar.gz: 7b9aef2d85862a990be2270a75294403e1579dbe55fa2766788969e73adb0769
5
5
  SHA512:
6
- metadata.gz: 697ffb8f6a9a6ad285a222024db30f542d055821fb755d0ebb047e7a408b4724e902b33fc7b15a3a9f910ccdd7dea3f357895ee57c2c5ae86c216b55aab47a69
7
- data.tar.gz: 8c698a7a3c0c94e82262cd3eb1f058f2343100d9c214ef81e22d089c1fe27335c31c15009328efdc27191fce2dd17218a5f1d8a113bf40d626a0c97c4fe2da50
6
+ metadata.gz: be6fba5bbfb8e534a19ed86c516d190efe91d01e5cdead0c0a9b19c219d6690b5cb18c008ff3853291e8632495dfd03cdb142bd626f85af11e9465bb12aec8fb
7
+ data.tar.gz: 3e4f9f7a012cd795b01e8cc5fd02b7d36c10f8ce49ce1886939403452f236b91f3c67c3f02313379ad353b2bfcaba5e546777ba0927ad24fc17866416d073071
data/README.md CHANGED
@@ -16,7 +16,7 @@ Spec (files in `spec/lib/generators` are recognized as generator type example gr
16
16
 
17
17
  ```ruby
18
18
  # spec/lib/generators/test/test_generator_spec.rb
19
-
19
+
20
20
  require "generator_spec"
21
21
 
22
22
  describe TestGenerator, type: :generator do
@@ -33,13 +33,13 @@ describe TestGenerator, type: :generator do
33
33
  end
34
34
  end
35
35
  ```
36
-
36
+
37
37
  An RSpec file matching DSL is also provided, taken with permission from [beard](https://github.com/carlhuda/beard/blob/master/spec/support/matcher.rb) by [carlhuda](https://github.com/carlhuda).
38
38
 
39
39
  ```ruby
40
40
  describe TestGenerator, "using custom matcher", type: :generator do
41
41
  destination File.expand_path("../../tmp", __FILE__)
42
-
42
+
43
43
  before do
44
44
  prepare_destination
45
45
  run_generator
@@ -52,6 +52,7 @@ describe TestGenerator, "using custom matcher", type: :generator do
52
52
  directory "initializers" do
53
53
  file "test.rb" do
54
54
  contains "# Initializer"
55
+ does_not_contain "Something else"
55
56
  end
56
57
  end
57
58
  end
@@ -60,6 +61,7 @@ describe TestGenerator, "using custom matcher", type: :generator do
60
61
  file "123_create_tests.rb"
61
62
  migration "create_tests" do
62
63
  contains "class TestMigration"
64
+ does_not_contain "Something else"
63
65
  end
64
66
  end
65
67
  end
@@ -12,6 +12,7 @@ module GeneratorSpec
12
12
  def initialize(name, &block)
13
13
  @contents = []
14
14
  @name = name
15
+ @negative_contents = []
15
16
 
16
17
  if block_given?
17
18
  instance_eval(&block)
@@ -22,6 +23,10 @@ module GeneratorSpec
22
23
  @contents << text
23
24
  end
24
25
 
26
+ def does_not_contain(text)
27
+ @negative_contents << text
28
+ end
29
+
25
30
  def matches?(root)
26
31
  unless root.join(@name).exist?
27
32
  throw :failure, root.join(@name)
@@ -40,6 +45,12 @@ module GeneratorSpec
40
45
  throw :failure, [file, string, contents]
41
46
  end
42
47
  end
48
+
49
+ @negative_contents.each do |string|
50
+ if contents.include?(string)
51
+ throw :failure, [:not, file, string, contents]
52
+ end
53
+ end
43
54
  end
44
55
  end
45
56
 
@@ -129,7 +140,11 @@ module GeneratorSpec
129
140
 
130
141
  def failure_message
131
142
  if @failure.is_a?(Array) && @failure[0] == :not
132
- "Structure should not have had #{@failure[1]}, but it did"
143
+ if @failure.length > 2
144
+ "Structure should have #{@failure[1]} without #{@failure[2]}. It had:\n#{@failure[3]}"
145
+ else
146
+ "Structure should not have had #{@failure[1]}, but it did"
147
+ end
133
148
  elsif @failure.is_a?(Array)
134
149
  "Structure should have #{@failure[0]} with #{@failure[1]}. It had:\n#{@failure[2]}"
135
150
  else
@@ -1,3 +1,3 @@
1
1
  module GeneratorSpec
2
- VERSION = '0.9.5'
2
+ VERSION = '0.10.0'
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'tmpdir'
3
3
 
4
- TMP_ROOT = Pathname.new(Dir.tmpdir).join('generator')
4
+ TMP_ROOT = Pathname.new(Dir.mktmpdir('generator_spec'))
5
5
 
6
6
  describe TestGenerator, 'using custom matcher' do
7
7
  include GeneratorSpec::TestCase
@@ -107,6 +107,26 @@ module GeneratorSpec
107
107
  }.to throw_symbol(:failure)
108
108
  end
109
109
  end
110
+
111
+ context 'with does_not_contain' do
112
+ before do
113
+ write_file(location, 'class CreatePosts')
114
+ end
115
+
116
+ it 'doesnt throw if the contents dont include the string' do
117
+ file.does_not_contain 'PostsMigration'
118
+ expect {
119
+ file.matches?(TMP_ROOT)
120
+ }.to_not throw_symbol
121
+ end
122
+
123
+ it 'throws :failure if the contents include the string' do
124
+ file.does_not_contain 'CreatePosts'
125
+ expect {
126
+ file.matches?(TMP_ROOT)
127
+ }.to throw_symbol(:failure)
128
+ end
129
+ end
110
130
  end
111
131
  end
112
132
 
@@ -153,6 +173,26 @@ module GeneratorSpec
153
173
  }.to throw_symbol(:failure)
154
174
  end
155
175
  end
176
+
177
+ context 'with does_not_contain' do
178
+ before do
179
+ write_file(location, 'class CreatePosts')
180
+ end
181
+
182
+ it 'doesnt throw if the migration doesnt include the given content' do
183
+ migration.does_not_contain('CreateNotes')
184
+ expect {
185
+ migration.matches?(TMP_ROOT)
186
+ }.to_not throw_symbol
187
+ end
188
+
189
+ it 'throws failure if the migration includes the given content' do
190
+ migration.does_not_contain('CreatePosts')
191
+ expect {
192
+ migration.matches?(TMP_ROOT)
193
+ }.to throw_symbol(:failure)
194
+ end
195
+ end
156
196
  end
157
197
  end
158
198
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generator_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Hodgkiss