rocx 0.5.7 → 0.5.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.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +11 -7
  4. data/Rakefile +3 -8
  5. data/lib/rocx/elements/base_container.rb +8 -4
  6. data/lib/rocx/elements/paragraph.rb +4 -4
  7. data/lib/rocx/elements/run.rb +40 -1
  8. data/lib/rocx/properties.rb +5 -0
  9. data/lib/rocx/properties/alignment.rb +4 -19
  10. data/lib/rocx/properties/attribute_builder.rb +8 -2
  11. data/lib/rocx/properties/auto_adjust_right_indent.rb +3 -9
  12. data/lib/rocx/properties/auto_space_de.rb +1 -8
  13. data/lib/rocx/properties/auto_space_dn.rb +1 -8
  14. data/lib/rocx/properties/base_property.rb +20 -11
  15. data/lib/rocx/properties/bold.rb +1 -4
  16. data/lib/rocx/properties/boolean_property.rb +1 -1
  17. data/lib/rocx/properties/border.rb +5 -13
  18. data/lib/rocx/properties/borders.rb +2 -8
  19. data/lib/rocx/properties/caps.rb +6 -0
  20. data/lib/rocx/properties/character_spacing.rb +8 -0
  21. data/lib/rocx/properties/color.rb +13 -0
  22. data/lib/rocx/properties/complex_bold.rb +8 -0
  23. data/lib/rocx/properties/complex_font_size.rb +8 -0
  24. data/lib/rocx/properties/complex_italics.rb +8 -0
  25. data/lib/rocx/properties/complex_property.rb +16 -0
  26. data/lib/rocx/properties/complex_script_formatting.rb +8 -0
  27. data/lib/rocx/properties/compress_punctuation.rb +1 -4
  28. data/lib/rocx/properties/conditional_formatting.rb +17 -56
  29. data/lib/rocx/properties/div_id.rb +1 -18
  30. data/lib/rocx/properties/double_strikethrough.rb +8 -0
  31. data/lib/rocx/properties/east_asian_layout.rb +22 -0
  32. data/lib/rocx/properties/effect.rb +11 -0
  33. data/lib/rocx/properties/emboss.rb +6 -0
  34. data/lib/rocx/properties/emphasis.rb +12 -0
  35. data/lib/rocx/properties/expansion.rb +18 -0
  36. data/lib/rocx/properties/font.rb +34 -0
  37. data/lib/rocx/properties/font_size.rb +8 -0
  38. data/lib/rocx/properties/frame.rb +5 -16
  39. data/lib/rocx/properties/hidden_text.rb +8 -0
  40. data/lib/rocx/properties/highlight.rb +11 -0
  41. data/lib/rocx/properties/imprint.rb +6 -0
  42. data/lib/rocx/properties/indentation.rb +11 -24
  43. data/lib/rocx/properties/integer_property.rb +15 -0
  44. data/lib/rocx/properties/italics.rb +1 -4
  45. data/lib/rocx/properties/kerning.rb +8 -0
  46. data/lib/rocx/properties/language.rb +20 -0
  47. data/lib/rocx/properties/manual_width.rb +12 -0
  48. data/lib/rocx/properties/math.rb +8 -0
  49. data/lib/rocx/properties/no_proof.rb +6 -0
  50. data/lib/rocx/properties/numbering.rb +4 -10
  51. data/lib/rocx/properties/on_off_property.rb +1 -1
  52. data/lib/rocx/properties/outline.rb +6 -0
  53. data/lib/rocx/properties/outline_level.rb +2 -17
  54. data/lib/rocx/properties/overflow_punctuation.rb +1 -8
  55. data/lib/rocx/properties/paragraph_style.rb +8 -0
  56. data/lib/rocx/properties/position.rb +6 -0
  57. data/lib/rocx/properties/positive_integer_property.rb +15 -0
  58. data/lib/rocx/properties/right_to_left.rb +8 -0
  59. data/lib/rocx/properties/run_style.rb +8 -0
  60. data/lib/rocx/properties/shading.rb +9 -20
  61. data/lib/rocx/properties/shadow.rb +6 -0
  62. data/lib/rocx/properties/small_caps.rb +6 -0
  63. data/lib/rocx/properties/spacing.rb +4 -17
  64. data/lib/rocx/properties/spec_vanish.rb +6 -0
  65. data/lib/rocx/properties/strikethrough.rb +8 -0
  66. data/lib/rocx/properties/style.rb +15 -0
  67. data/lib/rocx/properties/tab.rb +1 -9
  68. data/lib/rocx/properties/tabs.rb +1 -9
  69. data/lib/rocx/properties/text_alignment.rb +11 -0
  70. data/lib/rocx/properties/text_direction.rb +1 -5
  71. data/lib/rocx/properties/textbox_tight_wrap.rb +1 -5
  72. data/lib/rocx/properties/toggle_property.rb +1 -1
  73. data/lib/rocx/properties/underline.rb +24 -0
  74. data/lib/rocx/properties/value_property.rb +29 -0
  75. data/lib/rocx/properties/vertical_alignment.rb +3 -10
  76. data/lib/rocx/properties/web_hidden.rb +6 -0
  77. data/lib/rocx/version.rb +1 -1
  78. data/rocx.gemspec +1 -2
  79. data/spec/elements/break_spec.rb +47 -0
  80. data/spec/elements/paragraph_spec.rb +31 -0
  81. data/spec/elements/run_spec.rb +15 -0
  82. data/spec/elements/symbol_spec.rb +24 -0
  83. data/spec/elements/text_spec.rb +23 -0
  84. data/spec/package_spec.rb +48 -0
  85. data/spec/parts/content_types_spec.rb +32 -0
  86. data/spec/parts/document_spec.rb +32 -0
  87. data/spec/parts/global_rels_spec.rb +13 -0
  88. data/spec/parts/rels_spec.rb +42 -0
  89. data/spec/parts/settings_spec.rb +13 -0
  90. data/spec/parts/styles_spec.rb +27 -0
  91. data/spec/properties/alignment_spec.rb +58 -0
  92. data/spec/properties/auto_adjust_right_indent_spec.rb +23 -0
  93. data/spec/properties/auto_space_de_spec.rb +23 -0
  94. data/spec/properties/auto_space_dn_spec.rb +23 -0
  95. data/spec/properties/bidi_spec.rb +23 -0
  96. data/spec/properties/bold_spec.rb +23 -0
  97. data/spec/properties/border_spec.rb +156 -0
  98. data/spec/properties/borders_spec.rb +66 -0
  99. data/spec/properties/caps_spec.rb +23 -0
  100. data/spec/properties/character_spacing_spec.rb +26 -0
  101. data/spec/properties/color_spec.rb +49 -0
  102. data/spec/properties/complex_bold_spec.rb +23 -0
  103. data/spec/properties/complex_font_size_spec.rb +24 -0
  104. data/spec/properties/complex_italics_spec.rb +23 -0
  105. data/spec/properties/complex_script_formatting_spec.rb +23 -0
  106. data/spec/properties/compress_punctuation_spec.rb +23 -0
  107. data/spec/properties/conditional_formatting_spec.rb +160 -0
  108. data/spec/properties/contextual_spacing_spec.rb +23 -0
  109. data/spec/properties/div_id_spec.rb +17 -0
  110. data/spec/properties/double_strikethrough_spec.rb +23 -0
  111. data/spec/properties/east_asian_layout_spec.rb +115 -0
  112. data/spec/properties/effect_spec.rb +43 -0
  113. data/spec/properties/emboss_spec.rb +23 -0
  114. data/spec/properties/emphasis_spec.rb +37 -0
  115. data/spec/properties/expansion_spec.rb +34 -0
  116. data/spec/properties/font_size_spec.rb +24 -0
  117. data/spec/properties/font_spec.rb +273 -0
  118. data/spec/properties/frame_spec.rb +338 -0
  119. data/spec/properties/hidden_text_spec.rb +23 -0
  120. data/spec/properties/highlight_spec.rb +97 -0
  121. data/spec/properties/imprint_spec.rb +23 -0
  122. data/spec/properties/indentation_spec.rb +176 -0
  123. data/spec/properties/italics_spec.rb +23 -0
  124. data/spec/properties/keep_lines_spec.rb +23 -0
  125. data/spec/properties/keep_next_spec.rb +23 -0
  126. data/spec/properties/kerning_spec.rb +24 -0
  127. data/spec/properties/kinsoku_spec.rb +23 -0
  128. data/spec/properties/language_spec.rb +29 -0
  129. data/spec/properties/manual_width_spec.rb +55 -0
  130. data/spec/properties/math_spec.rb +23 -0
  131. data/spec/properties/mirror_indent_spec.rb +23 -0
  132. data/spec/properties/no_proof_spec.rb +23 -0
  133. data/spec/properties/numbering_spec.rb +46 -0
  134. data/spec/properties/outline_level_spec.rb +20 -0
  135. data/spec/properties/outline_spec.rb +23 -0
  136. data/spec/properties/overflow_punctuation_spec.rb +23 -0
  137. data/spec/properties/page_break_before_spec.rb +23 -0
  138. data/spec/properties/paragraph_style_spec.rb +12 -0
  139. data/spec/properties/position_spec.rb +26 -0
  140. data/spec/properties/right_to_left_spec.rb +23 -0
  141. data/spec/properties/run_style_spec.rb +12 -0
  142. data/spec/properties/shading_spec.rb +135 -0
  143. data/spec/properties/shadow_property_spec.rb +23 -0
  144. data/spec/properties/small_caps_spec.rb +22 -0
  145. data/spec/properties/snap_to_grid_spec.rb +23 -0
  146. data/spec/properties/spacing_spec.rb +159 -0
  147. data/spec/properties/spec_vanish_spec.rb +23 -0
  148. data/spec/properties/strikethrough_spec.rb +23 -0
  149. data/spec/properties/supress_auto_hyphens_spec.rb +23 -0
  150. data/spec/properties/supress_line_numbers_spec.rb +23 -0
  151. data/spec/properties/supress_overlap_spec.rb +23 -0
  152. data/spec/properties/tab_spec.rb +45 -0
  153. data/spec/properties/tabs_spec.rb +39 -0
  154. data/spec/properties/text_alignment_spec.rb +33 -0
  155. data/spec/properties/text_direction_spec.rb +42 -0
  156. data/spec/properties/textbox_tight_wrap_spec.rb +33 -0
  157. data/spec/properties/underline_spec.rb +161 -0
  158. data/spec/properties/vertical_alignment_spec.rb +26 -0
  159. data/spec/properties/web_hidden_spec.rb +23 -0
  160. data/spec/properties/widow_control_spec.rb +23 -0
  161. data/spec/properties/word_wrap_spec.rb +23 -0
  162. data/spec/spec_helper.rb +14 -0
  163. data/spec/style_spec.rb +34 -0
  164. data/{test → spec/support}/data/elements/break_element.xml +0 -0
  165. data/{test → spec/support}/data/elements/break_with_attributes_element.xml +0 -0
  166. data/{test → spec/support}/data/elements/paragraph_element.xml +0 -0
  167. data/{test → spec/support}/data/elements/paragraph_with_runs_element.xml +1 -1
  168. data/{test → spec/support}/data/elements/run_element.xml +0 -0
  169. data/{test → spec/support}/data/elements/symbol_element.xml +0 -0
  170. data/{test → spec/support}/data/elements/text_element.xml +0 -0
  171. data/{test → spec/support}/data/parts/content_types_part.xml +0 -0
  172. data/{test → spec/support}/data/parts/document_with_children_part.xml +0 -0
  173. data/{test → spec/support}/data/parts/empty_document_part.xml +0 -0
  174. data/{test → spec/support}/data/parts/global_rels_part.xml +0 -0
  175. data/{test → spec/support}/data/parts/rels_part.xml +0 -0
  176. data/{test → spec/support}/data/parts/settings_part.xml +0 -0
  177. data/{test → spec/support}/data/parts/styles_part.xml +0 -0
  178. data/{test → spec/support}/data/parts/styles_with_custom_style_part.xml +0 -0
  179. data/{test → spec/support}/data/styles/character_styles.xml +0 -0
  180. data/{test → spec/support}/data/styles/paragraph_styles.xml +0 -0
  181. data/spec/support/element_test_macros.rb +33 -0
  182. data/spec/support/part_test_macros.rb +27 -0
  183. data/spec/support/property_test_macros.rb +116 -0
  184. data/spec/support/style_test_macros.rb +33 -0
  185. data/spec/support/value_property_test_macros.rb +69 -0
  186. metadata +151 -133
  187. data/lib/rocx/elements/style.rb +0 -19
  188. data/test/elements/break_test.rb +0 -54
  189. data/test/elements/paragraph_test.rb +0 -37
  190. data/test/elements/run_test.rb +0 -18
  191. data/test/elements/symbol_test.rb +0 -23
  192. data/test/elements/text_test.rb +0 -26
  193. data/test/package_test.rb +0 -48
  194. data/test/parts/content_types_test.rb +0 -37
  195. data/test/parts/document_test.rb +0 -31
  196. data/test/parts/global_rels_test.rb +0 -13
  197. data/test/parts/rels_test.rb +0 -48
  198. data/test/parts/settings_test.rb +0 -13
  199. data/test/parts/styles_test.rb +0 -29
  200. data/test/properties/auto_adjust_right_indent_test.rb +0 -50
  201. data/test/properties/auto_space_de_test.rb +0 -50
  202. data/test/properties/auto_space_dn_test.rb +0 -50
  203. data/test/properties/bidi_test.rb +0 -50
  204. data/test/properties/bold_test.rb +0 -50
  205. data/test/properties/border_test.rb +0 -216
  206. data/test/properties/borders_test.rb +0 -95
  207. data/test/properties/compress_punctuation_test.rb +0 -50
  208. data/test/properties/conditional_formatting_test.rb +0 -46
  209. data/test/properties/contextual_spacing_test.rb +0 -50
  210. data/test/properties/div_id_test.rb +0 -38
  211. data/test/properties/frame_test.rb +0 -497
  212. data/test/properties/italics_test.rb +0 -50
  213. data/test/properties/keep_lines_test.rb +0 -50
  214. data/test/properties/keep_next_test.rb +0 -50
  215. data/test/properties/kinsoku_test.rb +0 -50
  216. data/test/properties/mirror_indent_test.rb +0 -50
  217. data/test/properties/numbering_test.rb +0 -86
  218. data/test/properties/outline_level_test.rb +0 -46
  219. data/test/properties/overflow_punctuation_test.rb +0 -50
  220. data/test/properties/page_break_before_test.rb +0 -50
  221. data/test/properties/shading_test.rb +0 -225
  222. data/test/properties/snap_to_grid_test.rb +0 -50
  223. data/test/properties/spacing_test.rb +0 -248
  224. data/test/properties/style_test.rb +0 -30
  225. data/test/properties/supress_auto_hyphens_test.rb +0 -50
  226. data/test/properties/supress_line_numbers_test.rb +0 -50
  227. data/test/properties/supress_overlap_test.rb +0 -50
  228. data/test/properties/tab_test.rb +0 -63
  229. data/test/properties/tabs_test.rb +0 -54
  230. data/test/properties/text_direction_test.rb +0 -100
  231. data/test/properties/textbox_tight_wrap_test.rb +0 -88
  232. data/test/properties/vertical_alignment_test.rb +0 -88
  233. data/test/properties/widow_control_test.rb +0 -50
  234. data/test/properties/word_wrap_test.rb +0 -50
  235. data/test/style_test.rb +0 -54
  236. data/test/test_helper.rb +0 -52
@@ -1,6 +1,6 @@
1
1
  module Rocx
2
2
  module Properties
3
- class ToggleProperty < BaseProperty
3
+ class ToggleProperty < ValueProperty
4
4
 
5
5
  def ok_values
6
6
  [nil, true, false]
@@ -0,0 +1,24 @@
1
+ module Rocx
2
+ module Properties
3
+ class Underline < ComplexProperty
4
+ include AttributeBuilder
5
+
6
+ tag :u
7
+
8
+ VALID_UNDERLINE_TYPES = %i(dash dashDotDotHeavy dashDotHeavy dashedHeavy dashLong dashLongHeavy dotDash dotDotDash dotted dottedHeavy double none single thick wave wavyDouble wavyHeavy words)
9
+
10
+ attribute :color, expects: :hex_color
11
+ attribute :theme_color, expects: :valid_theme_color
12
+ attribute :theme_shade, expects: :hex_digit
13
+ attribute :theme_tint, expects: :hex_digit
14
+ attribute :type, expects: :valid_underline_type, displays_as: :val
15
+
16
+ private
17
+
18
+ def valid_underline_type(value)
19
+ valid_in? value, VALID_UNDERLINE_TYPES
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ module Rocx
2
+ module Properties
3
+ class ValueProperty < BaseProperty
4
+ attr_reader :value
5
+
6
+ def initialize(value)
7
+ @value = value
8
+ raise ArgumentError, invalid_message unless valid?
9
+ end
10
+
11
+ def valid?
12
+ ok_values.member? value
13
+ end
14
+
15
+ def invalid_message
16
+ "Invalid value for #{name}; acceptable values are #{ok_values.join(", ")}"
17
+ end
18
+
19
+ def render?
20
+ !value.nil?
21
+ end
22
+
23
+ def to_xml(xml)
24
+ xml["w"].public_send(tag, "w:val" => value)
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -1,17 +1,10 @@
1
1
  module Rocx
2
2
  module Properties
3
- class VerticalAlignment < BaseProperty
3
+ class VerticalAlignment < ValueProperty
4
+ tag :vertAlign
4
5
 
5
6
  def ok_values
6
- %i(auto baseline bottom center top)
7
- end
8
-
9
- def to_xml(xml)
10
- xml["w"].public_send(tag, "w:val" => value)
11
- end
12
-
13
- def tag
14
- :textAlignment
7
+ %i(baseline subscript superscript)
15
8
  end
16
9
 
17
10
  end
@@ -0,0 +1,6 @@
1
+ module Rocx
2
+ module Properties
3
+ class WebHidden < ToggleProperty
4
+ end
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Rocx
2
- VERSION = "0.5.7"
2
+ VERSION = "0.5.8"
3
3
  end
@@ -18,10 +18,9 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency "open_xml_package"
19
19
 
20
20
  gem.add_development_dependency "pry"
21
- gem.add_development_dependency "turn"
21
+ gem.add_development_dependency "rspec"
22
22
  gem.add_development_dependency "rake"
23
23
  gem.add_development_dependency "rr"
24
- gem.add_development_dependency "shoulda-context"
25
24
  gem.add_development_dependency "simplecov"
26
25
  gem.add_development_dependency "timecop"
27
26
 
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Elements::Break do
4
+ include ElementTestMacros
5
+
6
+ context "when creating a new break" do
7
+ it "should not accept invalid values for the clear property" do
8
+ expect { described_class.new(clear: :obviouslyInvalid) }.to raise_error(ArgumentError)
9
+ end
10
+
11
+ it "should not accept invalid values for the break_type property" do
12
+ expect { described_class.new(break_type: :invalidType) }.to raise_error(ArgumentError)
13
+ end
14
+ end
15
+
16
+ context "after initial creation" do
17
+ before(:each) do
18
+ @node = described_class.new
19
+ end
20
+
21
+ it "should still not accept invalid values for the clear property" do
22
+ node = described_class.new
23
+ expect { node.clear = :invalid }.to raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should still not accept invalid values for the break_type property" do
27
+ node = described_class.new
28
+ expect { node.break_type = :weird }.to raise_error(ArgumentError)
29
+ end
30
+ end
31
+
32
+ context "when both properties are nil" do
33
+ before(:each) do
34
+ @node = described_class.new
35
+ end
36
+
37
+ it_should_output_correct_xml
38
+ end
39
+
40
+ context "when either of the properties isn't nil" do
41
+ before(:each) do
42
+ @node = described_class.new(break_type: :page, clear: :left)
43
+ end
44
+
45
+ it_should_output_correct_xml node_xml: "break_with_attributes"
46
+ end
47
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Elements::Paragraph do
4
+ include ElementTestMacros
5
+
6
+ context "with runs" do
7
+ before(:each) do
8
+ @node = described_class.new
9
+ node.indentation.start = 720
10
+ node.indentation.end = -1440
11
+ run = Rocx::Elements::Run.new
12
+ run << Rocx::Elements::Text.new("Hey Run 1")
13
+ node << run
14
+ run = Rocx::Elements::Run.new
15
+ run << Rocx::Elements::Text.new("Hey Run 2")
16
+ node << run
17
+ end
18
+
19
+ it_should_output_correct_xml node_xml: "paragraph_with_runs"
20
+ end
21
+
22
+ context "without runs" do
23
+ before(:each) do
24
+ @node = described_class.new
25
+ node.alignment = :center
26
+ end
27
+
28
+ it_should_output_correct_xml
29
+ end
30
+
31
+ end
@@ -0,0 +1,15 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Elements::Run do
4
+ include ElementTestMacros
5
+
6
+ context "after creation" do
7
+ before(:each) do
8
+ @node = described_class.new
9
+ node.italics = true
10
+ end
11
+
12
+ it_should_output_correct_xml
13
+ end
14
+
15
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Elements::Symbol do
4
+ include ElementTestMacros
5
+
6
+ context "always" do
7
+ before(:each) do
8
+ @node = described_class.new
9
+ end
10
+
11
+ it "should raise an exception if the char property isn't a 4-digit hex" do
12
+ expect { node.char = "not valid" }.to raise_error(ArgumentError)
13
+ expect { node.char = "43fd" }.to_not raise_error
14
+ end
15
+ end
16
+
17
+ context "with valid attributes" do
18
+ before(:each) do
19
+ @node = described_class.new(char: "43fd", font: "Wingdings")
20
+ end
21
+
22
+ it_should_output_correct_xml
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Elements::Text do
4
+ include ElementTestMacros
5
+
6
+ context "for the space attribute" do
7
+ it "shoudl require space to be :preserve or nil" do
8
+ expect { described_class.new("Banana", space: :preserve) }.to_not raise_error
9
+
10
+ expect { described_class.new("Banana") }.to_not raise_error
11
+
12
+ expect { described_class.new("Banana", space: :the_final_frontier) }.to raise_error(ArgumentError)
13
+ end
14
+ end
15
+
16
+ context "with valid attributes" do
17
+ before(:each) do
18
+ @node = described_class.new("Banana", space: :preserve)
19
+ end
20
+
21
+ it_should_output_correct_xml
22
+ end
23
+ end
@@ -0,0 +1,48 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Package do
4
+ attr_reader :package
5
+
6
+ context "when starting a new package" do
7
+ before(:each) do
8
+ @package = described_class.new
9
+ end
10
+
11
+ it "should create the content types part" do
12
+ expect(package.content_types).to be_instance_of(Rocx::Parts::ContentTypes)
13
+ end
14
+
15
+ it "should create the document part" do
16
+ expect(package.document).to be_instance_of(Rocx::Parts::Document)
17
+ end
18
+
19
+ it "should create the global rels part" do
20
+ expect(package.global_rels).to be_instance_of(Rocx::Parts::GlobalRels)
21
+ end
22
+
23
+ it "should create the _rels part" do
24
+ expect(package.rels).to be_instance_of(Rocx::Parts::Rels)
25
+ end
26
+
27
+ it "should create the settings part" do
28
+ expect(package.settings).to be_instance_of(Rocx::Parts::Settings)
29
+ end
30
+
31
+ it "should create the styles part" do
32
+ expect(package.styles).to be_instance_of(Rocx::Parts::Styles)
33
+ end
34
+ end
35
+
36
+ context "when saving a package" do
37
+ before(:each) do
38
+ @package = described_class.new
39
+ end
40
+
41
+ it "should write to a OpenXmlPackage" do
42
+ path = "some_file.docx"
43
+ mock.instance_of(OpenXmlPackage).write_to(path)
44
+ package.save(path)
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Parts::ContentTypes do
4
+ include PartTestMacros
5
+
6
+ context "when first creating the content types" do
7
+ before(:each) do
8
+ @doc = described_class.new
9
+ end
10
+
11
+ it "should install the preset defaults" do
12
+ expect(doc.defaults.length).to eq(3)
13
+ end
14
+
15
+ it "should install the present overrides" do
16
+ expect(doc.overrides.length).to eq(2)
17
+ end
18
+ end
19
+
20
+ context "after creating the content types" do
21
+ before(:each) do
22
+ @doc = described_class.new
23
+ end
24
+
25
+ it "should be able to add additional defaults" do
26
+ doc.default "coolml", "text/coolml"
27
+ expect(doc.defaults).to include({"Extension" => "coolml", "ContentType" => "text/coolml"})
28
+ end
29
+
30
+ it_should_output_correct_xml
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Parts::Document do
4
+ include PartTestMacros
5
+
6
+ context "with child elements" do
7
+ before(:each) do
8
+ @doc = described_class.new
9
+ paragraph = Rocx::Elements::Paragraph.new
10
+
11
+ first_run = Rocx::Elements::Run.new
12
+ first_run << Rocx::Elements::Text.new("This is just a test run.")
13
+ paragraph << first_run
14
+
15
+ second_run = Rocx::Elements::Run.new
16
+ second_run << Rocx::Elements::Text.new("But this isn't!")
17
+ paragraph << second_run
18
+
19
+ doc << paragraph
20
+ end
21
+
22
+ it_should_output_correct_xml part: "document_with_children"
23
+ end
24
+
25
+ context "with no elements" do
26
+ before(:each) do
27
+ @doc = described_class.new
28
+ end
29
+
30
+ it_should_output_correct_xml part: "empty_document"
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Parts::GlobalRels do
4
+ include PartTestMacros
5
+
6
+ context "always" do
7
+ before(:each) do
8
+ @doc = described_class.new
9
+ end
10
+
11
+ it_should_output_correct_xml
12
+ end
13
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Parts::Rels do
4
+ include PartTestMacros
5
+
6
+ context "when initially setting up the rels" do
7
+ before(:each) do
8
+ @doc = described_class.new
9
+ end
10
+
11
+ it "should automatically create the relationship to the settings file" do
12
+ expected_relation = { "Type" => "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",
13
+ "Target" => "/word/settings.xml",
14
+ "Id" => "R1efaa81aac7a4831" }
15
+ expect(doc.relationships).to include(expected_relation)
16
+ end
17
+
18
+ it "should automatically create the relationship to the styles file" do
19
+ expected_relation = { "Type" => "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",
20
+ "Target" => "/word/styles.xml",
21
+ "Id" => "Rf06246a95c004384" }
22
+ expect(doc.relationships).to include(expected_relation)
23
+ end
24
+ end
25
+
26
+ context "after setting up the rels" do
27
+ before(:each) do
28
+ @doc = described_class.new
29
+ end
30
+
31
+ it "should be possible to add additional relationships" do
32
+ new_relationship = { "Type" => "nope.com",
33
+ "Target" => "/cool/cool.xml",
34
+ "Id" => "1234567890" }
35
+ doc.relationship *new_relationship.values
36
+ expect(doc.relationships).to include(new_relationship)
37
+ end
38
+
39
+ it_should_output_correct_xml
40
+ end
41
+
42
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe Rocx::Parts::Settings do
4
+ include PartTestMacros
5
+
6
+ context "always" do
7
+ before(:each) do
8
+ @doc = described_class.new
9
+ end
10
+
11
+ it_should_output_correct_xml
12
+ end
13
+ end