spec/groupdocs/document_spec.rb in groupdocs-1.1.0 vs spec/groupdocs/document_spec.rb in groupdocs-1.2.0

- old
+ new

@@ -28,21 +28,108 @@ view.should be_a(GroupDocs::Document::View) end end end - it { should respond_to(:file) } - it { should respond_to(:file=) } - it { should respond_to(:process_date) } - it { should respond_to(:process_date=) } - it { should respond_to(:outputs) } - it { should respond_to(:outputs=) } - it { should respond_to(:output_formats) } - it { should respond_to(:output_formats=) } - it { should respond_to(:order) } - it { should respond_to(:order=) } + describe '.templates!' do + before(:each) do + mock_api_server(load_json('templates_get')) + end + it 'accepts access credentials hash' do + lambda do + described_class.templates!(client_id: 'client_id', private_key: 'private_key') + end.should_not raise_error(ArgumentError) + end + + it 'returns an array of GroupDocs::Document objects' do + templates = described_class.templates! + templates.should be_an(Array) + templates.each do |template| + template.should be_a(GroupDocs::Document) + end + end + end + + describe '.sign_documents!' do + before(:each) do + mock_api_server(load_json('sign_documents')) + end + + let(:documents) do + [GroupDocs::Document.new(file: GroupDocs::Storage::File.new(name: 'Document1', local_path: __FILE__)), + GroupDocs::Document.new(file: GroupDocs::Storage::File.new(name: 'Document2', local_path: 'spec/support/files/resume.pdf'))] + end + let(:signatures) { [GroupDocs::Signature.new(name: 'John Smith', image_path: 'spec/support/files/signature.png', position: {})] } + + it 'accepts access credentials hash' do + lambda do + described_class.sign_documents!(documents, signatures, {}, client_id: 'client_id', private_key: 'private_key') + end.should_not raise_error(ArgumentError) + end + + it 'raises error if document is not GroupDocs::Document object' do + -> { described_class.sign_documents!(['Document'], signatures) }.should raise_error(ArgumentError) + end + + it 'raises error if document file does not have name' do + documents = [GroupDocs::Document.new(file: GroupDocs::Storage::File.new(local_path: __FILE__))] + -> { described_class.sign_documents!(documents, signatures) }.should raise_error(ArgumentError) + end + + it 'raises error if document file does not have local path' do + documents = [GroupDocs::Document.new(file: GroupDocs::Storage::File.new(name: 'Document'))] + -> { described_class.sign_documents!(documents, signatures) }.should raise_error(ArgumentError) + end + + it 'raises error if signature is not GroupDocs::Signature object' do + -> { described_class.sign_documents!(documents, ['Signature']) }.should raise_error(ArgumentError) + end + + it 'raises error if signature does not have name' do + signatures = [GroupDocs::Signature.new(image_path: __FILE__, position: {})] + -> { described_class.sign_documents!(documents, signatures) }.should raise_error(ArgumentError) + end + + it 'raises error if signature does not have image path' do + signatures = [GroupDocs::Signature.new(name: 'John Smith', position: {})] + -> { described_class.sign_documents!(documents, signatures) }.should raise_error(ArgumentError) + end + + it 'raises error if signature does not have position' do + signatures = [GroupDocs::Signature.new(name: 'John Smith', image_path: __FILE__)] + -> { described_class.sign_documents!(documents, signatures) }.should raise_error(ArgumentError) + end + + it 'detects each document and signature file MIME type' do + documents.each { |document| described_class.should_receive(:mime_type).with(document.file.local_path).once } + signatures.each { |signature| described_class.should_receive(:mime_type).with(signature.image_path).once } + described_class.sign_documents!(documents, signatures) + end + + it 'returns array of GroupDocs::Document.objects' do + signed_documents = described_class.sign_documents!(documents, signatures) + signed_documents.should be_an(Array) + signed_documents.each do |document| + document.should be_a(GroupDocs::Document) + end + end + + it 'calculates file name for each signed document' do + signed_documents = described_class.sign_documents!(documents, signatures) + signed_documents[0].file.name.should == "#{documents[0].file.name}_signed.pdf" + signed_documents[1].file.name.should == "#{documents[1].file.name}_signed.pdf" + end + end + + it { should have_accessor(:file) } + it { should have_accessor(:process_date) } + it { should have_accessor(:outputs) } + it { should have_accessor(:output_formats) } + it { should have_accessor(:order) } + it { should have_accessor(:field_count) } + it { should have_alias(:access_mode=, :access_mode_set!) } describe '#outputs=' do let(:response) do [ @@ -86,9 +173,35 @@ -> { described_class.new }.should raise_error(ArgumentError) end it 'raises error if file is not an instance of GroupDocs::Storage::File' do -> { described_class.new(file: '') }.should raise_error(ArgumentError) + end + end + + describe '#page_images!' do + before(:each) do + mock_api_server(load_json('document_page_images_get')) + end + + it 'accepts access credentials hash' do + lambda do + subject.page_images!(640, 480, {}, client_id: 'client_id', private_key: 'private_key') + end.should_not raise_error(ArgumentError) + end + + it 'accepts options hash' do + lambda do + subject.page_images!(640, 480, first_page: 0, page_count: 1) + end.should_not raise_error(ArgumentError) + end + + it 'returns array of URLs' do + urls = subject.page_images!(640, 480) + urls.should be_an(Array) + urls.each do |url| + url.should be_a(String) + end end end describe '#access_mode!' do before(:each) do