diff --git a/app/models/agents/dropbox_watch_agent.rb b/app/models/agents/dropbox_watch_agent.rb index d2313eb8ba..ed63dcf187 100644 --- a/app/models/agents/dropbox_watch_agent.rb +++ b/app/models/agents/dropbox_watch_agent.rb @@ -52,7 +52,9 @@ def check private def ls(dir_to_watch) - dropbox.ls(dir_to_watch).map { |file| { 'path' => file.path, 'rev' => file.rev, 'modified' => file.server_modified } } + dropbox.ls(dir_to_watch) + .select { |entry| entry.respond_to?(:rev) } + .map { |file| { 'path' => file.path, 'rev' => file.rev, 'modified' => file.server_modified } } end def previous_contents diff --git a/spec/models/agents/dropbox_watch_agent_spec.rb b/spec/models/agents/dropbox_watch_agent_spec.rb index cae566efde..113ccbfd9f 100644 --- a/spec/models/agents/dropbox_watch_agent_spec.rb +++ b/spec/models/agents/dropbox_watch_agent_spec.rb @@ -50,7 +50,15 @@ describe '#check' do - let(:first_result) { Dropbox::API::Object.convert([{ 'path_display' => '1.json', 'rev' => '1', 'server_modified' => '01-01-01' }], nil) } + let(:first_result) do + Dropbox::API::Object.convert( + [ + { 'path_display' => '1.json', 'rev' => '1', 'server_modified' => '01-01-01' }, + { 'path_display' => 'sub_dir_1', '.tag' => 'folder' } + ], + nil + ) + end before(:each) do allow(Dropbox::API::Client).to receive(:new) do @@ -77,7 +85,15 @@ context 'subsequent calls' do - let(:second_result) { Dropbox::API::Object.convert([{ 'path_display' => '2.json', 'rev' => '1', 'server_modified' => '02-02-02' }], nil) } + let(:second_result) do + Dropbox::API::Object.convert( + [ + { 'path_display' => '2.json', 'rev' => '1', 'server_modified' => '02-02-02' }, + { 'path_display' => 'sub_dir_2', '.tag' => 'folder' } + ], + nil + ) + end before(:each) do @agent.memory = { 'contents' => 'not_empty' }