groupdocs 2.2.0 → 2.3.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.
Files changed (324) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -9
  3. data/CHANGELOG.md +482 -477
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +21 -21
  6. data/README.md +94 -94
  7. data/Rakefile +9 -9
  8. data/examples/README.md +12 -12
  9. data/examples/api-samples/Gemfile +5 -5
  10. data/examples/api-samples/Gemfile.lock +49 -49
  11. data/examples/api-samples/README.md +23 -23
  12. data/examples/api-samples/public/css/style.css +229 -229
  13. data/examples/api-samples/public/docs/annotation-sample.html +167 -167
  14. data/examples/api-samples/public/docs/docco.css +500 -500
  15. data/examples/api-samples/public/docs/envelope-sample.html +374 -374
  16. data/examples/api-samples/public/docs/sample01.html +181 -181
  17. data/examples/api-samples/public/docs/sample02.html +199 -199
  18. data/examples/api-samples/public/docs/sample03.html +318 -318
  19. data/examples/api-samples/public/docs/sample04.html +217 -217
  20. data/examples/api-samples/public/docs/sample05.html +296 -296
  21. data/examples/api-samples/public/docs/sample06.html +347 -347
  22. data/examples/api-samples/public/docs/sample07.html +209 -209
  23. data/examples/api-samples/public/docs/sample08.html +277 -277
  24. data/examples/api-samples/public/docs/sample09.html +314 -314
  25. data/examples/api-samples/public/docs/sample10.html +270 -270
  26. data/examples/api-samples/public/docs/sample11.html +462 -462
  27. data/examples/api-samples/public/docs/sample12.html +199 -199
  28. data/examples/api-samples/public/docs/sample13.html +201 -201
  29. data/examples/api-samples/public/docs/sample14.html +204 -204
  30. data/examples/api-samples/public/docs/sample15.html +182 -182
  31. data/examples/api-samples/public/docs/sample16.html +234 -234
  32. data/examples/api-samples/public/docs/sample17.html +309 -309
  33. data/examples/api-samples/public/docs/sample18.html +721 -721
  34. data/examples/api-samples/public/docs/sample19.html +631 -631
  35. data/examples/api-samples/public/docs/sample20.html +230 -230
  36. data/examples/api-samples/public/docs/sample21.html +790 -790
  37. data/examples/api-samples/public/docs/sample22.html +408 -408
  38. data/examples/api-samples/public/docs/sample25.html +550 -550
  39. data/examples/api-samples/public/templates/base-simple_source.html +191 -191
  40. data/examples/api-samples/public/templates/testdocument.html +100 -100
  41. data/examples/api-samples/public/templates/welcome.htm +137 -137
  42. data/examples/api-samples/samples/annotation-sample.rb +56 -56
  43. data/examples/api-samples/samples/envelope-sample.rb +133 -133
  44. data/examples/api-samples/samples/sample01.rb +44 -44
  45. data/examples/api-samples/samples/sample02.rb +50 -50
  46. data/examples/api-samples/samples/sample03.rb +79 -79
  47. data/examples/api-samples/samples/sample04.rb +54 -54
  48. data/examples/api-samples/samples/sample05.rb +83 -83
  49. data/examples/api-samples/samples/sample06.rb +86 -86
  50. data/examples/api-samples/samples/sample07.rb +59 -59
  51. data/examples/api-samples/samples/sample08.rb +76 -76
  52. data/examples/api-samples/samples/sample09.rb +85 -85
  53. data/examples/api-samples/samples/sample10.rb +70 -70
  54. data/examples/api-samples/samples/sample11.rb +132 -132
  55. data/examples/api-samples/samples/sample12.rb +48 -48
  56. data/examples/api-samples/samples/sample13.rb +49 -49
  57. data/examples/api-samples/samples/sample14.rb +54 -54
  58. data/examples/api-samples/samples/sample15.rb +43 -43
  59. data/examples/api-samples/samples/sample16.rb +57 -57
  60. data/examples/api-samples/samples/sample17.rb +70 -70
  61. data/examples/api-samples/samples/sample18.rb +190 -190
  62. data/examples/api-samples/samples/sample19.rb +188 -188
  63. data/examples/api-samples/samples/sample20.rb +68 -68
  64. data/examples/api-samples/samples/sample21.rb +212 -212
  65. data/examples/api-samples/samples/sample22.rb +109 -109
  66. data/examples/api-samples/samples/sample25.rb +127 -127
  67. data/examples/api-samples/views/_others_samples.haml +233 -233
  68. data/examples/api-samples/views/annotation_sample.haml +63 -63
  69. data/examples/api-samples/views/envelope_sample.haml +72 -72
  70. data/examples/api-samples/views/index.haml +235 -235
  71. data/examples/api-samples/views/layout.haml +3 -3
  72. data/examples/api-samples/views/sample01.haml +63 -63
  73. data/examples/api-samples/views/sample02.haml +52 -52
  74. data/examples/api-samples/views/sample03.haml +87 -87
  75. data/examples/api-samples/views/sample04.haml +55 -55
  76. data/examples/api-samples/views/sample05.haml +86 -86
  77. data/examples/api-samples/views/sample06.haml +58 -58
  78. data/examples/api-samples/views/sample07.haml +52 -52
  79. data/examples/api-samples/views/sample08.haml +100 -100
  80. data/examples/api-samples/views/sample09.haml +95 -95
  81. data/examples/api-samples/views/sample10.haml +93 -93
  82. data/examples/api-samples/views/sample11.haml +140 -140
  83. data/examples/api-samples/views/sample12.haml +68 -68
  84. data/examples/api-samples/views/sample13.haml +64 -64
  85. data/examples/api-samples/views/sample14.haml +60 -60
  86. data/examples/api-samples/views/sample15.haml +51 -51
  87. data/examples/api-samples/views/sample16.haml +50 -50
  88. data/examples/api-samples/views/sample17.haml +54 -54
  89. data/examples/api-samples/views/sample18.haml +143 -143
  90. data/examples/api-samples/views/sample19.haml +92 -92
  91. data/examples/api-samples/views/sample20.haml +54 -54
  92. data/examples/api-samples/views/sample21.haml +123 -123
  93. data/examples/api-samples/views/sample22.haml +106 -106
  94. data/examples/api-samples/views/sample25.haml +101 -101
  95. data/examples/api-samples/views/sample31.haml +2 -2
  96. data/examples/api-samples/web.rb +20 -20
  97. data/examples/viewer/Gemfile +5 -5
  98. data/examples/viewer/app.rb +52 -52
  99. data/groupdocs.gemspec +31 -31
  100. data/lib/groupdocs.rb +62 -62
  101. data/lib/groupdocs/api.rb +6 -6
  102. data/lib/groupdocs/api/entity.rb +112 -112
  103. data/lib/groupdocs/api/helpers.rb +11 -11
  104. data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
  105. data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
  106. data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
  107. data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
  108. data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
  109. data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
  110. data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
  111. data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
  112. data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
  113. data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
  114. data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
  115. data/lib/groupdocs/api/request.rb +91 -91
  116. data/lib/groupdocs/datasource.rb +249 -249
  117. data/lib/groupdocs/datasource/field.rb +39 -39
  118. data/lib/groupdocs/document.rb +1550 -1550
  119. data/lib/groupdocs/document/annotation.rb +421 -421
  120. data/lib/groupdocs/document/annotation/reply.rb +173 -173
  121. data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
  122. data/lib/groupdocs/document/change.rb +56 -56
  123. data/lib/groupdocs/document/field.rb +53 -53
  124. data/lib/groupdocs/document/metadata.rb +32 -32
  125. data/lib/groupdocs/document/rectangle.rb +18 -18
  126. data/lib/groupdocs/document/view.rb +36 -36
  127. data/lib/groupdocs/errors.rb +8 -8
  128. data/lib/groupdocs/job.rb +468 -468
  129. data/lib/groupdocs/questionnaire.rb +530 -530
  130. data/lib/groupdocs/questionnaire/collector.rb +335 -335
  131. data/lib/groupdocs/questionnaire/execution.rb +181 -181
  132. data/lib/groupdocs/questionnaire/page.rb +43 -43
  133. data/lib/groupdocs/questionnaire/question.rb +108 -108
  134. data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
  135. data/lib/groupdocs/signature.rb +380 -380
  136. data/lib/groupdocs/signature/contact.rb +181 -181
  137. data/lib/groupdocs/signature/envelope.rb +747 -747
  138. data/lib/groupdocs/signature/envelope/log.rb +20 -20
  139. data/lib/groupdocs/signature/field.rb +286 -286
  140. data/lib/groupdocs/signature/field/location.rb +71 -71
  141. data/lib/groupdocs/signature/form.rb +804 -804
  142. data/lib/groupdocs/signature/list.rb +92 -92
  143. data/lib/groupdocs/signature/recipient.rb +79 -79
  144. data/lib/groupdocs/signature/role.rb +54 -54
  145. data/lib/groupdocs/signature/shared.rb +6 -6
  146. data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
  147. data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
  148. data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
  149. data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
  150. data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
  151. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
  152. data/lib/groupdocs/signature/template.rb +124 -124
  153. data/lib/groupdocs/storage.rb +44 -44
  154. data/lib/groupdocs/storage/file.rb +432 -432
  155. data/lib/groupdocs/storage/folder.rb +288 -288
  156. data/lib/groupdocs/storage/package.rb +48 -48
  157. data/lib/groupdocs/storage/provider.rb +32 -32
  158. data/lib/groupdocs/subscription.rb +323 -323
  159. data/lib/groupdocs/subscription/limit.rb +20 -20
  160. data/lib/groupdocs/user.rb +955 -930
  161. data/lib/groupdocs/version.rb +3 -3
  162. data/spec/groupdocs/api/entity_spec.rb +55 -55
  163. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
  164. data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
  165. data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
  166. data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
  167. data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
  168. data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
  169. data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
  170. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
  171. data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
  172. data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
  173. data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
  174. data/spec/groupdocs/api/request_spec.rb +112 -112
  175. data/spec/groupdocs/datasource/field_spec.rb +29 -29
  176. data/spec/groupdocs/datasource_spec.rb +145 -145
  177. data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
  178. data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
  179. data/spec/groupdocs/document/annotation_spec.rb +234 -234
  180. data/spec/groupdocs/document/change_spec.rb +39 -39
  181. data/spec/groupdocs/document/field_spec.rb +28 -28
  182. data/spec/groupdocs/document/metadata_spec.rb +21 -21
  183. data/spec/groupdocs/document/rectangle_spec.rb +14 -14
  184. data/spec/groupdocs/document/view_spec.rb +33 -33
  185. data/spec/groupdocs/document_spec.rb +859 -859
  186. data/spec/groupdocs/errors_spec.rb +7 -7
  187. data/spec/groupdocs/job_spec.rb +323 -323
  188. data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
  189. data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
  190. data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
  191. data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
  192. data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
  193. data/spec/groupdocs/questionnaire_spec.rb +295 -295
  194. data/spec/groupdocs/signature/contact_spec.rb +142 -142
  195. data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
  196. data/spec/groupdocs/signature/envelope_spec.rb +384 -384
  197. data/spec/groupdocs/signature/field/location_spec.rb +40 -40
  198. data/spec/groupdocs/signature/field_spec.rb +235 -235
  199. data/spec/groupdocs/signature/form_spec.rb +205 -205
  200. data/spec/groupdocs/signature/list_spec.rb +87 -87
  201. data/spec/groupdocs/signature/recipient_spec.rb +26 -26
  202. data/spec/groupdocs/signature/role_spec.rb +47 -47
  203. data/spec/groupdocs/signature/template_spec.rb +80 -80
  204. data/spec/groupdocs/signature_spec.rb +194 -194
  205. data/spec/groupdocs/storage/file_spec.rb +303 -303
  206. data/spec/groupdocs/storage/folder_spec.rb +270 -270
  207. data/spec/groupdocs/storage/package_spec.rb +38 -38
  208. data/spec/groupdocs/storage/provider_spec.rb +21 -21
  209. data/spec/groupdocs/storage_spec.rb +27 -27
  210. data/spec/groupdocs/subscription/limit_spec.rb +16 -16
  211. data/spec/groupdocs/subscription_spec.rb +74 -74
  212. data/spec/groupdocs/user_spec.rb +257 -257
  213. data/spec/groupdocs_spec.rb +63 -63
  214. data/spec/spec_helper.rb +73 -73
  215. data/spec/support/json/annotation_access_set.json +11 -11
  216. data/spec/support/json/annotation_collaborators_get.json +16 -16
  217. data/spec/support/json/annotation_collaborators_set.json +16 -16
  218. data/spec/support/json/annotation_create.json +12 -12
  219. data/spec/support/json/annotation_list.json +32 -32
  220. data/spec/support/json/annotation_marker_move.json +10 -10
  221. data/spec/support/json/annotation_move.json +8 -8
  222. data/spec/support/json/annotation_remove.json +9 -9
  223. data/spec/support/json/annotation_replies_create.json +9 -9
  224. data/spec/support/json/annotation_replies_get.json +25 -25
  225. data/spec/support/json/annotation_reviewers_get.json +18 -18
  226. data/spec/support/json/comparison_changes.json +46 -46
  227. data/spec/support/json/comparison_compare.json +8 -8
  228. data/spec/support/json/comparison_document.json +10 -10
  229. data/spec/support/json/contact_add.json +12 -12
  230. data/spec/support/json/contacts_get.json +19 -19
  231. data/spec/support/json/contacts_import.json +8 -8
  232. data/spec/support/json/datasource_add.json +8 -8
  233. data/spec/support/json/datasource_get.json +22 -22
  234. data/spec/support/json/datasource_remove.json +8 -8
  235. data/spec/support/json/datasource_update.json +8 -8
  236. data/spec/support/json/delete_account.json +9 -9
  237. data/spec/support/json/document_access_info_get.json +14 -14
  238. data/spec/support/json/document_convert.json +8 -8
  239. data/spec/support/json/document_datasource.json +10 -10
  240. data/spec/support/json/document_fields.json +34 -34
  241. data/spec/support/json/document_formats.json +8 -8
  242. data/spec/support/json/document_metadata.json +15 -15
  243. data/spec/support/json/document_page_images_get.json +20 -20
  244. data/spec/support/json/document_questionnaire_create.json +9 -9
  245. data/spec/support/json/document_questionnaires.json +23 -23
  246. data/spec/support/json/document_sharers_remove.json +8 -8
  247. data/spec/support/json/document_sharers_set.json +16 -16
  248. data/spec/support/json/document_thumbnails.json +24 -24
  249. data/spec/support/json/document_views.json +32 -32
  250. data/spec/support/json/envelope_get.json +46 -46
  251. data/spec/support/json/envelope_logs.json +16 -16
  252. data/spec/support/json/envelope_recipient_add.json +26 -26
  253. data/spec/support/json/envelopes_all.json +48 -48
  254. data/spec/support/json/envelopes_resources.json +31 -31
  255. data/spec/support/json/file_compress.json +8 -8
  256. data/spec/support/json/file_copy.json +14 -14
  257. data/spec/support/json/file_delete.json +5 -5
  258. data/spec/support/json/file_move.json +14 -14
  259. data/spec/support/json/file_upload.json +8 -8
  260. data/spec/support/json/folder_create.json +8 -8
  261. data/spec/support/json/folder_delete.json +5 -5
  262. data/spec/support/json/folder_list.json +22 -22
  263. data/spec/support/json/folder_move.json +8 -8
  264. data/spec/support/json/folder_sharers_get.json +16 -16
  265. data/spec/support/json/folder_sharers_remove.json +8 -8
  266. data/spec/support/json/folder_sharers_set.json +16 -16
  267. data/spec/support/json/form_get.json +21 -21
  268. data/spec/support/json/forms_all.json +23 -23
  269. data/spec/support/json/job_add_url.json +8 -8
  270. data/spec/support/json/job_create.json +8 -8
  271. data/spec/support/json/job_documents.json +40 -40
  272. data/spec/support/json/job_file_add.json +8 -8
  273. data/spec/support/json/job_get.json +30 -30
  274. data/spec/support/json/job_update.json +7 -7
  275. data/spec/support/json/jobs_get.json +58 -58
  276. data/spec/support/json/list_add.json +12 -12
  277. data/spec/support/json/lists_get.json +19 -19
  278. data/spec/support/json/package_create.json +7 -7
  279. data/spec/support/json/questionnaire_collector.json +17 -17
  280. data/spec/support/json/questionnaire_collectors.json +38 -38
  281. data/spec/support/json/questionnaire_collectors_add.json +10 -10
  282. data/spec/support/json/questionnaire_create.json +10 -10
  283. data/spec/support/json/questionnaire_datasources.json +26 -26
  284. data/spec/support/json/questionnaire_execution_add.json +9 -9
  285. data/spec/support/json/questionnaire_execution_status_set.json +8 -8
  286. data/spec/support/json/questionnaire_execution_update.json +8 -8
  287. data/spec/support/json/questionnaire_executions.json +28 -28
  288. data/spec/support/json/questionnaire_get.json +17 -17
  289. data/spec/support/json/questionnaire_remove.json +8 -8
  290. data/spec/support/json/questionnaire_update.json +8 -8
  291. data/spec/support/json/questionnaires_get.json +40 -40
  292. data/spec/support/json/sign_documents.json +16 -16
  293. data/spec/support/json/signature_create.json +12 -12
  294. data/spec/support/json/signature_field_add.json +25 -25
  295. data/spec/support/json/signature_fields_get.json +27 -27
  296. data/spec/support/json/signature_roles_get.json +17 -17
  297. data/spec/support/json/signatures_get.json +19 -19
  298. data/spec/support/json/storage_info.json +10 -10
  299. data/spec/support/json/subscription_plan_get.json +9 -9
  300. data/spec/support/json/subscription_plans_get.json +17 -17
  301. data/spec/support/json/template_get.json +35 -35
  302. data/spec/support/json/template_get_documents.json +15 -15
  303. data/spec/support/json/template_get_recipients.json +20 -20
  304. data/spec/support/json/templates_all.json +37 -37
  305. data/spec/support/json/templates_get.json +21 -21
  306. data/spec/support/json/update_account.json +10 -10
  307. data/spec/support/json/user_area.json +67 -67
  308. data/spec/support/json/user_embed_key.json +38 -38
  309. data/spec/support/json/user_get_embed_key.json +67 -67
  310. data/spec/support/json/user_login.json +67 -67
  311. data/spec/support/json/user_profile_get.json +24 -24
  312. data/spec/support/json/user_providers.json +31 -31
  313. data/spec/support/json/user_roles.json +25 -25
  314. data/spec/support/json/user_users_get.json +27 -27
  315. data/spec/support/shared_examples/api/entity.rb +39 -39
  316. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
  317. data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
  318. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
  319. data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
  320. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
  321. data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
  322. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
  323. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
  324. metadata +35 -55
@@ -1,154 +1,154 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Document::Annotation::Reply do
4
-
5
- it_behaves_like GroupDocs::Api::Entity
6
-
7
- subject do
8
- file = GroupDocs::Storage::File.new
9
- document = GroupDocs::Document.new(:file => file)
10
- annotation = GroupDocs::Document::Annotation.new(:document => document)
11
- described_class.new(:annotation => annotation)
12
- end
13
-
14
- describe '.get!' do
15
- before(:each) do
16
- mock_api_server(load_json('annotation_replies_get'))
17
- end
18
-
19
- let(:annotation) do
20
- document = GroupDocs::Document.new(:file => GroupDocs::Storage::File.new)
21
- GroupDocs::Document::Annotation.new(:document => document)
22
- end
23
-
24
- it 'accepts access credentials hash' do
25
- lambda do
26
- described_class.get!(annotation, {}, :client_id => 'client_id', :private_key => 'private_key')
27
- end.should_not raise_error()
28
- end
29
-
30
- it 'accepts options hash' do
31
- lambda do
32
- described_class.get!(annotation, :after => Time.now)
33
- end.should_not raise_error()
34
- end
35
-
36
- it 'raises error if annotation is not an instance of GroupDocs::Document::Annotation' do
37
- lambda { described_class.get!('Annotation') }.should raise_error(ArgumentError)
38
- end
39
-
40
- it 'raises error if option :after is not an instance of Time' do
41
- lambda { described_class.get!(annotation, :after => 'Yesterday') }.should raise_error(ArgumentError)
42
- end
43
-
44
- it 'converts option :after to Unix timestamp' do
45
- time = Time.now
46
- time.should_receive(:to_i).and_return(1334125808)
47
- described_class.get!(annotation, :after => time)
48
- end
49
-
50
- it 'returns an array of GroupDocs::Document::Annotation::Reply objects' do
51
- replies = described_class.get!(annotation)
52
- replies.should be_an(Array)
53
- replies.each do |reply|
54
- reply.should be_a(GroupDocs::Document::Annotation::Reply)
55
- end
56
- end
57
- end
58
-
59
- it { should have_accessor(:annotation) }
60
- it { should have_accessor(:text) }
61
- it { should have_accessor(:guid) }
62
- it { should have_accessor(:annotationGuid) }
63
- it { should have_accessor(:userGuid) }
64
- it { should have_accessor(:userName) }
65
- it { should have_accessor(:text) }
66
- it { should have_accessor(:repliedOn) }
67
-
68
- it { should alias_accessor(:annotation_guid, :annotationGuid) }
69
- it { should alias_accessor(:user_guid, :userGuid) }
70
- it { should alias_accessor(:user_name, :userName) }
71
- # Reply#replied_on is overwritten
72
- it { should have_alias(:replied_on=, :repliedOn=) }
73
-
74
-
75
- describe '#initialize' do
76
- it 'raises error if annotation is not specified' do
77
- lambda { described_class.new }.should raise_error(ArgumentError)
78
- end
79
-
80
- it 'raises error if annotation is not an instance of GroupDocs::Document::Annotation' do
81
- lambda { described_class.new(:annotation => '') }.should raise_error(ArgumentError)
82
- end
83
- end
84
-
85
- describe '#replied_on' do
86
- it 'returns converted to Time object Unix timestamp' do
87
- subject.replied_on = 1332950825000
88
- subject.replied_on.should == Time.at(1332950825)
89
- end
90
- end
91
-
92
- describe '#create!' do
93
- before(:each) do
94
- mock_api_server(load_json('annotation_replies_create'))
95
- end
96
-
97
- it 'accepts access credentials hash' do
98
- lambda do
99
- subject.create!(:client_id => 'client_id', :private_key => 'private_key')
100
- end.should_not raise_error()
101
- end
102
-
103
- it 'gets annotation guid' do
104
- subject.should_receive(:get_annotation_guid)
105
- subject.create!
106
- end
107
-
108
- it 'updates guid and annotation_guid with response' do
109
- lambda do
110
- subject.create!
111
- end.should change {
112
- subject.guid
113
- subject.annotation_guid
114
- }
115
- end
116
- end
117
-
118
- describe '#edit!' do
119
- before(:each) do
120
- mock_api_server('{ "result": {}, "status": "Ok" }')
121
- end
122
-
123
- it 'accepts access credentials hash' do
124
- lambda do
125
- subject.edit!(:client_id => 'client_id', :private_key => 'private_key')
126
- end.should_not raise_error()
127
- end
128
- end
129
-
130
- describe '#remove!' do
131
- before(:each) do
132
- mock_api_server('{ "result": {}, "status": "Ok" }')
133
- end
134
-
135
- it 'accepts access credentials hash' do
136
- lambda do
137
- subject.remove!(:client_id => 'client_id', :private_key => 'private_key')
138
- end.should_not raise_error()
139
- end
140
- end
141
-
142
- describe '#get_annotation_guid' do
143
- it 'prefers annotation_guid over annotation.guid' do
144
- subject.annotation_guid = 'abc'
145
- subject.annotation.guid = 'def'
146
- subject.send(:get_annotation_guid).should == 'abc'
147
- end
148
-
149
- it 'returns annotation.guid if annotation_guid is not set' do
150
- subject.annotation.guid = 'def'
151
- subject.send(:get_annotation_guid).should == 'def'
152
- end
153
- end
154
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Document::Annotation::Reply do
4
+
5
+ it_behaves_like GroupDocs::Api::Entity
6
+
7
+ subject do
8
+ file = GroupDocs::Storage::File.new
9
+ document = GroupDocs::Document.new(:file => file)
10
+ annotation = GroupDocs::Document::Annotation.new(:document => document)
11
+ described_class.new(:annotation => annotation)
12
+ end
13
+
14
+ describe '.get!' do
15
+ before(:each) do
16
+ mock_api_server(load_json('annotation_replies_get'))
17
+ end
18
+
19
+ let(:annotation) do
20
+ document = GroupDocs::Document.new(:file => GroupDocs::Storage::File.new)
21
+ GroupDocs::Document::Annotation.new(:document => document)
22
+ end
23
+
24
+ it 'accepts access credentials hash' do
25
+ lambda do
26
+ described_class.get!(annotation, {}, :client_id => 'client_id', :private_key => 'private_key')
27
+ end.should_not raise_error()
28
+ end
29
+
30
+ it 'accepts options hash' do
31
+ lambda do
32
+ described_class.get!(annotation, :after => Time.now)
33
+ end.should_not raise_error()
34
+ end
35
+
36
+ it 'raises error if annotation is not an instance of GroupDocs::Document::Annotation' do
37
+ lambda { described_class.get!('Annotation') }.should raise_error(ArgumentError)
38
+ end
39
+
40
+ it 'raises error if option :after is not an instance of Time' do
41
+ lambda { described_class.get!(annotation, :after => 'Yesterday') }.should raise_error(ArgumentError)
42
+ end
43
+
44
+ it 'converts option :after to Unix timestamp' do
45
+ time = Time.now
46
+ time.should_receive(:to_i).and_return(1334125808)
47
+ described_class.get!(annotation, :after => time)
48
+ end
49
+
50
+ it 'returns an array of GroupDocs::Document::Annotation::Reply objects' do
51
+ replies = described_class.get!(annotation)
52
+ replies.should be_an(Array)
53
+ replies.each do |reply|
54
+ reply.should be_a(GroupDocs::Document::Annotation::Reply)
55
+ end
56
+ end
57
+ end
58
+
59
+ it { should have_accessor(:annotation) }
60
+ it { should have_accessor(:text) }
61
+ it { should have_accessor(:guid) }
62
+ it { should have_accessor(:annotationGuid) }
63
+ it { should have_accessor(:userGuid) }
64
+ it { should have_accessor(:userName) }
65
+ it { should have_accessor(:text) }
66
+ it { should have_accessor(:repliedOn) }
67
+
68
+ it { should alias_accessor(:annotation_guid, :annotationGuid) }
69
+ it { should alias_accessor(:user_guid, :userGuid) }
70
+ it { should alias_accessor(:user_name, :userName) }
71
+ # Reply#replied_on is overwritten
72
+ it { should have_alias(:replied_on=, :repliedOn=) }
73
+
74
+
75
+ describe '#initialize' do
76
+ it 'raises error if annotation is not specified' do
77
+ lambda { described_class.new }.should raise_error(ArgumentError)
78
+ end
79
+
80
+ it 'raises error if annotation is not an instance of GroupDocs::Document::Annotation' do
81
+ lambda { described_class.new(:annotation => '') }.should raise_error(ArgumentError)
82
+ end
83
+ end
84
+
85
+ describe '#replied_on' do
86
+ it 'returns converted to Time object Unix timestamp' do
87
+ subject.replied_on = 1332950825000
88
+ subject.replied_on.should == Time.at(1332950825)
89
+ end
90
+ end
91
+
92
+ describe '#create!' do
93
+ before(:each) do
94
+ mock_api_server(load_json('annotation_replies_create'))
95
+ end
96
+
97
+ it 'accepts access credentials hash' do
98
+ lambda do
99
+ subject.create!(:client_id => 'client_id', :private_key => 'private_key')
100
+ end.should_not raise_error()
101
+ end
102
+
103
+ it 'gets annotation guid' do
104
+ subject.should_receive(:get_annotation_guid)
105
+ subject.create!
106
+ end
107
+
108
+ it 'updates guid and annotation_guid with response' do
109
+ lambda do
110
+ subject.create!
111
+ end.should change {
112
+ subject.guid
113
+ subject.annotation_guid
114
+ }
115
+ end
116
+ end
117
+
118
+ describe '#edit!' do
119
+ before(:each) do
120
+ mock_api_server('{ "result": {}, "status": "Ok" }')
121
+ end
122
+
123
+ it 'accepts access credentials hash' do
124
+ lambda do
125
+ subject.edit!(:client_id => 'client_id', :private_key => 'private_key')
126
+ end.should_not raise_error()
127
+ end
128
+ end
129
+
130
+ describe '#remove!' do
131
+ before(:each) do
132
+ mock_api_server('{ "result": {}, "status": "Ok" }')
133
+ end
134
+
135
+ it 'accepts access credentials hash' do
136
+ lambda do
137
+ subject.remove!(:client_id => 'client_id', :private_key => 'private_key')
138
+ end.should_not raise_error()
139
+ end
140
+ end
141
+
142
+ describe '#get_annotation_guid' do
143
+ it 'prefers annotation_guid over annotation.guid' do
144
+ subject.annotation_guid = 'abc'
145
+ subject.annotation.guid = 'def'
146
+ subject.send(:get_annotation_guid).should == 'abc'
147
+ end
148
+
149
+ it 'returns annotation.guid if annotation_guid is not set' do
150
+ subject.annotation.guid = 'def'
151
+ subject.send(:get_annotation_guid).should == 'def'
152
+ end
153
+ end
154
+ end
@@ -1,51 +1,51 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Document::Annotation::Reviewer do
4
-
5
- it_behaves_like GroupDocs::Api::Entity
6
-
7
- describe '.all!' do
8
- before(:each) do
9
- mock_api_server(load_json('annotation_reviewers_get'))
10
- end
11
-
12
- it 'accepts access credentials hash' do
13
- lambda do
14
- described_class.all!(:client_id => 'client_id', :private_key => 'private_key')
15
- end.should_not raise_error()
16
- end
17
-
18
- it 'returns an array of GroupDocs::Document::Annotation::Reviewer objects' do
19
- reviewers = described_class.all!
20
- reviewers.should be_an(Array)
21
- reviewers.each do |reviewer|
22
- reviewer.should be_a(GroupDocs::Document::Annotation::Reviewer)
23
- end
24
- end
25
- end
26
-
27
- describe '.set!' do
28
- before(:each) do
29
- mock_api_server(load_json('annotation_reviewers_get'))
30
- end
31
-
32
- let!(:reviewers) { [described_class.new(:email_address => 'test@test.com')] }
33
-
34
- it 'accepts access credentials hash' do
35
- lambda do
36
- described_class.set!(reviewers, :client_id => 'client_id', :private_key => 'private_key')
37
- end.should_not raise_error()
38
- end
39
-
40
- it 'uses hashed version of reviewers' do
41
- reviewers.each do |reviewer|
42
- reviewer.should_receive(:to_hash)
43
- end
44
- described_class.set! reviewers
45
- end
46
- end
47
-
48
- it { should have_accessor(:emailAddress) }
49
-
50
- it { should alias_accessor(:email_address, :emailAddress) }
51
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Document::Annotation::Reviewer do
4
+
5
+ it_behaves_like GroupDocs::Api::Entity
6
+
7
+ describe '.all!' do
8
+ before(:each) do
9
+ mock_api_server(load_json('annotation_reviewers_get'))
10
+ end
11
+
12
+ it 'accepts access credentials hash' do
13
+ lambda do
14
+ described_class.all!(:client_id => 'client_id', :private_key => 'private_key')
15
+ end.should_not raise_error()
16
+ end
17
+
18
+ it 'returns an array of GroupDocs::Document::Annotation::Reviewer objects' do
19
+ reviewers = described_class.all!
20
+ reviewers.should be_an(Array)
21
+ reviewers.each do |reviewer|
22
+ reviewer.should be_a(GroupDocs::Document::Annotation::Reviewer)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '.set!' do
28
+ before(:each) do
29
+ mock_api_server(load_json('annotation_reviewers_get'))
30
+ end
31
+
32
+ let!(:reviewers) { [described_class.new(:email_address => 'test@test.com')] }
33
+
34
+ it 'accepts access credentials hash' do
35
+ lambda do
36
+ described_class.set!(reviewers, :client_id => 'client_id', :private_key => 'private_key')
37
+ end.should_not raise_error()
38
+ end
39
+
40
+ it 'uses hashed version of reviewers' do
41
+ reviewers.each do |reviewer|
42
+ reviewer.should_receive(:to_hash)
43
+ end
44
+ described_class.set! reviewers
45
+ end
46
+ end
47
+
48
+ it { should have_accessor(:emailAddress) }
49
+
50
+ it { should alias_accessor(:email_address, :emailAddress) }
51
+ end
@@ -1,234 +1,234 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Document::Annotation do
4
-
5
- it_behaves_like GroupDocs::Api::Entity
6
- include_examples GroupDocs::Api::Helpers::AccessMode
7
-
8
- subject do
9
- file = GroupDocs::Storage::File.new
10
- document = GroupDocs::Document.new(:file => file)
11
- described_class.new(:document => document)
12
- end
13
-
14
- it { should have_accessor(:document) }
15
- it { should have_accessor(:id) }
16
- it { should have_accessor(:guid) }
17
- it { should have_accessor(:sessionGuid) }
18
- it { should have_accessor(:documentGuid) }
19
- it { should have_accessor(:creatorGuid) }
20
- it { should have_accessor(:replyGuid) }
21
- it { should have_accessor(:createdOn) }
22
- it { should have_accessor(:type) }
23
- it { should have_accessor(:access) }
24
- it { should have_accessor(:box) }
25
- it { should have_accessor(:replies) }
26
- it { should have_accessor(:annotationPosition) }
27
-
28
- it { should alias_accessor(:session_guid, :sessionGuid) }
29
- it { should alias_accessor(:document_guid, :documentGuid) }
30
- it { should alias_accessor(:creator_guid, :creatorGuid) }
31
- it { should alias_accessor(:reply_guid, :replyGuid) }
32
- # Annotation#created_on is overwritten
33
- it { should have_alias(:created_on=, :createdOn=) }
34
- it { should alias_accessor(:annotation_position, :annotationPosition) }
35
-
36
- it { should have_alias(:annotationGuid=, :guid=) }
37
-
38
- describe '#initialize' do
39
- it 'raises error if document is not specified' do
40
- lambda { described_class.new }.should raise_error(ArgumentError)
41
- end
42
-
43
- it 'raises error if document is not an instance of GroupDocs::Document' do
44
- lambda { described_class.new(:document => '') }.should raise_error(ArgumentError)
45
- end
46
- end
47
-
48
- describe '#type=' do
49
- it 'saves type in machine readable format if symbol is passed' do
50
- subject.type = :text_strikeout
51
- subject.instance_variable_get(:@type).should == 'TextStrikeout'
52
- end
53
-
54
- it 'does nothing if parameter is not symbol' do
55
- subject.type = 'Area'
56
- subject.instance_variable_get(:@type).should == 'Area'
57
- end
58
-
59
- it 'raises error if type is unknown' do
60
- lambda { subject.type = :unknown }.should raise_error(ArgumentError)
61
- end
62
- end
63
-
64
- describe '#type' do
65
- it 'returns type in human-readable format' do
66
- subject.type = 'TextStrikeout'
67
- subject.type.should == :text_strikeout
68
- end
69
- end
70
-
71
- describe '#access=' do
72
- it 'converts symbol to string if passed' do
73
- subject.access = :public
74
- subject.instance_variable_get(:@access).should == 'Public'
75
- end
76
-
77
- it 'does nothing if not a symbol is passed' do
78
- subject.access = 'Blah'
79
- subject.instance_variable_get(:@access).should == 'Blah'
80
- end
81
- end
82
-
83
- describe '#created_on' do
84
- it 'returns converted to Time object Unix timestamp' do
85
- subject.created_on = 1332950825000
86
- subject.created_on.should == Time.at(1332950825)
87
- end
88
- end
89
-
90
- describe '#box=' do
91
- it 'converts passed hash to GroupDocs::Document::Rectangle object' do
92
- subject.box = { :x => 0.90, :y => 0.05, :width => 0.06745, :height => 0.005967 }
93
- subject.box.should be_a(GroupDocs::Document::Rectangle)
94
- subject.box.x.should == 0.90
95
- subject.box.y.should == 0.05
96
- subject.box.w.should == 0.06745
97
- subject.box.h.should == 0.005967
98
- end
99
- end
100
-
101
- describe '#replies=' do
102
- it 'converts each reply to GroupDocs::Document::Annotation::Reply object if hash is passed' do
103
- subject.replies = [{ }]
104
- replies = subject.replies
105
- replies.should be_an(Array)
106
- replies.each do |reply|
107
- reply.should be_a(GroupDocs::Document::Annotation::Reply)
108
- reply.annotation.should == subject
109
- end
110
- end
111
-
112
- it 'saves each reply if it is GroupDocs::Document::Annotation::Reply object' do
113
- reply1 = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
114
- reply2 = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
115
- subject.replies = [reply1, reply2]
116
- subject.replies.should include(reply1)
117
- subject.replies.should include(reply2)
118
- end
119
-
120
- it 'does nothing if nil is passed' do
121
- lambda do
122
- subject.replies = nil
123
- end.should_not change(subject, :replies)
124
- end
125
- end
126
-
127
- describe '#add_reply' do
128
- it 'raises error if reply is not GroupDocs::Document::Annotation::Reply object' do
129
- lambda { subject.add_reply('Reply') }.should raise_error(ArgumentError)
130
- end
131
-
132
- it 'saves reply' do
133
- reply = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
134
- subject.add_reply(reply)
135
- subject.replies.should == [reply]
136
- end
137
- end
138
-
139
- describe '#create!' do
140
- before(:each) do
141
- mock_api_server(load_json('annotation_create'))
142
- end
143
-
144
- it 'accepts access credentials hash' do
145
- lambda do
146
- subject.create!(%w(info), :client_id => 'client_id', :private_key => 'private_key')
147
- end.should_not raise_error()
148
- end
149
-
150
- it 'updated self with response values' do
151
- lambda do
152
- subject.create! :box => '10', :annotationPosition => '100'
153
- end.should change {
154
- subject.id
155
- subject.guid
156
- subject.document_guid
157
- subject.reply_guid
158
- subject.session_guid
159
- }
160
- end
161
- end
162
-
163
- describe '#remove!' do
164
- before(:each) do
165
- mock_api_server(load_json('annotation_remove'))
166
- end
167
-
168
- it 'accepts access credentials hash' do
169
- lambda do
170
- subject.remove!(:client_id => 'client_id', :private_key => 'private_key')
171
- end.should_not raise_error()
172
- end
173
- end
174
-
175
- describe '#replies!' do
176
- it 'calls GroupDocs::Document::Annotation::Reply.get!' do
177
- GroupDocs::Document::Annotation::Reply.should_receive(:get!).with(subject, {}, {})
178
- subject.replies!
179
- end
180
- end
181
-
182
- describe '#move!' do
183
- before(:each) do
184
- mock_api_server(load_json('annotation_move'))
185
- end
186
-
187
- it 'accepts access credentials hash' do
188
- lambda do
189
- subject.move!(10, 10, :client_id => 'client_id', :private_key => 'private_key')
190
- end.should_not raise_error()
191
- end
192
-
193
- it 'updates annotation position' do
194
- lambda do
195
- subject.move!(10, 10)
196
- end.should change(subject, :annotation_position).to(:x => 10, :y => 10)
197
- end
198
- end
199
-
200
- describe '#move_marker!' do
201
- before(:each) do
202
- mock_api_server('{ "status": "Ok", "result": {}}')
203
- end
204
-
205
- let(:marker) { GroupDocs::Document::Annotation::MarkerPosition.new(:position => {:x => 1, :y => 1}, :page=>1)}
206
- 1
207
- it 'accepts access credentials hash' do
208
- lambda do
209
- subject.move_marker!(marker, :client_id => 'client_id', :private_key => 'private_key')
210
- end.should_not raise_error()
211
- end
212
- it 'raises error if marker is not GroupDocs::Document::Annotation::MarkerPosition object' do
213
- lambda { subject.move_marker!(['MarkerPosition']) }.should raise_error(ArgumentError)
214
- end
215
-
216
- end
217
-
218
- describe '#set_access!' do
219
- before(:each) do
220
- mock_api_server(load_json('annotation_access_set'))
221
- end
222
-
223
- it 'accepts access credentials hash' do
224
- lambda do
225
- subject.set_access!(:private, :client_id => 'client_id', :private_key => 'private_key')
226
- end.should_not raise_error()
227
- end
228
-
229
- it 'updates annotation access mode' do
230
- subject.set_access!(:private)
231
- subject.access.should == :private
232
- end
233
- end
234
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Document::Annotation do
4
+
5
+ it_behaves_like GroupDocs::Api::Entity
6
+ include_examples GroupDocs::Api::Helpers::AccessMode
7
+
8
+ subject do
9
+ file = GroupDocs::Storage::File.new
10
+ document = GroupDocs::Document.new(:file => file)
11
+ described_class.new(:document => document)
12
+ end
13
+
14
+ it { should have_accessor(:document) }
15
+ it { should have_accessor(:id) }
16
+ it { should have_accessor(:guid) }
17
+ it { should have_accessor(:sessionGuid) }
18
+ it { should have_accessor(:documentGuid) }
19
+ it { should have_accessor(:creatorGuid) }
20
+ it { should have_accessor(:replyGuid) }
21
+ it { should have_accessor(:createdOn) }
22
+ it { should have_accessor(:type) }
23
+ it { should have_accessor(:access) }
24
+ it { should have_accessor(:box) }
25
+ it { should have_accessor(:replies) }
26
+ it { should have_accessor(:annotationPosition) }
27
+
28
+ it { should alias_accessor(:session_guid, :sessionGuid) }
29
+ it { should alias_accessor(:document_guid, :documentGuid) }
30
+ it { should alias_accessor(:creator_guid, :creatorGuid) }
31
+ it { should alias_accessor(:reply_guid, :replyGuid) }
32
+ # Annotation#created_on is overwritten
33
+ it { should have_alias(:created_on=, :createdOn=) }
34
+ it { should alias_accessor(:annotation_position, :annotationPosition) }
35
+
36
+ it { should have_alias(:annotationGuid=, :guid=) }
37
+
38
+ describe '#initialize' do
39
+ it 'raises error if document is not specified' do
40
+ lambda { described_class.new }.should raise_error(ArgumentError)
41
+ end
42
+
43
+ it 'raises error if document is not an instance of GroupDocs::Document' do
44
+ lambda { described_class.new(:document => '') }.should raise_error(ArgumentError)
45
+ end
46
+ end
47
+
48
+ describe '#type=' do
49
+ it 'saves type in machine readable format if symbol is passed' do
50
+ subject.type = :text_strikeout
51
+ subject.instance_variable_get(:@type).should == 'TextStrikeout'
52
+ end
53
+
54
+ it 'does nothing if parameter is not symbol' do
55
+ subject.type = 'Area'
56
+ subject.instance_variable_get(:@type).should == 'Area'
57
+ end
58
+
59
+ it 'raises error if type is unknown' do
60
+ lambda { subject.type = :unknown }.should raise_error(ArgumentError)
61
+ end
62
+ end
63
+
64
+ describe '#type' do
65
+ it 'returns type in human-readable format' do
66
+ subject.type = 'TextStrikeout'
67
+ subject.type.should == :text_strikeout
68
+ end
69
+ end
70
+
71
+ describe '#access=' do
72
+ it 'converts symbol to string if passed' do
73
+ subject.access = :public
74
+ subject.instance_variable_get(:@access).should == 'Public'
75
+ end
76
+
77
+ it 'does nothing if not a symbol is passed' do
78
+ subject.access = 'Blah'
79
+ subject.instance_variable_get(:@access).should == 'Blah'
80
+ end
81
+ end
82
+
83
+ describe '#created_on' do
84
+ it 'returns converted to Time object Unix timestamp' do
85
+ subject.created_on = 1332950825000
86
+ subject.created_on.should == Time.at(1332950825)
87
+ end
88
+ end
89
+
90
+ describe '#box=' do
91
+ it 'converts passed hash to GroupDocs::Document::Rectangle object' do
92
+ subject.box = { :x => 0.90, :y => 0.05, :width => 0.06745, :height => 0.005967 }
93
+ subject.box.should be_a(GroupDocs::Document::Rectangle)
94
+ subject.box.x.should == 0.90
95
+ subject.box.y.should == 0.05
96
+ subject.box.w.should == 0.06745
97
+ subject.box.h.should == 0.005967
98
+ end
99
+ end
100
+
101
+ describe '#replies=' do
102
+ it 'converts each reply to GroupDocs::Document::Annotation::Reply object if hash is passed' do
103
+ subject.replies = [{ }]
104
+ replies = subject.replies
105
+ replies.should be_an(Array)
106
+ replies.each do |reply|
107
+ reply.should be_a(GroupDocs::Document::Annotation::Reply)
108
+ reply.annotation.should == subject
109
+ end
110
+ end
111
+
112
+ it 'saves each reply if it is GroupDocs::Document::Annotation::Reply object' do
113
+ reply1 = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
114
+ reply2 = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
115
+ subject.replies = [reply1, reply2]
116
+ subject.replies.should include(reply1)
117
+ subject.replies.should include(reply2)
118
+ end
119
+
120
+ it 'does nothing if nil is passed' do
121
+ lambda do
122
+ subject.replies = nil
123
+ end.should_not change(subject, :replies)
124
+ end
125
+ end
126
+
127
+ describe '#add_reply' do
128
+ it 'raises error if reply is not GroupDocs::Document::Annotation::Reply object' do
129
+ lambda { subject.add_reply('Reply') }.should raise_error(ArgumentError)
130
+ end
131
+
132
+ it 'saves reply' do
133
+ reply = GroupDocs::Document::Annotation::Reply.new(:annotation => subject)
134
+ subject.add_reply(reply)
135
+ subject.replies.should == [reply]
136
+ end
137
+ end
138
+
139
+ describe '#create!' do
140
+ before(:each) do
141
+ mock_api_server(load_json('annotation_create'))
142
+ end
143
+
144
+ it 'accepts access credentials hash' do
145
+ lambda do
146
+ subject.create!(%w(info), :client_id => 'client_id', :private_key => 'private_key')
147
+ end.should_not raise_error()
148
+ end
149
+
150
+ it 'updated self with response values' do
151
+ lambda do
152
+ subject.create! :box => '10', :annotationPosition => '100'
153
+ end.should change {
154
+ subject.id
155
+ subject.guid
156
+ subject.document_guid
157
+ subject.reply_guid
158
+ subject.session_guid
159
+ }
160
+ end
161
+ end
162
+
163
+ describe '#remove!' do
164
+ before(:each) do
165
+ mock_api_server(load_json('annotation_remove'))
166
+ end
167
+
168
+ it 'accepts access credentials hash' do
169
+ lambda do
170
+ subject.remove!(:client_id => 'client_id', :private_key => 'private_key')
171
+ end.should_not raise_error()
172
+ end
173
+ end
174
+
175
+ describe '#replies!' do
176
+ it 'calls GroupDocs::Document::Annotation::Reply.get!' do
177
+ GroupDocs::Document::Annotation::Reply.should_receive(:get!).with(subject, {}, {})
178
+ subject.replies!
179
+ end
180
+ end
181
+
182
+ describe '#move!' do
183
+ before(:each) do
184
+ mock_api_server(load_json('annotation_move'))
185
+ end
186
+
187
+ it 'accepts access credentials hash' do
188
+ lambda do
189
+ subject.move!(10, 10, :client_id => 'client_id', :private_key => 'private_key')
190
+ end.should_not raise_error()
191
+ end
192
+
193
+ it 'updates annotation position' do
194
+ lambda do
195
+ subject.move!(10, 10)
196
+ end.should change(subject, :annotation_position).to(:x => 10, :y => 10)
197
+ end
198
+ end
199
+
200
+ describe '#move_marker!' do
201
+ before(:each) do
202
+ mock_api_server('{ "status": "Ok", "result": {}}')
203
+ end
204
+
205
+ let(:marker) { GroupDocs::Document::Annotation::MarkerPosition.new(:position => {:x => 1, :y => 1}, :page=>1)}
206
+ 1
207
+ it 'accepts access credentials hash' do
208
+ lambda do
209
+ subject.move_marker!(marker, :client_id => 'client_id', :private_key => 'private_key')
210
+ end.should_not raise_error()
211
+ end
212
+ it 'raises error if marker is not GroupDocs::Document::Annotation::MarkerPosition object' do
213
+ lambda { subject.move_marker!(['MarkerPosition']) }.should raise_error(ArgumentError)
214
+ end
215
+
216
+ end
217
+
218
+ describe '#set_access!' do
219
+ before(:each) do
220
+ mock_api_server(load_json('annotation_access_set'))
221
+ end
222
+
223
+ it 'accepts access credentials hash' do
224
+ lambda do
225
+ subject.set_access!(:private, :client_id => 'client_id', :private_key => 'private_key')
226
+ end.should_not raise_error()
227
+ end
228
+
229
+ it 'updates annotation access mode' do
230
+ subject.set_access!(:private)
231
+ subject.access.should == :private
232
+ end
233
+ end
234
+ end