playgroundbook 0.3.0 → 0.4.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +110 -0
- data/Changelog.md +4 -0
- data/Gemfile +10 -9
- data/Gemfile.lock +4 -2
- data/Guardfile +2 -2
- data/Rakefile +3 -3
- data/bin/playgroundbook +9 -7
- data/lib/{playgroundbook_lint → linter}/abstract_linter.rb +2 -2
- data/lib/{playgroundbook_lint → linter}/chapter_linter.rb +4 -4
- data/lib/{playgroundbook_lint → linter}/chapter_manifest_linter.rb +5 -5
- data/lib/{playgroundbook_lint → linter}/contents_linter.rb +3 -3
- data/lib/{playgroundbook_lint → linter}/cutscene_page_linter.rb +2 -2
- data/lib/{playgroundbook_lint → linter}/cutscene_page_manifest_linter.rb +2 -2
- data/lib/{playgroundbook_lint → linter}/manifest_linter.rb +5 -5
- data/lib/{playgroundbook_lint → linter}/page_linter.rb +2 -2
- data/lib/{playgroundbook_lint → linter}/page_manifest_linter.rb +3 -3
- data/lib/{playgroundbook_lint → linter}/playgroundbook_lint.rb +6 -6
- data/lib/{playgroundbook_lint → linter}/root_manifest_linter.rb +9 -9
- data/lib/playgroundbook.rb +8 -7
- data/lib/{playgroundbook_renderer → renderer}/chapter_collator.rb +18 -18
- data/lib/renderer/contents_manifest_generator.rb +35 -0
- data/lib/{playgroundbook_renderer → renderer}/glossary_generator.rb +13 -16
- data/lib/{playgroundbook_renderer → renderer}/page_parser.rb +4 -3
- data/lib/{playgroundbook_renderer → renderer}/page_processor.rb +0 -0
- data/lib/{playgroundbook_renderer → renderer}/page_writer.rb +11 -11
- data/lib/{playgroundbook_renderer → renderer}/playgroundbook_renderer.rb +29 -29
- data/lib/version.rb +1 -1
- data/lib/wrapper/markdown_wrapper.rb +58 -0
- data/playground_book_lint.gemspec +14 -14
- data/spec/fixtures/wrapper/destination/swift_at_artsy_1.swift +199 -0
- data/spec/fixtures/wrapper/source/Swift-at-Artsy.playground/Contents.swift +199 -0
- data/spec/fixtures/wrapper/source/Swift-at-Artsy.playground/contents.xcplayground +4 -0
- data/spec/fixtures/wrapper/source/swift_at_artsy_1.md +183 -0
- data/spec/{playground_book_lint → linter}/chapter_linter_spec.rb +5 -5
- data/spec/{playground_book_lint → linter}/chapter_manifest_linter_spec.rb +12 -12
- data/spec/{playground_book_lint → linter}/contents_linter_spec.rb +3 -3
- data/spec/{playground_book_lint → linter}/cutscene_page_linter_spec.rb +2 -2
- data/spec/linter/cutscene_page_manifest_linter_spec.rb +63 -0
- data/spec/linter/manfiest_linter_spec.rb +71 -0
- data/spec/{playground_book_lint → linter}/page_linter_spec.rb +4 -4
- data/spec/{playground_book_lint → linter}/page_manifest_linter_spec.rb +13 -13
- data/spec/{playground_book_lint → linter}/playgroundbook_lint_spec.rb +6 -6
- data/spec/linter/root_manifest_linter_spec.rb +35 -0
- data/spec/renderer/chapter_collator_spec.rb +70 -0
- data/spec/renderer/contents_manfiest_generator_spec.rb +41 -0
- data/spec/renderer/glossary_generator_spec.rb +54 -0
- data/spec/{playgroundbook_renderer_spec → renderer}/page_processor_spec.rb +12 -12
- data/spec/{playgroundbook_renderer_spec → renderer}/page_writer_spec.rb +19 -19
- data/spec/renderer/playgroundbook_renderer_spec.rb +122 -0
- data/spec/spec_helper.rb +38 -38
- data/spec/wrapper/markdown_wrapper_spec.rb +33 -0
- metadata +43 -37
- data/lib/playgroundbook_renderer/contents_manifest_generator.rb +0 -35
- data/spec/playground_book_lint/cutscene_page_manifest_linter_spec.rb +0 -63
- data/spec/playground_book_lint/manfiest_linter_spec.rb +0 -71
- data/spec/playground_book_lint/root_manifest_linter_spec.rb +0 -35
- data/spec/playgroundbook_renderer_spec/chapter_collator_spec.rb +0 -70
- data/spec/playgroundbook_renderer_spec/contents_manfiest_generator_spec.rb +0 -41
- data/spec/playgroundbook_renderer_spec/glossary_generator_spec.rb +0 -52
- data/spec/playgroundbook_renderer_spec/playgroundbook_renderer_spec.rb +0 -122
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
2
|
+
|
3
|
+
module Playgroundbook
|
4
|
+
describe MarkdownWrapper do
|
5
|
+
let(:test_ui) { Cork::Board.new(silent: true) }
|
6
|
+
|
7
|
+
it "creates a swift file from a markdown file" do
|
8
|
+
source = "spec/fixtures/wrapper/source/swift_at_artsy_1.md"
|
9
|
+
destination = "spec/fixtures/wrapper/destination/swift_at_artsy_1.swift"
|
10
|
+
subject = MarkdownWrapper.new(source, "Swift at Artsy")
|
11
|
+
contents = File.read(source)
|
12
|
+
expect(subject.swap_code_context(contents)).to eq(File.read(destination))
|
13
|
+
end
|
14
|
+
|
15
|
+
it "creates a playground around the file" do
|
16
|
+
source = "spec/fixtures/wrapper/source/swift_at_artsy_1.md"
|
17
|
+
|
18
|
+
Dir.mktmpdir do |dir|
|
19
|
+
new_source = File.join(dir, File.basename(source))
|
20
|
+
FileUtils.cp(source, new_source)
|
21
|
+
subject = MarkdownWrapper.new(new_source, "Swift at Artsy")
|
22
|
+
|
23
|
+
subject.generate
|
24
|
+
|
25
|
+
playground = File.join(dir, "Swift at Artsy.playground")
|
26
|
+
expect(Dir.exist?(playground)).to eq(true)
|
27
|
+
expect(File.exist?(File.join(playground, "Contents.swift"))).to eq(true)
|
28
|
+
expect(File.exist?(File.join(playground, "timeline.xctimeline"))).to eq(true)
|
29
|
+
expect(File.exist?(File.join(playground, "contents.xcplayground"))).to eq(true)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playgroundbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ash Furrow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: plist
|
@@ -71,26 +71,27 @@ files:
|
|
71
71
|
- README.md
|
72
72
|
- Rakefile
|
73
73
|
- bin/playgroundbook
|
74
|
+
- lib/linter/abstract_linter.rb
|
75
|
+
- lib/linter/chapter_linter.rb
|
76
|
+
- lib/linter/chapter_manifest_linter.rb
|
77
|
+
- lib/linter/contents_linter.rb
|
78
|
+
- lib/linter/cutscene_page_linter.rb
|
79
|
+
- lib/linter/cutscene_page_manifest_linter.rb
|
80
|
+
- lib/linter/manifest_linter.rb
|
81
|
+
- lib/linter/page_linter.rb
|
82
|
+
- lib/linter/page_manifest_linter.rb
|
83
|
+
- lib/linter/playgroundbook_lint.rb
|
84
|
+
- lib/linter/root_manifest_linter.rb
|
74
85
|
- lib/playgroundbook.rb
|
75
|
-
- lib/
|
76
|
-
- lib/
|
77
|
-
- lib/
|
78
|
-
- lib/
|
79
|
-
- lib/
|
80
|
-
- lib/
|
81
|
-
- lib/
|
82
|
-
- lib/playgroundbook_lint/page_linter.rb
|
83
|
-
- lib/playgroundbook_lint/page_manifest_linter.rb
|
84
|
-
- lib/playgroundbook_lint/playgroundbook_lint.rb
|
85
|
-
- lib/playgroundbook_lint/root_manifest_linter.rb
|
86
|
-
- lib/playgroundbook_renderer/chapter_collator.rb
|
87
|
-
- lib/playgroundbook_renderer/contents_manifest_generator.rb
|
88
|
-
- lib/playgroundbook_renderer/glossary_generator.rb
|
89
|
-
- lib/playgroundbook_renderer/page_parser.rb
|
90
|
-
- lib/playgroundbook_renderer/page_processor.rb
|
91
|
-
- lib/playgroundbook_renderer/page_writer.rb
|
92
|
-
- lib/playgroundbook_renderer/playgroundbook_renderer.rb
|
86
|
+
- lib/renderer/chapter_collator.rb
|
87
|
+
- lib/renderer/contents_manifest_generator.rb
|
88
|
+
- lib/renderer/glossary_generator.rb
|
89
|
+
- lib/renderer/page_parser.rb
|
90
|
+
- lib/renderer/page_processor.rb
|
91
|
+
- lib/renderer/page_writer.rb
|
92
|
+
- lib/renderer/playgroundbook_renderer.rb
|
93
93
|
- lib/version.rb
|
94
|
+
- lib/wrapper/markdown_wrapper.rb
|
94
95
|
- playground_book_lint.gemspec
|
95
96
|
- spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Manifest.plist
|
96
97
|
- spec/fixtures/Starter.playgroundbook/Contents/Chapters/Chapter1.playgroundchapter/Pages/Page1.playgroundpage/Contents.swift
|
@@ -102,23 +103,28 @@ files:
|
|
102
103
|
- spec/fixtures/book.yml
|
103
104
|
- spec/fixtures/test_chapter.playground/Contents.swift
|
104
105
|
- spec/fixtures/test_chapter.playground/contents.xcplayground
|
105
|
-
- spec/
|
106
|
-
- spec/
|
107
|
-
- spec/
|
108
|
-
- spec/
|
109
|
-
- spec/
|
110
|
-
- spec/
|
111
|
-
- spec/
|
112
|
-
- spec/
|
113
|
-
- spec/
|
114
|
-
- spec/
|
115
|
-
- spec/
|
116
|
-
- spec/
|
117
|
-
- spec/
|
118
|
-
- spec/
|
119
|
-
- spec/
|
120
|
-
- spec/
|
106
|
+
- spec/fixtures/wrapper/destination/swift_at_artsy_1.swift
|
107
|
+
- spec/fixtures/wrapper/source/Swift-at-Artsy.playground/Contents.swift
|
108
|
+
- spec/fixtures/wrapper/source/Swift-at-Artsy.playground/contents.xcplayground
|
109
|
+
- spec/fixtures/wrapper/source/swift_at_artsy_1.md
|
110
|
+
- spec/linter/chapter_linter_spec.rb
|
111
|
+
- spec/linter/chapter_manifest_linter_spec.rb
|
112
|
+
- spec/linter/contents_linter_spec.rb
|
113
|
+
- spec/linter/cutscene_page_linter_spec.rb
|
114
|
+
- spec/linter/cutscene_page_manifest_linter_spec.rb
|
115
|
+
- spec/linter/manfiest_linter_spec.rb
|
116
|
+
- spec/linter/page_linter_spec.rb
|
117
|
+
- spec/linter/page_manifest_linter_spec.rb
|
118
|
+
- spec/linter/playgroundbook_lint_spec.rb
|
119
|
+
- spec/linter/root_manifest_linter_spec.rb
|
120
|
+
- spec/renderer/chapter_collator_spec.rb
|
121
|
+
- spec/renderer/contents_manfiest_generator_spec.rb
|
122
|
+
- spec/renderer/glossary_generator_spec.rb
|
123
|
+
- spec/renderer/page_processor_spec.rb
|
124
|
+
- spec/renderer/page_writer_spec.rb
|
125
|
+
- spec/renderer/playgroundbook_renderer_spec.rb
|
121
126
|
- spec/spec_helper.rb
|
127
|
+
- spec/wrapper/markdown_wrapper_spec.rb
|
122
128
|
homepage: https://github.com/ashfurrow/playground-book-lint
|
123
129
|
licenses:
|
124
130
|
- MIT
|
@@ -139,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
145
|
version: '0'
|
140
146
|
requirements: []
|
141
147
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.4.8
|
143
149
|
signing_key:
|
144
150
|
specification_version: 4
|
145
151
|
summary: Lints/renders Swift Playground books.
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'plist'
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
class ContentsManifestGenerator
|
5
|
-
def initialize(ui = Cork::Board.new)
|
6
|
-
@ui = ui
|
7
|
-
end
|
8
|
-
|
9
|
-
def generate!(book_metadata)
|
10
|
-
@ui.puts "Generating main manifest file."
|
11
|
-
write_manifest_file!(book_metadata)
|
12
|
-
@ui.puts "Manifest file generated."
|
13
|
-
end
|
14
|
-
|
15
|
-
def write_manifest_file!(book_metadata)
|
16
|
-
File.open(ManifestFileName, 'w') do |file|
|
17
|
-
file.write(manifest_contents(book_metadata).to_plist)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def manifest_contents(book_metadata)
|
22
|
-
chapters = book_metadata['chapters'].map{ |c| "#{c}.playgroundchapter" }
|
23
|
-
manifest_contents = {
|
24
|
-
'Name' => book_metadata['name'],
|
25
|
-
'ContentIdentifier' => book_metadata['identifier'],
|
26
|
-
'DeploymentTarget' => book_metadata['deployment_target'] || 'ios10.0',
|
27
|
-
'Chapters' => chapters,
|
28
|
-
'Version' => '1.0',
|
29
|
-
'ContentVersion' => '1.0',
|
30
|
-
}
|
31
|
-
manifest_contents['ImageReference'] = book_metadata['cover'] unless book_metadata['cover'].nil?
|
32
|
-
manifest_contents
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
describe CutscenePageManifestLinter do
|
5
|
-
include FakeFS::SpecHelpers
|
6
|
-
let(:cutscene_page_manifest_linter) { CutscenePageManifestLinter.new }
|
7
|
-
|
8
|
-
it 'given a valid manifest does not fail' do
|
9
|
-
FakeFS do
|
10
|
-
cutscene_reference = 'RealFile.html'
|
11
|
-
plist = {
|
12
|
-
'Name' => 'Test Page',
|
13
|
-
'CutsceneReference' => cutscene_reference
|
14
|
-
}.to_plist
|
15
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
16
|
-
File.open(cutscene_reference, 'w')
|
17
|
-
|
18
|
-
expect { cutscene_page_manifest_linter.lint }.not_to raise_error
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'given a cutscene path' do
|
23
|
-
it "fails if the key doesn't exist" do
|
24
|
-
FakeFS do
|
25
|
-
cutscene_reference = 'FakeFile.html'
|
26
|
-
plist = {
|
27
|
-
'Name' => 'Test Page',
|
28
|
-
}.to_plist
|
29
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
30
|
-
|
31
|
-
expect { cutscene_page_manifest_linter.lint }.to raise_error(SystemExit)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
it "fails if that file doesn't exist" do
|
36
|
-
FakeFS do
|
37
|
-
cutscene_reference = 'FakeFile.html'
|
38
|
-
plist = {
|
39
|
-
'Name' => 'Test Page',
|
40
|
-
'CutsceneReference' => cutscene_reference
|
41
|
-
}.to_plist
|
42
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
43
|
-
|
44
|
-
expect { cutscene_page_manifest_linter.lint }.to raise_error(SystemExit)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'fails with a non-HTML file' do
|
49
|
-
FakeFS do
|
50
|
-
cutscene_reference = 'RealFile.xml'
|
51
|
-
plist = {
|
52
|
-
'Name' => 'Test Page',
|
53
|
-
'CutsceneReference' => cutscene_reference
|
54
|
-
}.to_plist
|
55
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
56
|
-
File.open(cutscene_reference, 'w')
|
57
|
-
|
58
|
-
expect { cutscene_page_manifest_linter.lint }.to raise_error(SystemExit)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
describe RootManifestLinter do
|
5
|
-
include FakeFS::SpecHelpers
|
6
|
-
let(:manifest_linter) { ManifestLinter.new }
|
7
|
-
|
8
|
-
it 'fails if a Manifest.plist file does not exist' do
|
9
|
-
expect { manifest_linter.lint }.to raise_error(SystemExit)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'fails if the Manifest.plist file does not contain a Name value' do
|
13
|
-
FakeFS do
|
14
|
-
plist = {}.to_plist
|
15
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
16
|
-
|
17
|
-
expect { manifest_linter.lint }.to raise_error(SystemExit)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'succeeds if the Manifest.plist file is well-formed' do
|
22
|
-
FakeFS do
|
23
|
-
plist = { 'Name' => 'My Test Name' }.to_plist
|
24
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
25
|
-
|
26
|
-
expect { manifest_linter.lint }.to_not raise_error
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'extracts Manfiest.plist contents from pwd' do
|
31
|
-
FakeFS do
|
32
|
-
contents = { 'key' => 'value' }
|
33
|
-
File.open('Manifest.plist', 'w') { |f| f.write(contents.to_plist) }
|
34
|
-
|
35
|
-
expect(manifest_linter.manifest_plist_contents).to eq(contents)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe 'key-value checking' do
|
40
|
-
before do
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'checks for non-defined keys in manifest' do
|
44
|
-
FakeFS do
|
45
|
-
plist = {}.to_plist
|
46
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
47
|
-
|
48
|
-
expect(manifest_linter.value_defined_in_manifest?('key')).to be_falsy
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'checks for nil keys in manifest' do
|
53
|
-
FakeFS do
|
54
|
-
plist = { 'key' => nil }.to_plist
|
55
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
56
|
-
|
57
|
-
expect(manifest_linter.value_defined_in_manifest?('key')).to be_falsy
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'checks for empty keys in manifest' do
|
62
|
-
FakeFS do
|
63
|
-
plist = { 'key' => 'value' }.to_plist
|
64
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
65
|
-
|
66
|
-
expect(manifest_linter.value_defined_in_manifest?('key')).to be_truthy
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
describe RootManifestLinter do
|
5
|
-
include FakeFS::SpecHelpers
|
6
|
-
let(:root_manifest_linter) { RootManifestLinter.new(chapter_linter) }
|
7
|
-
let(:chapter_linter) { double(ChapterLinter) }
|
8
|
-
|
9
|
-
it 'fails if Chapters directory does not exist' do
|
10
|
-
expect { root_manifest_linter.lint }.to raise_error(SystemExit)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'fails if manfiest does not include Chapters' do
|
14
|
-
FakeFS do
|
15
|
-
Dir.mkdir('Chapters')
|
16
|
-
plist = { 'Name' => 'Test' }.to_plist
|
17
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
18
|
-
|
19
|
-
expect { root_manifest_linter.lint }.to raise_error(SystemExit)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'calls through to lint each chapter' do
|
24
|
-
FakeFS do
|
25
|
-
plist = { 'Chapters' => ['test_chapter_name'], 'Name' => 'Test' }.to_plist
|
26
|
-
File.open('Manifest.plist', 'w') { |f| f.write(plist) }
|
27
|
-
Dir.mkdir('Chapters')
|
28
|
-
|
29
|
-
expect(chapter_linter).to receive(:lint).with('test_chapter_name')
|
30
|
-
|
31
|
-
expect { root_manifest_linter.lint }.to_not raise_error
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
describe ChapterCollator do
|
5
|
-
include FakeFS::SpecHelpers
|
6
|
-
let(:collator) { ChapterCollator.new(page_writer, test_ui) }
|
7
|
-
let(:page_writer) { double(PageWriter) }
|
8
|
-
let(:test_ui) { Cork::Board.new(silent: true) }
|
9
|
-
let(:parsed_chapter) { PageParser.new.parse_chapter_pages(test_chapter_contents) }
|
10
|
-
let(:chapter_name) { 'test_chapter' }
|
11
|
-
|
12
|
-
before do
|
13
|
-
allow(page_writer).to receive(:write_page!)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'creates a chapter manifest' do
|
17
|
-
collator.collate!(chapter_name, parsed_chapter, [])
|
18
|
-
|
19
|
-
expect(File.exist?("#{chapter_name}.playgroundchapter/#{ManifestFileName}")).to be_truthy
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'the chapter manifest' do
|
23
|
-
before do
|
24
|
-
collator.collate!(chapter_name, parsed_chapter, ['UIKit'])
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'has the correct name' do
|
28
|
-
expect(get_manifest("#{chapter_name}.playgroundchapter/#{ManifestFileName}")['Name']).to eq(chapter_name)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'has the correct pages' do
|
32
|
-
expect(get_manifest("#{chapter_name}.playgroundchapter/#{ManifestFileName}")['Pages']).to eq([
|
33
|
-
'Page 1.playgroundpage',
|
34
|
-
'Page 2.playgroundpage',
|
35
|
-
])
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'calls the page_writer for each page' do
|
40
|
-
expect(page_writer).to receive(:write_page!).with("Page 1", "Page 1.playgroundpage", [], "str = \"Yo, it's page 1.\"\nsharedFunc()")
|
41
|
-
expect(page_writer).to receive(:write_page!).with("Page 2", "Page 2.playgroundpage", [], "str = \"Page 2 awww yeah.\"\nsharedFunc()")
|
42
|
-
|
43
|
-
collator.collate!(chapter_name, parsed_chapter, [])
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'does not explode if a Source directory already exists' do
|
47
|
-
expect{ collator.collate!(chapter_name, parsed_chapter, []) }.to_not raise_error
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'having colated' do
|
51
|
-
before do
|
52
|
-
collator.collate!(chapter_name, parsed_chapter, [])
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'creates a Source directory if one does not exist' do
|
56
|
-
expect(Dir.exist?("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}")).to be_truthy
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'Sources folder' do
|
60
|
-
it 'has a Preamble.swift file' do
|
61
|
-
expect(File.exist?("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}/#{PreambleFileName}")).to be_truthy
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'has the correct preamble contents' do
|
65
|
-
expect(File.read("#{chapter_name}.playgroundchapter/#{SharedSourcesDirectoryName}/#{PreambleFileName}")).to eq("import UIKit\n\nvar str = \"Hello, playground\"\n\nfunc sharedFunc() {\n print(\"This should be accessible to all pages.\")\n}")
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
module Playgroundbook
|
4
|
-
describe ContentsManifestGenerator do
|
5
|
-
include FakeFS::SpecHelpers
|
6
|
-
let(:generator) { ContentsManifestGenerator.new(test_ui) }
|
7
|
-
let(:test_ui) { Cork::Board.new(silent: true) }
|
8
|
-
|
9
|
-
it 'creates the manifest file' do
|
10
|
-
generator.generate!(test_book_metadata)
|
11
|
-
|
12
|
-
expect(File.exist?('Manifest.plist')).to be_truthy
|
13
|
-
end
|
14
|
-
|
15
|
-
describe 'the manifest file' do
|
16
|
-
before do
|
17
|
-
generator.generate!(test_book_metadata)
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'has a book name' do
|
21
|
-
expect(get_manifest['Name']).to eq('Testing Book')
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'has an identifier' do
|
25
|
-
expect(get_manifest['ContentIdentifier']).to eq('com.ashfurrow.testing')
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'has a deployment target' do
|
29
|
-
expect(get_manifest['DeploymentTarget']).to eq('ios10.0')
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'has chapters specified' do
|
33
|
-
expect(get_manifest['Chapters']).to eq(['test_chapter.playgroundchapter'])
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'has a ImageReference' do
|
37
|
-
expect(get_manifest['ImageReference']).to eq('file.jpeg')
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|