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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +11 -7
- data/Rakefile +3 -8
- data/lib/rocx/elements/base_container.rb +8 -4
- data/lib/rocx/elements/paragraph.rb +4 -4
- data/lib/rocx/elements/run.rb +40 -1
- data/lib/rocx/properties.rb +5 -0
- data/lib/rocx/properties/alignment.rb +4 -19
- data/lib/rocx/properties/attribute_builder.rb +8 -2
- data/lib/rocx/properties/auto_adjust_right_indent.rb +3 -9
- data/lib/rocx/properties/auto_space_de.rb +1 -8
- data/lib/rocx/properties/auto_space_dn.rb +1 -8
- data/lib/rocx/properties/base_property.rb +20 -11
- data/lib/rocx/properties/bold.rb +1 -4
- data/lib/rocx/properties/boolean_property.rb +1 -1
- data/lib/rocx/properties/border.rb +5 -13
- data/lib/rocx/properties/borders.rb +2 -8
- data/lib/rocx/properties/caps.rb +6 -0
- data/lib/rocx/properties/character_spacing.rb +8 -0
- data/lib/rocx/properties/color.rb +13 -0
- data/lib/rocx/properties/complex_bold.rb +8 -0
- data/lib/rocx/properties/complex_font_size.rb +8 -0
- data/lib/rocx/properties/complex_italics.rb +8 -0
- data/lib/rocx/properties/complex_property.rb +16 -0
- data/lib/rocx/properties/complex_script_formatting.rb +8 -0
- data/lib/rocx/properties/compress_punctuation.rb +1 -4
- data/lib/rocx/properties/conditional_formatting.rb +17 -56
- data/lib/rocx/properties/div_id.rb +1 -18
- data/lib/rocx/properties/double_strikethrough.rb +8 -0
- data/lib/rocx/properties/east_asian_layout.rb +22 -0
- data/lib/rocx/properties/effect.rb +11 -0
- data/lib/rocx/properties/emboss.rb +6 -0
- data/lib/rocx/properties/emphasis.rb +12 -0
- data/lib/rocx/properties/expansion.rb +18 -0
- data/lib/rocx/properties/font.rb +34 -0
- data/lib/rocx/properties/font_size.rb +8 -0
- data/lib/rocx/properties/frame.rb +5 -16
- data/lib/rocx/properties/hidden_text.rb +8 -0
- data/lib/rocx/properties/highlight.rb +11 -0
- data/lib/rocx/properties/imprint.rb +6 -0
- data/lib/rocx/properties/indentation.rb +11 -24
- data/lib/rocx/properties/integer_property.rb +15 -0
- data/lib/rocx/properties/italics.rb +1 -4
- data/lib/rocx/properties/kerning.rb +8 -0
- data/lib/rocx/properties/language.rb +20 -0
- data/lib/rocx/properties/manual_width.rb +12 -0
- data/lib/rocx/properties/math.rb +8 -0
- data/lib/rocx/properties/no_proof.rb +6 -0
- data/lib/rocx/properties/numbering.rb +4 -10
- data/lib/rocx/properties/on_off_property.rb +1 -1
- data/lib/rocx/properties/outline.rb +6 -0
- data/lib/rocx/properties/outline_level.rb +2 -17
- data/lib/rocx/properties/overflow_punctuation.rb +1 -8
- data/lib/rocx/properties/paragraph_style.rb +8 -0
- data/lib/rocx/properties/position.rb +6 -0
- data/lib/rocx/properties/positive_integer_property.rb +15 -0
- data/lib/rocx/properties/right_to_left.rb +8 -0
- data/lib/rocx/properties/run_style.rb +8 -0
- data/lib/rocx/properties/shading.rb +9 -20
- data/lib/rocx/properties/shadow.rb +6 -0
- data/lib/rocx/properties/small_caps.rb +6 -0
- data/lib/rocx/properties/spacing.rb +4 -17
- data/lib/rocx/properties/spec_vanish.rb +6 -0
- data/lib/rocx/properties/strikethrough.rb +8 -0
- data/lib/rocx/properties/style.rb +15 -0
- data/lib/rocx/properties/tab.rb +1 -9
- data/lib/rocx/properties/tabs.rb +1 -9
- data/lib/rocx/properties/text_alignment.rb +11 -0
- data/lib/rocx/properties/text_direction.rb +1 -5
- data/lib/rocx/properties/textbox_tight_wrap.rb +1 -5
- data/lib/rocx/properties/toggle_property.rb +1 -1
- data/lib/rocx/properties/underline.rb +24 -0
- data/lib/rocx/properties/value_property.rb +29 -0
- data/lib/rocx/properties/vertical_alignment.rb +3 -10
- data/lib/rocx/properties/web_hidden.rb +6 -0
- data/lib/rocx/version.rb +1 -1
- data/rocx.gemspec +1 -2
- data/spec/elements/break_spec.rb +47 -0
- data/spec/elements/paragraph_spec.rb +31 -0
- data/spec/elements/run_spec.rb +15 -0
- data/spec/elements/symbol_spec.rb +24 -0
- data/spec/elements/text_spec.rb +23 -0
- data/spec/package_spec.rb +48 -0
- data/spec/parts/content_types_spec.rb +32 -0
- data/spec/parts/document_spec.rb +32 -0
- data/spec/parts/global_rels_spec.rb +13 -0
- data/spec/parts/rels_spec.rb +42 -0
- data/spec/parts/settings_spec.rb +13 -0
- data/spec/parts/styles_spec.rb +27 -0
- data/spec/properties/alignment_spec.rb +58 -0
- data/spec/properties/auto_adjust_right_indent_spec.rb +23 -0
- data/spec/properties/auto_space_de_spec.rb +23 -0
- data/spec/properties/auto_space_dn_spec.rb +23 -0
- data/spec/properties/bidi_spec.rb +23 -0
- data/spec/properties/bold_spec.rb +23 -0
- data/spec/properties/border_spec.rb +156 -0
- data/spec/properties/borders_spec.rb +66 -0
- data/spec/properties/caps_spec.rb +23 -0
- data/spec/properties/character_spacing_spec.rb +26 -0
- data/spec/properties/color_spec.rb +49 -0
- data/spec/properties/complex_bold_spec.rb +23 -0
- data/spec/properties/complex_font_size_spec.rb +24 -0
- data/spec/properties/complex_italics_spec.rb +23 -0
- data/spec/properties/complex_script_formatting_spec.rb +23 -0
- data/spec/properties/compress_punctuation_spec.rb +23 -0
- data/spec/properties/conditional_formatting_spec.rb +160 -0
- data/spec/properties/contextual_spacing_spec.rb +23 -0
- data/spec/properties/div_id_spec.rb +17 -0
- data/spec/properties/double_strikethrough_spec.rb +23 -0
- data/spec/properties/east_asian_layout_spec.rb +115 -0
- data/spec/properties/effect_spec.rb +43 -0
- data/spec/properties/emboss_spec.rb +23 -0
- data/spec/properties/emphasis_spec.rb +37 -0
- data/spec/properties/expansion_spec.rb +34 -0
- data/spec/properties/font_size_spec.rb +24 -0
- data/spec/properties/font_spec.rb +273 -0
- data/spec/properties/frame_spec.rb +338 -0
- data/spec/properties/hidden_text_spec.rb +23 -0
- data/spec/properties/highlight_spec.rb +97 -0
- data/spec/properties/imprint_spec.rb +23 -0
- data/spec/properties/indentation_spec.rb +176 -0
- data/spec/properties/italics_spec.rb +23 -0
- data/spec/properties/keep_lines_spec.rb +23 -0
- data/spec/properties/keep_next_spec.rb +23 -0
- data/spec/properties/kerning_spec.rb +24 -0
- data/spec/properties/kinsoku_spec.rb +23 -0
- data/spec/properties/language_spec.rb +29 -0
- data/spec/properties/manual_width_spec.rb +55 -0
- data/spec/properties/math_spec.rb +23 -0
- data/spec/properties/mirror_indent_spec.rb +23 -0
- data/spec/properties/no_proof_spec.rb +23 -0
- data/spec/properties/numbering_spec.rb +46 -0
- data/spec/properties/outline_level_spec.rb +20 -0
- data/spec/properties/outline_spec.rb +23 -0
- data/spec/properties/overflow_punctuation_spec.rb +23 -0
- data/spec/properties/page_break_before_spec.rb +23 -0
- data/spec/properties/paragraph_style_spec.rb +12 -0
- data/spec/properties/position_spec.rb +26 -0
- data/spec/properties/right_to_left_spec.rb +23 -0
- data/spec/properties/run_style_spec.rb +12 -0
- data/spec/properties/shading_spec.rb +135 -0
- data/spec/properties/shadow_property_spec.rb +23 -0
- data/spec/properties/small_caps_spec.rb +22 -0
- data/spec/properties/snap_to_grid_spec.rb +23 -0
- data/spec/properties/spacing_spec.rb +159 -0
- data/spec/properties/spec_vanish_spec.rb +23 -0
- data/spec/properties/strikethrough_spec.rb +23 -0
- data/spec/properties/supress_auto_hyphens_spec.rb +23 -0
- data/spec/properties/supress_line_numbers_spec.rb +23 -0
- data/spec/properties/supress_overlap_spec.rb +23 -0
- data/spec/properties/tab_spec.rb +45 -0
- data/spec/properties/tabs_spec.rb +39 -0
- data/spec/properties/text_alignment_spec.rb +33 -0
- data/spec/properties/text_direction_spec.rb +42 -0
- data/spec/properties/textbox_tight_wrap_spec.rb +33 -0
- data/spec/properties/underline_spec.rb +161 -0
- data/spec/properties/vertical_alignment_spec.rb +26 -0
- data/spec/properties/web_hidden_spec.rb +23 -0
- data/spec/properties/widow_control_spec.rb +23 -0
- data/spec/properties/word_wrap_spec.rb +23 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/style_spec.rb +34 -0
- data/{test → spec/support}/data/elements/break_element.xml +0 -0
- data/{test → spec/support}/data/elements/break_with_attributes_element.xml +0 -0
- data/{test → spec/support}/data/elements/paragraph_element.xml +0 -0
- data/{test → spec/support}/data/elements/paragraph_with_runs_element.xml +1 -1
- data/{test → spec/support}/data/elements/run_element.xml +0 -0
- data/{test → spec/support}/data/elements/symbol_element.xml +0 -0
- data/{test → spec/support}/data/elements/text_element.xml +0 -0
- data/{test → spec/support}/data/parts/content_types_part.xml +0 -0
- data/{test → spec/support}/data/parts/document_with_children_part.xml +0 -0
- data/{test → spec/support}/data/parts/empty_document_part.xml +0 -0
- data/{test → spec/support}/data/parts/global_rels_part.xml +0 -0
- data/{test → spec/support}/data/parts/rels_part.xml +0 -0
- data/{test → spec/support}/data/parts/settings_part.xml +0 -0
- data/{test → spec/support}/data/parts/styles_part.xml +0 -0
- data/{test → spec/support}/data/parts/styles_with_custom_style_part.xml +0 -0
- data/{test → spec/support}/data/styles/character_styles.xml +0 -0
- data/{test → spec/support}/data/styles/paragraph_styles.xml +0 -0
- data/spec/support/element_test_macros.rb +33 -0
- data/spec/support/part_test_macros.rb +27 -0
- data/spec/support/property_test_macros.rb +116 -0
- data/spec/support/style_test_macros.rb +33 -0
- data/spec/support/value_property_test_macros.rb +69 -0
- metadata +151 -133
- data/lib/rocx/elements/style.rb +0 -19
- data/test/elements/break_test.rb +0 -54
- data/test/elements/paragraph_test.rb +0 -37
- data/test/elements/run_test.rb +0 -18
- data/test/elements/symbol_test.rb +0 -23
- data/test/elements/text_test.rb +0 -26
- data/test/package_test.rb +0 -48
- data/test/parts/content_types_test.rb +0 -37
- data/test/parts/document_test.rb +0 -31
- data/test/parts/global_rels_test.rb +0 -13
- data/test/parts/rels_test.rb +0 -48
- data/test/parts/settings_test.rb +0 -13
- data/test/parts/styles_test.rb +0 -29
- data/test/properties/auto_adjust_right_indent_test.rb +0 -50
- data/test/properties/auto_space_de_test.rb +0 -50
- data/test/properties/auto_space_dn_test.rb +0 -50
- data/test/properties/bidi_test.rb +0 -50
- data/test/properties/bold_test.rb +0 -50
- data/test/properties/border_test.rb +0 -216
- data/test/properties/borders_test.rb +0 -95
- data/test/properties/compress_punctuation_test.rb +0 -50
- data/test/properties/conditional_formatting_test.rb +0 -46
- data/test/properties/contextual_spacing_test.rb +0 -50
- data/test/properties/div_id_test.rb +0 -38
- data/test/properties/frame_test.rb +0 -497
- data/test/properties/italics_test.rb +0 -50
- data/test/properties/keep_lines_test.rb +0 -50
- data/test/properties/keep_next_test.rb +0 -50
- data/test/properties/kinsoku_test.rb +0 -50
- data/test/properties/mirror_indent_test.rb +0 -50
- data/test/properties/numbering_test.rb +0 -86
- data/test/properties/outline_level_test.rb +0 -46
- data/test/properties/overflow_punctuation_test.rb +0 -50
- data/test/properties/page_break_before_test.rb +0 -50
- data/test/properties/shading_test.rb +0 -225
- data/test/properties/snap_to_grid_test.rb +0 -50
- data/test/properties/spacing_test.rb +0 -248
- data/test/properties/style_test.rb +0 -30
- data/test/properties/supress_auto_hyphens_test.rb +0 -50
- data/test/properties/supress_line_numbers_test.rb +0 -50
- data/test/properties/supress_overlap_test.rb +0 -50
- data/test/properties/tab_test.rb +0 -63
- data/test/properties/tabs_test.rb +0 -54
- data/test/properties/text_direction_test.rb +0 -100
- data/test/properties/textbox_tight_wrap_test.rb +0 -88
- data/test/properties/vertical_alignment_test.rb +0 -88
- data/test/properties/widow_control_test.rb +0 -50
- data/test/properties/word_wrap_test.rb +0 -50
- data/test/style_test.rb +0 -54
- data/test/test_helper.rb +0 -52
@@ -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 <
|
3
|
+
class VerticalAlignment < ValueProperty
|
4
|
+
tag :vertAlign
|
4
5
|
|
5
6
|
def ok_values
|
6
|
-
%i(
|
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
|
data/lib/rocx/version.rb
CHANGED
data/rocx.gemspec
CHANGED
@@ -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 "
|
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,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,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
|