aspose_slides_cloud 22.9.0 → 22.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +14 -14
  3. data/README.md +12 -0
  4. data/docker-entrypoint.sh +1 -2
  5. data/lib/aspose_slides_cloud/api/slides_api.rb +5327 -9036
  6. data/lib/aspose_slides_cloud/api_client.rb +3 -3
  7. data/lib/aspose_slides_cloud/configuration.rb +1 -1
  8. data/lib/aspose_slides_cloud/models/accent_element.rb +1 -1
  9. data/lib/aspose_slides_cloud/models/add_layout_slide.rb +1 -1
  10. data/lib/aspose_slides_cloud/models/add_master_slide.rb +1 -1
  11. data/lib/aspose_slides_cloud/models/add_shape.rb +1 -1
  12. data/lib/aspose_slides_cloud/models/add_slide.rb +1 -1
  13. data/lib/aspose_slides_cloud/models/alpha_bi_level_effect.rb +1 -1
  14. data/lib/aspose_slides_cloud/models/alpha_ceiling_effect.rb +1 -1
  15. data/lib/aspose_slides_cloud/models/alpha_floor_effect.rb +1 -1
  16. data/lib/aspose_slides_cloud/models/alpha_inverse_effect.rb +1 -1
  17. data/lib/aspose_slides_cloud/models/alpha_modulate_effect.rb +1 -1
  18. data/lib/aspose_slides_cloud/models/alpha_modulate_fixed_effect.rb +1 -1
  19. data/lib/aspose_slides_cloud/models/alpha_replace_effect.rb +1 -1
  20. data/lib/aspose_slides_cloud/models/arc_to_path_segment.rb +1 -1
  21. data/lib/aspose_slides_cloud/models/array_element.rb +1 -1
  22. data/lib/aspose_slides_cloud/models/audio_frame.rb +1 -1
  23. data/lib/aspose_slides_cloud/models/axis_type.rb +4 -4
  24. data/lib/aspose_slides_cloud/models/bar_element.rb +1 -1
  25. data/lib/aspose_slides_cloud/models/base64_input_file.rb +1 -1
  26. data/lib/aspose_slides_cloud/models/bi_level_effect.rb +1 -1
  27. data/lib/aspose_slides_cloud/models/block_element.rb +1 -1
  28. data/lib/aspose_slides_cloud/models/blur_image_effect.rb +1 -1
  29. data/lib/aspose_slides_cloud/models/border_box_element.rb +1 -1
  30. data/lib/aspose_slides_cloud/models/box_element.rb +1 -1
  31. data/lib/aspose_slides_cloud/models/bubble_chart_data_point.rb +14 -2
  32. data/lib/aspose_slides_cloud/models/bubble_series.rb +16 -3
  33. data/lib/aspose_slides_cloud/models/chart.rb +12 -2
  34. data/lib/aspose_slides_cloud/models/chart_wall_type.rb +3 -3
  35. data/lib/aspose_slides_cloud/models/close_path_segment.rb +1 -1
  36. data/lib/aspose_slides_cloud/models/color_change_effect.rb +1 -1
  37. data/lib/aspose_slides_cloud/models/color_replace_effect.rb +1 -1
  38. data/lib/aspose_slides_cloud/models/connector.rb +1 -1
  39. data/lib/aspose_slides_cloud/models/cubic_bezier_to_path_segment.rb +1 -1
  40. data/lib/aspose_slides_cloud/models/data_source.rb +244 -0
  41. data/lib/aspose_slides_cloud/models/delimiter_element.rb +1 -1
  42. data/lib/aspose_slides_cloud/models/duotone_effect.rb +1 -1
  43. data/lib/aspose_slides_cloud/models/effect.rb +22 -2
  44. data/lib/aspose_slides_cloud/models/export_format.rb +25 -25
  45. data/lib/aspose_slides_cloud/models/fill_overlay_image_effect.rb +1 -1
  46. data/lib/aspose_slides_cloud/models/fraction_element.rb +1 -1
  47. data/lib/aspose_slides_cloud/models/function_element.rb +1 -1
  48. data/lib/aspose_slides_cloud/models/gif_export_options.rb +1 -1
  49. data/lib/aspose_slides_cloud/models/gradient_fill.rb +1 -1
  50. data/lib/aspose_slides_cloud/models/graphical_object.rb +2 -2
  51. data/lib/aspose_slides_cloud/models/gray_scale_effect.rb +1 -1
  52. data/lib/aspose_slides_cloud/models/group_shape.rb +1 -1
  53. data/lib/aspose_slides_cloud/models/grouping_character_element.rb +1 -1
  54. data/lib/aspose_slides_cloud/models/hsl_effect.rb +1 -1
  55. data/lib/aspose_slides_cloud/models/html5_export_options.rb +1 -1
  56. data/lib/aspose_slides_cloud/models/html_export_options.rb +1 -1
  57. data/lib/aspose_slides_cloud/models/image_export_format.rb +5 -5
  58. data/lib/aspose_slides_cloud/models/image_export_options.rb +1 -1
  59. data/lib/aspose_slides_cloud/models/left_sub_superscript_element.rb +1 -1
  60. data/lib/aspose_slides_cloud/models/limit_element.rb +1 -1
  61. data/lib/aspose_slides_cloud/models/line_to_path_segment.rb +1 -1
  62. data/lib/aspose_slides_cloud/models/literals.rb +223 -0
  63. data/lib/aspose_slides_cloud/models/luminance_effect.rb +1 -1
  64. data/lib/aspose_slides_cloud/models/matrix_element.rb +1 -1
  65. data/lib/aspose_slides_cloud/models/merge.rb +1 -1
  66. data/lib/aspose_slides_cloud/models/move_to_path_segment.rb +1 -1
  67. data/lib/aspose_slides_cloud/models/nary_operator_element.rb +1 -1
  68. data/lib/aspose_slides_cloud/models/no_fill.rb +1 -1
  69. data/lib/aspose_slides_cloud/models/notes_slide_export_format.rb +23 -23
  70. data/lib/aspose_slides_cloud/models/ole_object_frame.rb +1 -1
  71. data/lib/aspose_slides_cloud/models/one_value_chart_data_point.rb +11 -1
  72. data/lib/aspose_slides_cloud/models/one_value_series.rb +13 -2
  73. data/lib/aspose_slides_cloud/models/path_input_file.rb +1 -1
  74. data/lib/aspose_slides_cloud/models/path_output_file.rb +1 -1
  75. data/lib/aspose_slides_cloud/models/pattern_fill.rb +1 -1
  76. data/lib/aspose_slides_cloud/models/pdf_export_options.rb +1 -1
  77. data/lib/aspose_slides_cloud/models/picture_fill.rb +1 -1
  78. data/lib/aspose_slides_cloud/models/picture_frame.rb +1 -1
  79. data/lib/aspose_slides_cloud/models/pptx_export_options.rb +1 -1
  80. data/lib/aspose_slides_cloud/models/quadratic_bezier_to_path_segment.rb +1 -1
  81. data/lib/aspose_slides_cloud/models/radical_element.rb +1 -1
  82. data/lib/aspose_slides_cloud/models/remove_shape.rb +1 -1
  83. data/lib/aspose_slides_cloud/models/remove_slide.rb +1 -1
  84. data/lib/aspose_slides_cloud/models/reorder_slide.rb +1 -1
  85. data/lib/aspose_slides_cloud/models/replace_text.rb +1 -1
  86. data/lib/aspose_slides_cloud/models/request_input_file.rb +1 -1
  87. data/lib/aspose_slides_cloud/models/reset_slide.rb +1 -1
  88. data/lib/aspose_slides_cloud/models/response_output_file.rb +1 -1
  89. data/lib/aspose_slides_cloud/models/right_sub_superscript_element.rb +1 -1
  90. data/lib/aspose_slides_cloud/models/save.rb +1 -1
  91. data/lib/aspose_slides_cloud/models/save_shape.rb +1 -1
  92. data/lib/aspose_slides_cloud/models/save_slide.rb +1 -1
  93. data/lib/aspose_slides_cloud/models/scatter_chart_data_point.rb +22 -2
  94. data/lib/aspose_slides_cloud/models/scatter_series.rb +5 -2
  95. data/lib/aspose_slides_cloud/models/section_zoom_frame.rb +1 -1
  96. data/lib/aspose_slides_cloud/models/series.rb +11 -1
  97. data/lib/aspose_slides_cloud/models/shape.rb +1 -1
  98. data/lib/aspose_slides_cloud/models/shape_export_format.rb +6 -6
  99. data/lib/aspose_slides_cloud/models/shape_thumbnail_bounds.rb +3 -3
  100. data/lib/aspose_slides_cloud/models/shape_type.rb +16 -16
  101. data/lib/aspose_slides_cloud/models/shapes_alignment_type.rb +8 -8
  102. data/lib/aspose_slides_cloud/models/slide_comment.rb +1 -1
  103. data/lib/aspose_slides_cloud/models/slide_export_format.rb +23 -23
  104. data/lib/aspose_slides_cloud/models/slide_modern_comment.rb +1 -1
  105. data/lib/aspose_slides_cloud/models/slide_show_properties.rb +325 -0
  106. data/lib/aspose_slides_cloud/models/smart_art.rb +1 -1
  107. data/lib/aspose_slides_cloud/models/smart_art_shape.rb +1 -1
  108. data/lib/aspose_slides_cloud/models/solid_fill.rb +1 -1
  109. data/lib/aspose_slides_cloud/models/special_slide_type.rb +3 -3
  110. data/lib/aspose_slides_cloud/models/subscript_element.rb +1 -1
  111. data/lib/aspose_slides_cloud/models/summary_zoom_frame.rb +1 -1
  112. data/lib/aspose_slides_cloud/models/summary_zoom_section.rb +1 -1
  113. data/lib/aspose_slides_cloud/models/superscript_element.rb +1 -1
  114. data/lib/aspose_slides_cloud/models/svg_export_options.rb +23 -3
  115. data/lib/aspose_slides_cloud/models/swf_export_options.rb +1 -1
  116. data/lib/aspose_slides_cloud/models/table.rb +1 -1
  117. data/lib/aspose_slides_cloud/models/text_element.rb +1 -1
  118. data/lib/aspose_slides_cloud/models/tiff_export_options.rb +1 -1
  119. data/lib/aspose_slides_cloud/models/tint_effect.rb +1 -1
  120. data/lib/aspose_slides_cloud/models/update_background.rb +1 -1
  121. data/lib/aspose_slides_cloud/models/update_shape.rb +1 -1
  122. data/lib/aspose_slides_cloud/models/video_export_options.rb +1 -1
  123. data/lib/aspose_slides_cloud/models/video_frame.rb +1 -1
  124. data/lib/aspose_slides_cloud/models/workbook.rb +268 -0
  125. data/lib/aspose_slides_cloud/models/xaml_export_options.rb +1 -1
  126. data/lib/aspose_slides_cloud/models/xps_export_options.rb +1 -1
  127. data/lib/aspose_slides_cloud/models/xy_series.rb +23 -2
  128. data/lib/aspose_slides_cloud/models/zoom_frame.rb +1 -1
  129. data/lib/aspose_slides_cloud/type_registry.rb +189 -182
  130. data/lib/aspose_slides_cloud/version.rb +1 -1
  131. data/lib/aspose_slides_cloud.rb +124 -120
  132. data/spec/api/slides_api_spec.rb +23387 -34153
  133. data/spec/spec_utils.rb +88 -49
  134. data/spec/use_cases/chart_spec.rb +160 -1
  135. data/spec/use_cases/convert_spec.rb +8 -2
  136. data/spec/use_cases/font_spec.rb +4 -4
  137. data/spec/use_cases/nullable_field_spec.rb +7 -0
  138. data/spec/use_cases/paragraph_spec.rb +30 -22
  139. data/spec/use_cases/portion_spec.rb +31 -23
  140. data/spec/use_cases/property_spec.rb +23 -0
  141. data/spec/use_cases/shape_spec.rb +22 -18
  142. data/testRules.json +138 -513
  143. metadata +6 -2
data/spec/spec_utils.rb CHANGED
@@ -45,11 +45,11 @@ module AsposeSlidesCloud
45
45
  end
46
46
  files = Hash.new
47
47
  SpecUtils.test_rules["Files"].each do |rule|
48
- if SpecUtils.good_rule?(rule, name, method)
49
- actual_name = SpecUtils.untemplatize(rule["File"], value)
48
+ if SpecUtils.good_rule?(rule, name, method, nil)
49
+ actual_name = SpecUtils.untemplatize(rule["File"], name, value)
50
50
  path = "TempSlidesSDK"
51
51
  if rule.key?("Folder")
52
- path = SpecUtils.untemplatize(rule["Folder"], value)
52
+ path = SpecUtils.untemplatize(rule["Folder"], name, value)
53
53
  end
54
54
  path = path + "/" + actual_name
55
55
  files[path] = rule
@@ -61,68 +61,41 @@ module AsposeSlidesCloud
61
61
  SpecUtils.api.copy_file("TempTests/" + rule['ActualName'], path)
62
62
  elsif rule["Action"] == "Delete"
63
63
  SpecUtils.api.delete_file(path)
64
+ SpecUtils.api.delete_folder(path)
64
65
  end
65
66
  end
66
67
  end
67
68
 
68
69
  def self.get_param_value(name, method, type)
69
- if type == 'File'
70
- fileName = "test.pptx"
71
- if method.casecmp("ImportFromPdf") == 0
72
- fileName = "test.pdf"
73
- elsif name.casecmp("Image") == 0
74
- if method.casecmp("ImportShapesFromSvg") == 0
75
- fileName = "shapes.svg"
76
- else
77
- fileName = "watermark.png"
78
- end
79
- end
80
- return File.binread(File.join(TEST_DATA_PATH, fileName))
81
- end
82
- if type == 'File[]'
83
- files = []
84
- files.push(File.binread(File.join(AsposeSlidesCloud::SpecUtils::TEST_DATA_PATH, "test.pptx")))
85
- files.push(File.binread(File.join(AsposeSlidesCloud::SpecUtils::TEST_DATA_PATH, "test-unprotected.pptx")))
86
- return files
87
- end
88
- value = "test" + name
70
+ value = nil
89
71
  SpecUtils.test_rules["Values"].each do |rule|
90
- if SpecUtils.good_rule?(rule, name, method) and rule.key?("Value")
91
- if rule.key?("Type")
92
- if TypeRegistry.subclass?(rule["Type"], type)
93
- value = rule["Value"]
94
- end
95
- else
96
- value = rule["Value"]
97
- end
72
+ if SpecUtils.good_rule?(rule, name, method, type) and rule.key?("Value")
73
+ value = rule["Value"]
98
74
  end
99
75
  end
100
- value
76
+ SpecUtils.untemplatize(value, name, nil)
101
77
  end
102
78
 
103
79
  def self.invalidize_param_value(name, method, value, type)
104
- if type == 'File'
105
- return nil
106
- end
107
80
  invalid_value = nil
108
81
  SpecUtils.test_rules["Values"].each do |rule|
109
- if SpecUtils.good_rule?(rule, name, method) and rule.key?("InvalidValue")
82
+ if SpecUtils.good_rule?(rule, name, method, type) and rule.key?("InvalidValue")
110
83
  invalid_value = rule["InvalidValue"]
111
84
  end
112
85
  end
113
- SpecUtils.untemplatize(invalid_value, value)
86
+ SpecUtils.untemplatize(invalid_value, name, value)
114
87
  end
115
88
 
116
- def self.get_expected_error(method, name, value)
89
+ def self.get_expected_error(method, name, value, type)
117
90
  code = 0
118
91
  message = "Unexpeceted message"
119
92
  SpecUtils.test_rules["Results"].each do |rule|
120
- if SpecUtils.good_rule?(rule, name, method)
93
+ if SpecUtils.good_rule?(rule, name, method, type)
121
94
  if rule.key?("Code")
122
95
  code = rule["Code"]
123
96
  end
124
97
  if rule.key?("Message")
125
- message = SpecUtils.untemplatize(rule["Message"], value)
98
+ message = SpecUtils.untemplatize(rule["Message"], name, value)
126
99
  end
127
100
  end
128
101
  end
@@ -136,30 +109,95 @@ module AsposeSlidesCloud
136
109
  return false
137
110
  end
138
111
 
139
- def self.good_rule?(rule, name, method)
140
- (not rule.key?("Language") or rule["Language"].casecmp("Ruby") == 0) \
112
+ def self.good_rule?(rule, name, method, type)
113
+ SpecUtils.good_rule_key?(rule, "Language", "Ruby") \
141
114
  and (not rule.key?("Invalid") or ((name != nil) == rule["Invalid"])) \
142
- and (not rule.key?("Parameter") or (name != nil and rule["Parameter"].casecmp(name) == 0)) \
143
- and (not rule.key?("Method") or (method != nil and rule["Method"].casecmp(method) == 0))
115
+ and SpecUtils.good_rule_key?(rule, "Parameter", name) \
116
+ and SpecUtils.good_rule_key?(rule, "Method", method) \
117
+ and SpecUtils.good_rule_type?(rule, type)
118
+ end
119
+
120
+ def self.good_rule_key?(rule, key, value)
121
+ if not rule.key?(key)
122
+ return true
123
+ end
124
+ if not value
125
+ return false
126
+ end
127
+ if rule[key].start_with?("/") and rule[key].end_with?("/")
128
+ return value =~ /#{rule[key][1..-2]}/i
129
+ end
130
+ return rule[key].casecmp(value) == 0
131
+ end
132
+
133
+ def self.good_rule_type?(rule, type)
134
+ if not rule.key?("Type")
135
+ return true
136
+ end
137
+ if not type
138
+ return false
139
+ end
140
+ if rule["Type"] == "bool"
141
+ return type == "BOOLEAN"
142
+ end
143
+ if rule["Type"] == "number"
144
+ return type == "Integer"
145
+ end
146
+ if rule["Type"] == "int"
147
+ return type == "Integer"
148
+ end
149
+ if rule["Type"] == "int[]"
150
+ return type == "Integer[]"
151
+ end
152
+ if rule["Type"] == "stream"
153
+ return type == "File"
154
+ end
155
+ if rule["Type"] == "stream[]"
156
+ return type == "File[]"
157
+ end
158
+ if rule["Type"] == "model"
159
+ return !TypeRegistry.type_determiners[type.to_sym].nil?
160
+ end
161
+ if !TypeRegistry.type_determiners[rule["Type"].to_sym].nil?
162
+ return TypeRegistry.subclass?(rule["Type"], type)
163
+ end
164
+ return false
144
165
  end
145
166
 
146
- def self.untemplatize(template, value)
167
+ def self.untemplatize(template, name, value)
147
168
  if template == nil
148
169
  value
149
170
  else
150
171
  result = template
151
- if template.is_a? String and template.match("%v")
172
+ if template.is_a? String
152
173
  result = "" + template
153
- if value != nil
154
- result["%v"] = value.to_s
174
+ if template.start_with?("@")
175
+ file_name = result[1..-1]
176
+ if file_name.start_with?("(") and file_name.end_with?(")")
177
+ result = file_name[1..-2].split(",").map {|f| File.binread(File.join(AsposeSlidesCloud::SpecUtils::TEST_DATA_PATH, f)) }
178
+ else
179
+ result = File.binread(File.join(AsposeSlidesCloud::SpecUtils::TEST_DATA_PATH, file_name))
180
+ end
155
181
  else
156
- result["%v"] = ""
182
+ result = SpecUtils.replace(result, "%n", name)
183
+ result = SpecUtils.replace(result, "%v", value)
157
184
  end
158
185
  end
159
186
  result
160
187
  end
161
188
  end
162
189
 
190
+ def self.replace(template, oldValue, newValue)
191
+ if template.match(oldValue)
192
+ if newValue != nil
193
+ template[oldValue] = newValue.to_s
194
+ else
195
+ template[oldValue] = ""
196
+ end
197
+ end
198
+ template
199
+ end
200
+
163
201
  def self.test_rules
164
202
  unless @@test_rules
165
203
  @@test_rules = JSON.parse(File.read('testRules.json'))
@@ -178,6 +216,7 @@ module AsposeSlidesCloud
178
216
  configuration.app_sid = config["ClientId"]
179
217
  configuration.app_key = config["ClientSecret"]
180
218
  configuration.debugging = config["Debug"]
219
+ configuration.verify_ssl = !config["AllowInsecureRequests"]
181
220
  @@api = AsposeSlidesCloud::SlidesApi.new(configuration)
182
221
  end
183
222
  @@api
@@ -33,7 +33,7 @@ describe 'UseCases' do
33
33
  expect(chart.categories.length).to eq(4)
34
34
  end
35
35
 
36
- it 'create' do
36
+ it 'create chart auto data source' do
37
37
  folder_name = "TempSlidesSDK"
38
38
  file_name = "test.pptx"
39
39
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
@@ -72,6 +72,118 @@ describe 'UseCases' do
72
72
  expect(result.categories.length).to eq(3)
73
73
  end
74
74
 
75
+ it 'create chart workbook data source' do
76
+ folder_name = "TempSlidesSDK"
77
+ file_name = "test.pptx"
78
+ AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
79
+ chart = AsposeSlidesCloud::Chart.new
80
+ chart.chart_type = 'ClusteredColumn'
81
+ chart.width = 400
82
+ chart.height = 300
83
+
84
+ data_source_for_categories = AsposeSlidesCloud::Workbook.new
85
+ data_source_for_categories.worksheet_index = 0
86
+ data_source_for_categories.column_index = 0
87
+ data_source_for_categories.row_index = 1
88
+ chart.data_source_for_categories = data_source_for_categories
89
+
90
+ series1 = AsposeSlidesCloud::OneValueSeries.new
91
+ data_source_for_series1_name = AsposeSlidesCloud::Workbook.new
92
+ data_source_for_series1_name.worksheet_index = 0
93
+ data_source_for_series1_name.column_index = 1
94
+ data_source_for_series1_name.row_index = 0
95
+ series1.data_source_for_series_name = data_source_for_series1_name
96
+ series1.name = "Series1"
97
+ data_source_for_series1_values = AsposeSlidesCloud::Workbook.new
98
+ data_source_for_series1_values.worksheet_index = 0
99
+ data_source_for_series1_values.column_index = 1
100
+ data_source_for_series1_values.row_index = 1
101
+ series1.data_source_for_values = data_source_for_series1_values
102
+ point11 = AsposeSlidesCloud::OneValueChartDataPoint.new
103
+ point11.value = 40
104
+ point12 = AsposeSlidesCloud::OneValueChartDataPoint.new
105
+ point12.value = 50
106
+ point13 = AsposeSlidesCloud::OneValueChartDataPoint.new
107
+ point13.value = 70
108
+ series1.data_points = [point11, point12, point13]
109
+ series2 = AsposeSlidesCloud::OneValueSeries.new
110
+ data_source_for_series2_name = AsposeSlidesCloud::Workbook.new
111
+ data_source_for_series2_name.worksheet_index = 0
112
+ data_source_for_series2_name.column_index = 2
113
+ data_source_for_series2_name.row_index = 0
114
+ series2.data_source_for_series_name = data_source_for_series2_name
115
+ series2.name = "Series2"
116
+ data_source_for_series2_values = AsposeSlidesCloud::Workbook.new
117
+ data_source_for_series2_values.worksheet_index = 0
118
+ data_source_for_series2_values.column_index = 2
119
+ data_source_for_series2_values.row_index = 1
120
+ series2.data_source_for_values = data_source_for_series2_values
121
+ point21 = AsposeSlidesCloud::OneValueChartDataPoint.new
122
+ point21.value = 55
123
+ point22 = AsposeSlidesCloud::OneValueChartDataPoint.new
124
+ point22.value = 35
125
+ point23 = AsposeSlidesCloud::OneValueChartDataPoint.new
126
+ point23.value = 90
127
+ series2.data_points = [point21, point22, point23]
128
+ chart.series = [ series1, series2 ]
129
+ category1 = AsposeSlidesCloud::ChartCategory.new
130
+ category1.value = "Category1"
131
+ category2 = AsposeSlidesCloud::ChartCategory.new
132
+ category2.value = "Category2"
133
+ category3 = AsposeSlidesCloud::ChartCategory.new
134
+ category3.value = "Category3"
135
+ chart.categories = [category1, category2, category3]
136
+ result = AsposeSlidesCloud::SpecUtils.api.create_shape(file_name, 3, chart, nil, nil, "password", folder_name)
137
+ expect(result.series.length).to eq(2)
138
+ expect(result.categories.length).to eq(3)
139
+ end
140
+
141
+ it 'create chart literals' do
142
+ folder_name = "TempSlidesSDK"
143
+ file_name = "test.pptx"
144
+ AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
145
+ chart = AsposeSlidesCloud::Chart.new
146
+ chart.chart_type = 'ClusteredColumn'
147
+ chart.width = 400
148
+ chart.height = 300
149
+
150
+ chart.data_source_for_categories = AsposeSlidesCloud::Literals.new
151
+
152
+ series1 = AsposeSlidesCloud::OneValueSeries.new
153
+ series1.data_source_for_series_name = AsposeSlidesCloud::Literals.new
154
+ series1.name = "Series1"
155
+ series1.data_source_for_values = AsposeSlidesCloud::Literals.new
156
+ point11 = AsposeSlidesCloud::OneValueChartDataPoint.new
157
+ point11.value = 40
158
+ point12 = AsposeSlidesCloud::OneValueChartDataPoint.new
159
+ point12.value = 50
160
+ point13 = AsposeSlidesCloud::OneValueChartDataPoint.new
161
+ point13.value = 70
162
+ series1.data_points = [point11, point12, point13]
163
+ series2 = AsposeSlidesCloud::OneValueSeries.new
164
+ series2.data_source_for_series_name = AsposeSlidesCloud::Workbook.new
165
+ series2.name = "Series2"
166
+ series2.data_source_for_values = AsposeSlidesCloud::Workbook.new
167
+ point21 = AsposeSlidesCloud::OneValueChartDataPoint.new
168
+ point21.value = 55
169
+ point22 = AsposeSlidesCloud::OneValueChartDataPoint.new
170
+ point22.value = 35
171
+ point23 = AsposeSlidesCloud::OneValueChartDataPoint.new
172
+ point23.value = 90
173
+ series2.data_points = [point21, point22, point23]
174
+ chart.series = [ series1, series2 ]
175
+ category1 = AsposeSlidesCloud::ChartCategory.new
176
+ category1.value = "Category1"
177
+ category2 = AsposeSlidesCloud::ChartCategory.new
178
+ category2.value = "Category2"
179
+ category3 = AsposeSlidesCloud::ChartCategory.new
180
+ category3.value = "Category3"
181
+ chart.categories = [category1, category2, category3]
182
+ result = AsposeSlidesCloud::SpecUtils.api.create_shape(file_name, 3, chart, nil, nil, "password", folder_name)
183
+ expect(result.series.length).to eq(2)
184
+ expect(result.categories.length).to eq(3)
185
+ end
186
+
75
187
  it 'update' do
76
188
  folder_name = "TempSlidesSDK"
77
189
  file_name = "test.pptx"
@@ -496,5 +608,52 @@ describe 'UseCases' do
496
608
  expect(data_point.line_format.fill_format.type).to eq("Solid")
497
609
  expect(data_point.effect_format.blur).not_to eq(nil)
498
610
  end
611
+
612
+ it 'chart formulas' do
613
+ folder_name = "TempSlidesSDK"
614
+ file_name = "test.pptx"
615
+ AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
616
+ chart = AsposeSlidesCloud::Chart.new
617
+ chart.chart_type = 'ClusteredColumn'
618
+ chart.width = 400
619
+ chart.height = 300
620
+
621
+ data_source_for_categories = AsposeSlidesCloud::Workbook.new
622
+ data_source_for_categories.worksheet_index = 0
623
+ data_source_for_categories.column_index = 0
624
+ data_source_for_categories.row_index = 1
625
+ chart.data_source_for_categories = data_source_for_categories
626
+
627
+ series1 = AsposeSlidesCloud::OneValueSeries.new
628
+ data_source_for_series1_name = AsposeSlidesCloud::Workbook.new
629
+ data_source_for_series1_name.worksheet_index = 0
630
+ data_source_for_series1_name.column_index = 1
631
+ data_source_for_series1_name.row_index = 0
632
+ series1.data_source_for_series_name = data_source_for_series1_name
633
+ series1.name = "Series1"
634
+ data_source_for_series1_values = AsposeSlidesCloud::Workbook.new
635
+ data_source_for_series1_values.worksheet_index = 0
636
+ data_source_for_series1_values.column_index = 1
637
+ data_source_for_series1_values.row_index = 1
638
+ series1.data_source_for_values = data_source_for_series1_values
639
+ point11 = AsposeSlidesCloud::OneValueChartDataPoint.new
640
+ point11.value = 40
641
+ point12 = AsposeSlidesCloud::OneValueChartDataPoint.new
642
+ point12.value = 50
643
+ point13 = AsposeSlidesCloud::OneValueChartDataPoint.new
644
+ point13.value = 0
645
+ point13.value_formula = "SUM(B2:B3)"
646
+ series1.data_points = [point11, point12, point13]
647
+ chart.series = [ series1 ]
648
+ category1 = AsposeSlidesCloud::ChartCategory.new
649
+ category1.value = "Category1"
650
+ category2 = AsposeSlidesCloud::ChartCategory.new
651
+ category2.value = "Category2"
652
+ category3 = AsposeSlidesCloud::ChartCategory.new
653
+ category3.value = "Category3"
654
+ chart.categories = [category1, category2, category3]
655
+ result = AsposeSlidesCloud::SpecUtils.api.create_shape(file_name, 3, chart, nil, nil, "password", folder_name)
656
+ expect(result.series[0].data_points[2].value).to eq(90)
657
+ end
499
658
  end
500
659
  end
@@ -145,8 +145,11 @@ describe 'UseCases' do
145
145
  it 'subshape post from storage' do
146
146
  folder_name = "TempSlidesSDK"
147
147
  file_name = "test.pptx"
148
+ shape_index = 4
149
+ sub_shape = "1"
148
150
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
149
- response = AsposeSlidesCloud::SpecUtils.api.download_subshape(file_name, 1, "4/shapes", 1, AsposeSlidesCloud::ShapeExportFormat::PNG, nil, nil, nil, nil, "password", folder_name)
151
+ response = AsposeSlidesCloud::SpecUtils.api.download_shape(file_name, 1, shape_index, AsposeSlidesCloud::ShapeExportFormat::PNG,
152
+ nil, nil, nil, nil, "password", folder_name, "", sub_shape)
150
153
  expect(response.size).not_to eq(0)
151
154
  end
152
155
 
@@ -163,8 +166,11 @@ describe 'UseCases' do
163
166
  folder_name = "TempSlidesSDK"
164
167
  file_name = "test.pptx"
165
168
  out_path = "TestData/test.png"
169
+ shape_index = 4
170
+ sub_shape = "1"
166
171
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
167
- AsposeSlidesCloud::SpecUtils.api.save_subshape(file_name, 1, "4/shapes", 1, AsposeSlidesCloud::ShapeExportFormat::PNG, out_path, nil, nil, nil, nil, "password", folder_name)
172
+ AsposeSlidesCloud::SpecUtils.api.save_shape(file_name, 1, shape_index, AsposeSlidesCloud::ShapeExportFormat::PNG,
173
+ out_path, nil, nil, nil, nil, "password", folder_name, "", sub_shape)
168
174
  expect(AsposeSlidesCloud::SpecUtils.api.object_exists(out_path).exists).to be true
169
175
  end
170
176
 
@@ -86,7 +86,7 @@ describe 'UseCases' do
86
86
  response = AsposeSlidesCloud::SpecUtils.api.set_embedded_font(file_name, font_name, false, "password", folder_name)
87
87
  expect(response.list[2].is_embedded).to eq(true)
88
88
  response = AsposeSlidesCloud::SpecUtils.api.delete_embedded_font(file_name, font_name, "password", folder_name)
89
- expect(response.list[2].is_embedded).to eq(false)
89
+ expect(response.list[2].is_embedded).to eq(nil)
90
90
  end
91
91
 
92
92
  it "delete embedded font online" do
@@ -102,7 +102,7 @@ describe 'UseCases' do
102
102
  folder_name = "TempSlidesSDK"
103
103
  file_name = "test.pptx"
104
104
  source_font_name = "Calibri"
105
- target_font_name = "Times%20New%20Roman"
105
+ target_font_name = "Times New Roman"
106
106
  embed = true
107
107
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
108
108
  response = AsposeSlidesCloud::SpecUtils.api.replace_font(file_name, source_font_name, target_font_name, embed,
@@ -115,7 +115,7 @@ describe 'UseCases' do
115
115
  folder_name = "TempSlidesSDK"
116
116
  file_name = "test.pptx"
117
117
  source_font_name = "Calibri"
118
- target_font_name = "Times%20New%20Roman"
118
+ target_font_name = "Times New Roman"
119
119
  embed = true
120
120
  source = File.binread("TestData/test.pptx")
121
121
  response = AsposeSlidesCloud::SpecUtils.api.replace_font_online(source, source_font_name, target_font_name, embed,
@@ -126,7 +126,7 @@ describe 'UseCases' do
126
126
  it "font substitution" do
127
127
  folder_name = "TempSlidesSDK"
128
128
  file_name = "test.pptx"
129
- target_font_name = "Times%20New%20Roman"
129
+ target_font_name = "Times New Roman"
130
130
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
131
131
  font_rule1 = AsposeSlidesCloud::FontSubstRule.new
132
132
  font_rule1.source_font = "Arial"
@@ -42,6 +42,13 @@ describe 'UseCases' do
42
42
  dto.title = AsposeSlidesCloud::ChartTitle.new
43
43
  dto.title.has_title = true
44
44
  dto.title.text = "MyTitle"
45
+
46
+ category1 = AsposeSlidesCloud::ChartCategory.new
47
+ category1.value = "Category1"
48
+ category2 = AsposeSlidesCloud::ChartCategory.new
49
+ category2.value = "Category2"
50
+ dto.categories = [ category1, category2 ]
51
+
45
52
  dto.series = []
46
53
  dto.series.push(AsposeSlidesCloud::OneValueSeries.new)
47
54
  dto.series[0].type = "ClusteredColumn"
@@ -53,10 +53,11 @@ describe 'UseCases' do
53
53
  file_name = "test.pptx"
54
54
  password = "password"
55
55
  slide_index = 6
56
- shape_index = 1
56
+ shape_index = 3
57
+ sub_shape = "1"
57
58
  paragraph_index = 1
58
59
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
59
- response = AsposeSlidesCloud::SpecUtils.api.get_subshape_paragraph(file_name, slide_index, "3/shapes", shape_index, paragraph_index, password, folder_name)
60
+ response = AsposeSlidesCloud::SpecUtils.api.get_paragraph(file_name, slide_index, shape_index, paragraph_index, password, folder_name, "", sub_shape)
60
61
  expect(response.portion_list.length).to eq(2)
61
62
  end
62
63
 
@@ -65,9 +66,10 @@ describe 'UseCases' do
65
66
  file_name = "test.pptx"
66
67
  password = "password"
67
68
  slide_index = 6
68
- shape_index = 1
69
+ shape_index = 3
70
+ sub_shape = "1"
69
71
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
70
- response = AsposeSlidesCloud::SpecUtils.api.get_subshape_paragraphs(file_name, slide_index, "3/shapes", shape_index, password, folder_name)
72
+ response = AsposeSlidesCloud::SpecUtils.api.get_paragraphs(file_name, slide_index, shape_index, password, folder_name, "", sub_shape)
71
73
  expect(response.paragraph_links.length).to eq(2)
72
74
  end
73
75
 
@@ -104,7 +106,7 @@ describe 'UseCases' do
104
106
  portion2 = AsposeSlidesCloud::Portion.new
105
107
  portion2.text = "Portion2"
106
108
  portion2.font_bold = "True"
107
- dto.portion = [portion1, portion2]
109
+ dto.portion_list = [portion1, portion2]
108
110
 
109
111
  response = AsposeSlidesCloud::SpecUtils.api.create_paragraph(file_name, slide_index, shape_index, dto, nil, password, folder_name)
110
112
  expect(response.portion_list.length).to eq(2)
@@ -115,7 +117,8 @@ describe 'UseCases' do
115
117
  file_name = "test.pptx"
116
118
  password = "password"
117
119
  slide_index = 6
118
- shape_index = 1
120
+ shape_index = 3
121
+ sub_shape = "1"
119
122
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
120
123
 
121
124
  dto = AsposeSlidesCloud::Paragraph.new
@@ -123,7 +126,7 @@ describe 'UseCases' do
123
126
  dto.margin_right = 2
124
127
  dto.alignment = "Center"
125
128
 
126
- response = AsposeSlidesCloud::SpecUtils.api.create_subshape_paragraph(file_name, slide_index, "3/shapes", shape_index, dto, nil, password, folder_name)
129
+ response = AsposeSlidesCloud::SpecUtils.api.create_paragraph(file_name, slide_index, shape_index, dto, nil, password, folder_name, "", sub_shape)
127
130
  expect(response.margin_left).to eq(dto.margin_left)
128
131
  expect(response.margin_right).to eq(dto.margin_right)
129
132
  expect(response.alignment).to eq(dto.alignment)
@@ -155,7 +158,8 @@ describe 'UseCases' do
155
158
  file_name = "test.pptx"
156
159
  password = "password"
157
160
  slide_index = 6
158
- shape_index = 1
161
+ shape_index = 3
162
+ sub_shape = "1"
159
163
  paragraph_index = 1
160
164
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
161
165
 
@@ -164,8 +168,8 @@ describe 'UseCases' do
164
168
  dto.margin_right = 2
165
169
  dto.alignment = "Center"
166
170
 
167
- response = AsposeSlidesCloud::SpecUtils.api.update_subshape_paragraph(file_name, slide_index, "3/shapes", shape_index,
168
- paragraph_index, dto, password, folder_name)
171
+ response = AsposeSlidesCloud::SpecUtils.api.update_paragraph(file_name, slide_index, shape_index,
172
+ paragraph_index, dto, password, folder_name, "", sub_shape)
169
173
  expect(response.margin_left).to eq(dto.margin_left)
170
174
  expect(response.margin_right).to eq(dto.margin_right)
171
175
  expect(response.alignment).to eq(dto.alignment)
@@ -202,11 +206,12 @@ describe 'UseCases' do
202
206
  file_name = "test.pptx"
203
207
  password = "password"
204
208
  slide_index = 6
205
- shape_index = 1
209
+ shape_index = 3
210
+ sub_shape = "1"
206
211
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
207
212
 
208
- response = AsposeSlidesCloud::SpecUtils.api.delete_subshape_paragraphs(file_name, slide_index, "3/shapes", shape_index, nil,
209
- password, folder_name)
213
+ response = AsposeSlidesCloud::SpecUtils.api.delete_paragraphs(file_name, slide_index, shape_index, nil,
214
+ password, folder_name, "", sub_shape)
210
215
  expect(response.paragraph_links.length).to eq(0)
211
216
  end
212
217
 
@@ -215,11 +220,12 @@ describe 'UseCases' do
215
220
  file_name = "test.pptx"
216
221
  password = "password"
217
222
  slide_index = 6
218
- shape_index = 1
223
+ shape_index = 3
224
+ sub_shape = "1"
219
225
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
220
226
 
221
- response = AsposeSlidesCloud::SpecUtils.api.delete_subshape_paragraphs(file_name, slide_index, "3/shapes", shape_index, [1],
222
- password, folder_name)
227
+ response = AsposeSlidesCloud::SpecUtils.api.delete_paragraphs(file_name, slide_index, shape_index, [1],
228
+ password, folder_name, "", sub_shape)
223
229
  expect(response.paragraph_links.length).to eq(1)
224
230
  end
225
231
 
@@ -242,12 +248,13 @@ describe 'UseCases' do
242
248
  file_name = "test.pptx"
243
249
  password = "password"
244
250
  slide_index = 6
245
- shape_index = 1
251
+ shape_index = 3
252
+ sub_shape = "1"
246
253
  paragraph_index = 1
247
254
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
248
255
 
249
- response = AsposeSlidesCloud::SpecUtils.api.delete_subshape_paragraph(file_name, slide_index, "3/shapes", shape_index, paragraph_index,
250
- password, folder_name)
256
+ response = AsposeSlidesCloud::SpecUtils.api.delete_paragraph(file_name, slide_index, shape_index, paragraph_index,
257
+ password, folder_name, "", sub_shape)
251
258
  expect(response.paragraph_links.length).to eq(1)
252
259
  end
253
260
 
@@ -311,11 +318,12 @@ describe 'UseCases' do
311
318
  file_name = "test.pptx"
312
319
  password = "password"
313
320
  slide_index = 6
314
- shape_index = 1
321
+ shape_index = 3
322
+ sub_shape = "1"
315
323
  paragraph_index = 1
316
324
  AsposeSlidesCloud::SpecUtils.api.copy_file("TempTests/" + file_name, folder_name + "/" + file_name)
317
- response = AsposeSlidesCloud::SpecUtils.api.get_subshape_paragraph_effective(file_name, slide_index, "3/shapes", shape_index, paragraph_index,
318
- password, folder_name)
325
+ response = AsposeSlidesCloud::SpecUtils.api.get_paragraph_effective(file_name, slide_index, shape_index, paragraph_index,
326
+ password, folder_name, "", sub_shape)
319
327
  expect(response.default_tab_size).to eq(72)
320
328
  end
321
329
  end