frontman-ssg 0.0.2

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 (141) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +42 -0
  3. data/.github/CODE_OF_CONDUCT.md +9 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +25 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  7. data/.gitignore +5 -0
  8. data/.rubocop.yml +88 -0
  9. data/CHANGELOG.md +11 -0
  10. data/CONTRIBUTING.md +42 -0
  11. data/Gemfile +5 -0
  12. data/LICENSE.md +21 -0
  13. data/Rakefile +94 -0
  14. data/SECURITY.md +6 -0
  15. data/bin/frontman +6 -0
  16. data/frontman-ssg.gemspec +48 -0
  17. data/frontman.svg +2 -0
  18. data/lib/frontman.rb +15 -0
  19. data/lib/frontman/app.rb +175 -0
  20. data/lib/frontman/bootstrapper.rb +70 -0
  21. data/lib/frontman/builder/asset_pipeline.rb +55 -0
  22. data/lib/frontman/builder/builder.rb +193 -0
  23. data/lib/frontman/builder/file.rb +55 -0
  24. data/lib/frontman/builder/mapping.rb +54 -0
  25. data/lib/frontman/builder/statistics_collector.rb +37 -0
  26. data/lib/frontman/cli.rb +6 -0
  27. data/lib/frontman/commands/build.rb +76 -0
  28. data/lib/frontman/commands/init.rb +58 -0
  29. data/lib/frontman/commands/serve.rb +110 -0
  30. data/lib/frontman/concerns/dispatch_events.rb +56 -0
  31. data/lib/frontman/concerns/forward_calls_to_app.rb +28 -0
  32. data/lib/frontman/config.rb +52 -0
  33. data/lib/frontman/context.rb +125 -0
  34. data/lib/frontman/custom_struct.rb +44 -0
  35. data/lib/frontman/data_store.rb +106 -0
  36. data/lib/frontman/data_store_file.rb +60 -0
  37. data/lib/frontman/helpers/app_helper.rb +18 -0
  38. data/lib/frontman/helpers/link_helper.rb +35 -0
  39. data/lib/frontman/helpers/render_helper.rb +76 -0
  40. data/lib/frontman/helpers/url_helper.rb +11 -0
  41. data/lib/frontman/iterator.rb +48 -0
  42. data/lib/frontman/process/chain.rb +43 -0
  43. data/lib/frontman/process/processor.rb +11 -0
  44. data/lib/frontman/renderers/erb_renderer.rb +21 -0
  45. data/lib/frontman/renderers/haml_renderer.rb +22 -0
  46. data/lib/frontman/renderers/markdown_renderer.rb +26 -0
  47. data/lib/frontman/renderers/renderer.rb +26 -0
  48. data/lib/frontman/renderers/renderer_resolver.rb +26 -0
  49. data/lib/frontman/resource.rb +279 -0
  50. data/lib/frontman/sitemap_tree.rb +211 -0
  51. data/lib/frontman/toolbox/timer.rb +49 -0
  52. data/lib/frontman/version.rb +6 -0
  53. data/project-templates/default/.gitignore +2 -0
  54. data/project-templates/default/Gemfile +3 -0
  55. data/project-templates/default/config.rb +17 -0
  56. data/project-templates/default/data/site.yml +4 -0
  57. data/project-templates/default/helpers/site_helper.rb +7 -0
  58. data/project-templates/default/public/code.css +77 -0
  59. data/project-templates/default/public/frontman-logo.svg +2 -0
  60. data/project-templates/default/public/main.css +27 -0
  61. data/project-templates/default/public/main.js +1 -0
  62. data/project-templates/default/source/index.html.md.erb +7 -0
  63. data/project-templates/default/source/sitemap.xml.erb +11 -0
  64. data/project-templates/default/views/layouts/main.erb +19 -0
  65. data/project-templates/default/views/layouts/main.haml +15 -0
  66. data/project-templates/default/views/partials/menu.erb +7 -0
  67. data/project-templates/webpack/.gitignore +4 -0
  68. data/project-templates/webpack/Gemfile +3 -0
  69. data/project-templates/webpack/README.md +54 -0
  70. data/project-templates/webpack/assets/css/code.css +77 -0
  71. data/project-templates/webpack/assets/css/style.css +27 -0
  72. data/project-templates/webpack/assets/images/.gitkeep +0 -0
  73. data/project-templates/webpack/assets/images/frontman_logo.svg +2 -0
  74. data/project-templates/webpack/assets/js/index.js +1 -0
  75. data/project-templates/webpack/config.rb +24 -0
  76. data/project-templates/webpack/data/site.yml +4 -0
  77. data/project-templates/webpack/helpers/assets_helper.rb +24 -0
  78. data/project-templates/webpack/helpers/site_helper.rb +7 -0
  79. data/project-templates/webpack/package-lock.json +7603 -0
  80. data/project-templates/webpack/package.json +34 -0
  81. data/project-templates/webpack/source/index.html.md.erb +7 -0
  82. data/project-templates/webpack/source/sitemap.xml.erb +11 -0
  83. data/project-templates/webpack/views/layouts/main.erb +20 -0
  84. data/project-templates/webpack/views/layouts/main.haml +14 -0
  85. data/project-templates/webpack/views/partials/menu.erb +7 -0
  86. data/project-templates/webpack/views/partials/script_with_vendors.haml +5 -0
  87. data/project-templates/webpack/webpack/base.config.js +51 -0
  88. data/project-templates/webpack/webpack/dev.config.js +6 -0
  89. data/project-templates/webpack/webpack/prod.config.js +30 -0
  90. data/readme.md +80 -0
  91. data/sorbet/config +2 -0
  92. data/sorbet/rbi/hidden-definitions/errors.txt +27259 -0
  93. data/sorbet/rbi/hidden-definitions/hidden.rbi +45122 -0
  94. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +276 -0
  95. data/sorbet/rbi/todo.rbi +6 -0
  96. data/spec/frontman/app_spec.rb +48 -0
  97. data/spec/frontman/bootstrapper_spec.rb +26 -0
  98. data/spec/frontman/builder/builder_spec.rb +79 -0
  99. data/spec/frontman/builder/file_spec.rb +45 -0
  100. data/spec/frontman/builder/mapping_spec.rb +8 -0
  101. data/spec/frontman/concerns/dispatch_events_spec.rb +70 -0
  102. data/spec/frontman/concerns/forward_calls_to_app_spec.rb +21 -0
  103. data/spec/frontman/config_spec.rb +54 -0
  104. data/spec/frontman/context_spec.rb +48 -0
  105. data/spec/frontman/custom_struct_spec.rb +51 -0
  106. data/spec/frontman/data_store_file_spec.rb +9 -0
  107. data/spec/frontman/data_store_spec.rb +36 -0
  108. data/spec/frontman/frontman_ssg_spec.rb +7 -0
  109. data/spec/frontman/helpers/app_helper_spec.rb +24 -0
  110. data/spec/frontman/helpers/link_helper_spec.rb +37 -0
  111. data/spec/frontman/helpers/render_helper_spec.rb +55 -0
  112. data/spec/frontman/helpers/url_helper_spec.rb +21 -0
  113. data/spec/frontman/iterator_spec.rb +47 -0
  114. data/spec/frontman/mocks/asset.css +3 -0
  115. data/spec/frontman/mocks/config.rb +0 -0
  116. data/spec/frontman/mocks/helpers/formatting_helper.rb +5 -0
  117. data/spec/frontman/mocks/helpers/language_helper.rb +5 -0
  118. data/spec/frontman/mocks/helpers/link_helper.rb +5 -0
  119. data/spec/frontman/mocks/helpers/test_command.rb +5 -0
  120. data/spec/frontman/mocks/html_file.html +8 -0
  121. data/spec/frontman/mocks/html_file.html.md.erb +9 -0
  122. data/spec/frontman/mocks/html_file.md.html +8 -0
  123. data/spec/frontman/mocks/info.yml +4 -0
  124. data/spec/frontman/mocks/layouts/raw_without_body.haml +1 -0
  125. data/spec/frontman/mocks/nested/data.yml +4 -0
  126. data/spec/frontman/mocks/nested/more_data.yml +4 -0
  127. data/spec/frontman/mocks/partials/paragraph.haml +2 -0
  128. data/spec/frontman/mocks/snippet/html_file.html +8 -0
  129. data/spec/frontman/mocks/snippet/html_file.yml +670 -0
  130. data/spec/frontman/mocks/test.html +8 -0
  131. data/spec/frontman/mocks/wrap.haml +3 -0
  132. data/spec/frontman/process/chain_spec.rb +56 -0
  133. data/spec/frontman/renderers/erb_renderer_spec.rb +22 -0
  134. data/spec/frontman/renderers/haml_renderer_spec.rb +12 -0
  135. data/spec/frontman/renderers/markdown_renderer_spec.rb +12 -0
  136. data/spec/frontman/renderers/renderer_spec.rb +16 -0
  137. data/spec/frontman/resource_spec.rb +151 -0
  138. data/spec/frontman/sitemap_tree_spec.rb +128 -0
  139. data/spec/frontman/toolbox/timer_spec.rb +34 -0
  140. data/spec/spec_setup.rb +19 -0
  141. metadata +507 -0
@@ -0,0 +1,276 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi sorbet-typed
3
+ #
4
+ # If you would like to make changes to this file, great! Please upstream any changes you make here:
5
+ #
6
+ # https://github.com/sorbet/sorbet-typed/edit/master/lib/rainbow/all/rainbow.rbi
7
+ #
8
+ # typed: strong
9
+
10
+ module Rainbow
11
+ sig { returns(T::Boolean) }
12
+ attr_accessor :enabled
13
+
14
+ class Color
15
+ sig { returns(Symbol) }
16
+ attr_reader :ground
17
+
18
+ sig do
19
+ params(
20
+ ground: Symbol,
21
+ values: T.any([Integer], [Integer, Integer, Integer])
22
+ ).returns(Color)
23
+ end
24
+ def self.build(ground, values); end
25
+
26
+ sig { params(hex: String).returns([Integer, Integer, Integer]) }
27
+ def self.parse_hex_color(hex); end
28
+
29
+ class Indexed < Color
30
+ sig { returns(Integer) }
31
+ attr_reader :num
32
+
33
+ sig { params(ground: Symbol, num: Integer).returns(Indexed) }
34
+ def initialize(ground, num); end
35
+
36
+ sig { returns(T::Array[Integer]) }
37
+ def codes; end
38
+ end
39
+
40
+ class Named < Indexed
41
+ NAMES = T.let(nil, T::Hash[Symbol, Integer])
42
+
43
+ sig { returns(T::Array[Symbol]) }
44
+ def self.color_names; end
45
+
46
+ sig { returns(String) }
47
+ def self.valid_names; end
48
+
49
+ sig { params(ground: Symbol, name: Symbol).returns(Named) }
50
+ def initialize(ground, name); end
51
+ end
52
+
53
+ class RGB < Indexed
54
+ sig { returns(Integer) }
55
+ attr_accessor :r, :g, :b
56
+
57
+ sig { params(value: Numeric).returns(Integer) }
58
+ def to_ansi_domain(value); end
59
+
60
+ sig { params(ground: Symbol, values: Integer).returns(RGB) }
61
+ def initialize(ground, *values); end
62
+
63
+ sig { returns(T::Array[Integer]) }
64
+ def codes; end
65
+ end
66
+
67
+ class X11Named < RGB
68
+ include X11ColorNames
69
+
70
+ sig { returns(T::Array[Symbol]) }
71
+ def self.color_names; end
72
+
73
+ sig { returns(String) }
74
+ def self.valid_names; end
75
+
76
+ sig { params(ground: Symbol, name: Symbol).returns(X11Named) }
77
+ def initialize(ground, name); end
78
+ end
79
+ end
80
+
81
+ sig { returns(Wrapper) }
82
+ def self.global; end
83
+
84
+ sig { returns(T::Boolean) }
85
+ def self.enabled; end
86
+
87
+ sig { params(value: T::Boolean).returns(T::Boolean) }
88
+ def self.enabled=(value); end
89
+
90
+ sig { params(string: String).returns(String) }
91
+ def self.uncolor(string); end
92
+
93
+ class NullPresenter < String
94
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
95
+ def color(*values); end
96
+
97
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
98
+ def foreground(*values); end
99
+
100
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
101
+ def fg(*values); end
102
+
103
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
104
+ def background(*values); end
105
+
106
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
107
+ def bg(*values); end
108
+
109
+ sig { returns(NullPresenter) }
110
+ def reset; end
111
+
112
+ sig { returns(NullPresenter) }
113
+ def bright; end
114
+
115
+ sig { returns(NullPresenter) }
116
+ def faint; end
117
+
118
+ sig { returns(NullPresenter) }
119
+ def italic; end
120
+
121
+ sig { returns(NullPresenter) }
122
+ def underline; end
123
+
124
+ sig { returns(NullPresenter) }
125
+ def blink; end
126
+
127
+ sig { returns(NullPresenter) }
128
+ def inverse; end
129
+
130
+ sig { returns(NullPresenter) }
131
+ def hide; end
132
+
133
+ sig { returns(NullPresenter) }
134
+ def cross_out; end
135
+
136
+ sig { returns(NullPresenter) }
137
+ def black; end
138
+
139
+ sig { returns(NullPresenter) }
140
+ def red; end
141
+
142
+ sig { returns(NullPresenter) }
143
+ def green; end
144
+
145
+ sig { returns(NullPresenter) }
146
+ def yellow; end
147
+
148
+ sig { returns(NullPresenter) }
149
+ def blue; end
150
+
151
+ sig { returns(NullPresenter) }
152
+ def magenta; end
153
+
154
+ sig { returns(NullPresenter) }
155
+ def cyan; end
156
+
157
+ sig { returns(NullPresenter) }
158
+ def white; end
159
+
160
+ sig { returns(NullPresenter) }
161
+ def bold; end
162
+
163
+ sig { returns(NullPresenter) }
164
+ def dark; end
165
+
166
+ sig { returns(NullPresenter) }
167
+ def strike; end
168
+ end
169
+
170
+ class Presenter < String
171
+ TERM_EFFECTS = T.let(nil, T::Hash[Symbol, Integer])
172
+
173
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
174
+ def color(*values); end
175
+
176
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
177
+ def foreground(*values); end
178
+
179
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
180
+ def fg(*values); end
181
+
182
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
183
+ def background(*values); end
184
+
185
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
186
+ def bg(*values); end
187
+
188
+ sig { returns(Presenter) }
189
+ def reset; end
190
+
191
+ sig { returns(Presenter) }
192
+ def bright; end
193
+
194
+ sig { returns(Presenter) }
195
+ def faint; end
196
+
197
+ sig { returns(Presenter) }
198
+ def italic; end
199
+
200
+ sig { returns(Presenter) }
201
+ def underline; end
202
+
203
+ sig { returns(Presenter) }
204
+ def blink; end
205
+
206
+ sig { returns(Presenter) }
207
+ def inverse; end
208
+
209
+ sig { returns(Presenter) }
210
+ def hide; end
211
+
212
+ sig { returns(Presenter) }
213
+ def cross_out; end
214
+
215
+ sig { returns(Presenter) }
216
+ def black; end
217
+
218
+ sig { returns(Presenter) }
219
+ def red; end
220
+
221
+ sig { returns(Presenter) }
222
+ def green; end
223
+
224
+ sig { returns(Presenter) }
225
+ def yellow; end
226
+
227
+ sig { returns(Presenter) }
228
+ def blue; end
229
+
230
+ sig { returns(Presenter) }
231
+ def magenta; end
232
+
233
+ sig { returns(Presenter) }
234
+ def cyan; end
235
+
236
+ sig { returns(Presenter) }
237
+ def white; end
238
+
239
+ sig { returns(Presenter) }
240
+ def bold; end
241
+
242
+ sig { returns(Presenter) }
243
+ def dark; end
244
+
245
+ sig { returns(Presenter) }
246
+ def strike; end
247
+ end
248
+
249
+ class StringUtils
250
+ sig { params(string: String, codes: T::Array[Integer]).returns(String) }
251
+ def self.wrap_with_sgr(string, codes); end
252
+
253
+ sig { params(string: String).returns(String) }
254
+ def uncolor(string); end
255
+ end
256
+
257
+ VERSION = T.let(nil, String)
258
+
259
+ class Wrapper
260
+ sig { returns(T::Boolean) }
261
+ attr_accessor :enabled
262
+
263
+ sig { params(enabled: T::Boolean).returns(Wrapper) }
264
+ def initialize(enabled = true); end
265
+
266
+ sig { params(string: String).returns(T.any(Rainbow::Presenter, Rainbow::NullPresenter)) }
267
+ def wrap(string); end
268
+ end
269
+
270
+ module X11ColorNames
271
+ NAMES = T.let(nil, T::Hash[Symbol, [Integer, Integer, Integer]])
272
+ end
273
+ end
274
+
275
+ sig { params(string: String).returns(Rainbow::Presenter) }
276
+ def Rainbow(string); end
@@ -0,0 +1,6 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi todo
3
+
4
+ # typed: strong
5
+ module T::Private::Methods::MethodHooks; end
6
+ module T::Private::Methods::SingletonMethodHooks; end
@@ -0,0 +1,48 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require './spec/spec_setup'
5
+ require 'lib/frontman/app'
6
+ require 'lib/frontman/sitemap_tree'
7
+
8
+ describe Frontman::App do
9
+ subject { Frontman::App.instance }
10
+
11
+ context 'Helpers' do
12
+ it 'should register helpers correctly' do
13
+ # TODO: make test
14
+ end
15
+
16
+ it 'should throw an error when registering a missing helpers' do
17
+ expect do
18
+ subject.register_helpers(
19
+ [
20
+ { path: File.join(Dir.pwd, 'helpers/MissingHelper.rb'), name: 'MissingHelper' }
21
+ ]
22
+ )
23
+ end.to raise_error LoadError
24
+ end
25
+ end
26
+
27
+ context 'Redirects' do
28
+ it 'should store redirects' do
29
+ subject.add_redirect('/foo', '/bar')
30
+ expect(subject.get_redirect('/foo')).to eq '/bar'
31
+ end
32
+ end
33
+
34
+ context 'manifest' do
35
+ it 'should prepend with a slash if needed' do
36
+ expect(subject.add_to_manifest('key', 'foo/bar')).to eq '/foo/bar'
37
+ expect(subject.add_to_manifest('key', '/bar/foo')).to eq '/bar/foo'
38
+ end
39
+ end
40
+
41
+ it 'should return a sitemap_tree' do
42
+ expect(subject.sitemap_tree.is_a?(Frontman::SitemapTree)).to eq true
43
+ end
44
+
45
+ it 'should return itself when calling app' do
46
+ expect(subject.app).to eq subject
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require './spec/spec_setup'
5
+ require 'frontman/app'
6
+ require 'frontman/bootstrapper'
7
+ require 'frontman/config'
8
+
9
+ describe Frontman::Bootstrapper do
10
+ context 'helpers' do
11
+ it 'should find all helpers in a given folder' do
12
+ result = Frontman::Bootstrapper.find_helpers_in(
13
+ 'spec/frontman/mocks/helpers/'
14
+ )
15
+ expect(result.size).to eq 3
16
+ end
17
+ end
18
+
19
+ context 'resources' do
20
+ it 'should find all resources in a given folder' do
21
+ resources = Frontman::Bootstrapper.resources_from_dir('spec/frontman/mocks')
22
+
23
+ expect(resources.size).to eq 14 # Number of non-YAML files in this folder
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,79 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require './spec/spec_setup'
5
+ require 'frontman/builder/builder'
6
+ require 'frontman/resource'
7
+
8
+ describe Frontman::Builder::Builder do
9
+ subject { Frontman::Builder::Builder.new }
10
+
11
+ context 'build directory' do
12
+ it 'should default to build folder in root' do
13
+ expect(subject.build_directory).to eq Dir.pwd + '/build/'
14
+ end
15
+
16
+ it 'should override the build directory' do
17
+ directory = Dir.pwd + '/fake-build/'
18
+ expect(subject.build_directory).to eq Dir.pwd + '/build/'
19
+ subject.build_directory = directory
20
+ expect(subject.build_directory).to eq directory
21
+ end
22
+ end
23
+
24
+ context 'building' do
25
+ subject do
26
+ builder = Frontman::Builder::Builder.new
27
+ builder.build_directory = Dir.pwd + '/spec/frontman/build/'
28
+ builder
29
+ end
30
+
31
+ it 'should properly build a redirect' do
32
+ # TODO
33
+ end
34
+
35
+ it 'should build from an ERB file' do
36
+ subject.build_from_erb('spec/frontman/mocks/html_file.html.md.erb', 'spec/frontman/mocks/html_file.html.md.erb')
37
+ path = subject.build_directory + '/spec/frontman/mocks/html_file/index.html'
38
+
39
+ expect(File.exist?(path)).to eq true
40
+ expect(File.read(path).include?('testing erb')).to eq true # This text will be rendered by ERB
41
+ end
42
+
43
+ it 'should build from an asset' do
44
+ subject.build_from_asset('spec/frontman/mocks/asset.css', 'spec/frontman/mocks/asset.css')
45
+ path = subject.build_directory + '/spec/frontman/mocks/asset.css'
46
+
47
+ expect(File.exist?(path)).to eq true
48
+ end
49
+
50
+ it 'should not rebuild an existing file' do
51
+ file_path = subject.build_directory + 'spec/frontman/mocks/asset.css'
52
+ current_mtime = File.mtime(file_path)
53
+ subject.current_build_files = Dir.glob(Dir.pwd + '/spec/frontman/build/**/*').reject { |f| File.directory? f }
54
+ subject.build_from_asset('spec/frontman/mocks/asset.css', 'spec/frontman/mocks/asset.css')
55
+
56
+ expect(File.mtime(file_path)).to eq current_mtime
57
+ end
58
+
59
+ it 'should build from resource' do
60
+ subject.build_resource(Frontman::Resource.from_path('spec/frontman/mocks/test.html'))
61
+ path = subject.build_directory + '/spec/frontman/mocks/test/index.html'
62
+ expect(File.exist?(path)).to eq true
63
+ end
64
+
65
+ it 'should skip rebuilding from resource' do
66
+ resource = Frontman::Resource.from_path('spec/frontman/mocks/test.html')
67
+ path = subject.build_directory + 'spec/frontman/mocks/test/index.html'
68
+ subject.current_build_files = [path]
69
+
70
+ current_mtime = File.mtime(path)
71
+ subject.build_resource(resource)
72
+ expect(File.mtime(path)).to eq current_mtime
73
+ end
74
+
75
+ it 'should delete files properly' do
76
+ # TODO
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,45 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require './spec/spec_setup'
5
+ require 'frontman/builder/file'
6
+
7
+ describe Frontman::Builder::File do
8
+ subject { Frontman::Builder::File.new('fake/path', :created) }
9
+
10
+ it 'should return the correct path' do
11
+ expect(subject.path).to eq 'fake/path'
12
+ end
13
+
14
+ context 'updated' do
15
+ subject { Frontman::Builder::File.updated('fake/path') }
16
+
17
+ it 'should initialize with the right status' do
18
+ expect(subject.status).to eq :updated
19
+ end
20
+ end
21
+
22
+ context 'created' do
23
+ subject { Frontman::Builder::File.created('fake/path') }
24
+
25
+ it 'should initialize with the right status' do
26
+ expect(subject.status).to eq :created
27
+ end
28
+ end
29
+
30
+ context 'deleted' do
31
+ subject { Frontman::Builder::File.deleted('fake/path') }
32
+
33
+ it 'should initialize with the right status' do
34
+ expect(subject.status).to eq :deleted
35
+ end
36
+ end
37
+
38
+ context 'unchanged' do
39
+ subject { Frontman::Builder::File.unchanged('fake/path') }
40
+
41
+ it 'should initialize with the right status' do
42
+ expect(subject.status).to eq :unchanged
43
+ end
44
+ end
45
+ end