evertils-common 0.2.9 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33ead3b9f1561bc3a2b5de59335fc9e7251c210b
4
- data.tar.gz: 29a60ff3a7ed7446b9d5b92ec968144fe9d302fe
3
+ metadata.gz: b9038ca948f737bd4428305769288a85266cb578
4
+ data.tar.gz: 34bc8249af09505f5ce018145ff20db106e674cb
5
5
  SHA512:
6
- metadata.gz: 0102d8cb3bc70c7d1ad2864451f0db431eab0f9d9b0e70ae12cf0a8a31879694b35f973bebd91148280773f94f2b1209cc3ce317b61a0062f9ecf8234f89bc05
7
- data.tar.gz: cc23fd26183b67cbfdd00170b5726322eb6a104c30ffc6e1b649926be250b742c4d52c1f70b331c3d0d1e28b767c2563c963405335d66ef5adba14bacb03bfdb
6
+ metadata.gz: c34cf9d3614cb2fbed819e6b4b987d22eb4d989dfef1d35a348f2d77b8fbf6fc3ed829c362c6ed534fff72d8e01e76e8e8c320eef0e5231c450a6017ef4d6ae1
7
+ data.tar.gz: e1d991a75e40f0763fb541bc7421bc6fcddea49097c7eeef171c0390cadfc29ebb3476646837b3aee31e28985ee47b94fae1a0cceac1086c3af0328705e2e787
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.2.1"
4
+ script:
5
+ - bundle exec rake cleanup
6
+ - bundle exec rake test
7
+ after_failure:
8
+ - bundle exec rake cleanup
9
+ env:
10
+ - EVERTILS_SB_TOKEN="S=s1:U=91e14:E=1594288f829:C=151ead7c908:P=1cd:A=en-devtoken:V=2:H=f688ac96519d5c525929073624a38ac2"
11
+ addons:
12
+ code_climate:
13
+ repo_token: 68c56c90c9e17fd1da015529e8957ca50855d5b4b3436641449c84ad1d0bddfc
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Evertils::Common
2
2
 
3
- [![Code Climate](https://codeclimate.com/github/aapis/evertils-common/badges/gpa.svg)](https://codeclimate.com/github/aapis/evertils-common)
3
+ [![Code Climate](https://codeclimate.com/github/aapis/evertils-common/badges/gpa.svg)](https://codeclimate.com/github/aapis/evertils-common) [![Build Status](https://travis-ci.org/aapis/evertils-common.svg?branch=master)](https://travis-ci.org/aapis/evertils-common)
4
4
 
5
5
  Evertils::Common is an abstraction library for interacting with the Evernote API.
6
6
 
@@ -9,7 +9,7 @@ Evertils::Common is an abstraction library for interacting with the Evernote API
9
9
  ```ruby
10
10
  gem 'evertils-common'
11
11
 
12
- # or...
12
+ # or from the command line
13
13
  gem install evertils-common
14
14
  ```
15
15
 
@@ -17,9 +17,12 @@ Then add the following to your ~/.bash_profile
17
17
 
18
18
  ```shell
19
19
  export EVERTILS_TOKEN="token_goes_here"
20
+
21
+ # add the following if you plan on running the test suite
22
+ export EVERTILS_SB_TOKEN="sandbox token here"
20
23
  ```
21
24
 
22
- Get your Evernote Developer Tokens [here](https://www.evernote.com/Login.action?targetUrl=%2Fapi%2FDeveloperToken.action).
25
+ Get your production Evernote Developer Tokens [here](https://www.evernote.com/api/DeveloperToken.action) and your sandbox tokens [here](https://sandbox.evernote.com/api/DeveloperToken.action).
23
26
 
24
27
  ## Usage
25
28
 
data/Rakefile CHANGED
@@ -1,9 +1,31 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rake/testtask'
3
+ require 'evertils/test'
3
4
 
4
5
  Rake::TestTask.new do |t|
5
6
  t.libs << 'test'
6
7
  end
7
8
 
9
+ task :seed do
10
+ if ENV['TEST'].nil?
11
+ Evertils::Test::Base.before
12
+ end
13
+ end
14
+
15
+ task :cleanup do
16
+ if ENV['TEST'].nil?
17
+ Evertils::Test::Base.after
18
+ end
19
+ end
20
+
21
+ # hack from
22
+ # http://stackoverflow.com/questions/1689504/how-do-i-make-a-rake-task-run-after-all-other-tasks-i-e-a-rake-afterbuild-tas
23
+ current_tasks = Rake.application.top_level_tasks
24
+ if current_tasks.include?('test')
25
+ current_tasks << :cleanup
26
+ Rake.application.instance_variable_set(:@top_level_tasks, current_tasks)
27
+ task :test => :seed
28
+ end
29
+
8
30
  desc "Run tests"
9
31
  task :default => :test
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
21
  spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "minitest"
23
23
 
24
24
  spec.add_runtime_dependency 'mime-types'
25
25
  spec.add_runtime_dependency "evernote-thrift"
@@ -8,17 +8,51 @@ require 'evertils/common/enml'
8
8
  require 'evertils/common/entity'
9
9
  require 'evertils/common/query'
10
10
  require 'evertils/common/converter'
11
+ require 'evertils/common/manager'
11
12
  require 'evertils/common/version'
12
- require 'evertils/common/query/backup'
13
+
13
14
  require 'evertils/common/query/simple'
14
15
  require 'evertils/common/query/time'
16
+ require 'evertils/common/query/backup'
17
+
18
+ require 'evertils/common/manager/note'
19
+ require 'evertils/common/manager/notebook'
20
+ require 'evertils/common/manager/sync'
21
+ require 'evertils/common/manager/tag'
22
+
23
+ require 'evertils/common/entity/notebook'
24
+ require 'evertils/common/entity/notebooks'
25
+ require 'evertils/common/entity/notes'
26
+ require 'evertils/common/entity/note'
27
+ require 'evertils/common/entity/tag'
28
+ require 'evertils/common/entity/tags'
29
+ require 'evertils/common/entity/sync'
30
+
15
31
  require 'evertils/common/converter/yaml_to_enml'
16
32
 
17
33
  module Evertils
18
- module Common
19
34
 
20
- EVERNOTE_HOST = 'www.evernote.com'
21
- EVERNOTE_DEVELOPER_TOKEN = ENV['EVERTILS_TOKEN']
35
+ #
36
+ # @since 0.3.0
37
+ def self.token
38
+ ENV['EVERTILS_TOKEN']
39
+ end
40
+
41
+ #
42
+ # @since 0.3.0
43
+ def self.host
44
+ 'www.evernote.com'
45
+ end
22
46
 
47
+ #
48
+ # @since 0.3.0
49
+ def self.is_test?
50
+ false
23
51
  end
52
+
53
+ # define Common namespace
54
+ # @since 0.3.0
55
+ module Common
56
+ end
57
+
24
58
  end
@@ -1,24 +1,27 @@
1
1
  module Evertils
2
2
  module Common
3
3
  class Authentication
4
+ include Singleton
4
5
 
5
6
  attr_accessor :store, :shardId, :version
6
7
 
7
8
  def initialize
8
9
  begin
9
- if Evertils::Common::EVERNOTE_DEVELOPER_TOKEN.nil?
10
+ if Evertils.token.nil?
10
11
  Notify.error("Evernote developer token is not configured properly!\n$EVERTILS_TOKEN == nil")
11
12
  end
12
13
 
13
- userStoreUrl = "https://#{Evertils::Common::EVERNOTE_HOST}/edam/user"
14
+ userStoreUrl = "https://#{Evertils.host}/edam/user"
14
15
 
15
16
  userStoreTransport = Thrift::HTTPClientTransport.new(userStoreUrl)
16
17
  userStoreProtocol = Thrift::BinaryProtocol.new(userStoreTransport)
17
18
  @@user = ::Evernote::EDAM::UserStore::UserStore::Client.new(userStoreProtocol)
18
19
 
19
- versionOK = @@user.checkVersion("evernote-data",
20
- ::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR,
21
- ::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR)
20
+ if Evertils.is_test?
21
+ puts "TEST USER: #{info[:user]}"
22
+ end
23
+
24
+ versionOK = @@user.checkVersion("evernote-data", ::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR, ::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR)
22
25
 
23
26
  @version = "#{::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR}.#{::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR}"
24
27
  @shardId = user.shardId
@@ -27,7 +30,7 @@ module Evertils
27
30
  Notify.error("Evernote API requires an update. Latest version is #{@version}")
28
31
  end
29
32
 
30
- noteStoreUrl = @@user.getNoteStoreUrl(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN)
33
+ noteStoreUrl = @@user.getNoteStoreUrl(Evertils.token)
31
34
 
32
35
  noteStoreTransport = Thrift::HTTPClientTransport.new(noteStoreUrl)
33
36
  noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
@@ -53,14 +56,19 @@ module Evertils
53
56
  end
54
57
 
55
58
  def user
56
- @@user.getUser(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN)
59
+ @@user.getUser(Evertils.token)
57
60
  end
58
61
 
59
62
  def call(func, *args)
60
- if args.size > 0
61
- @store.method(func.to_s).call(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, *args)
62
- else
63
- @store.method(func.to_s).call(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN)
63
+ begin
64
+ if args.size > 0
65
+ @store.method(func.to_s).call(Evertils.token, *args)
66
+ else
67
+ @store.method(func.to_s).call(Evertils.token)
68
+ end
69
+ rescue Evernote::EDAM::Error::EDAMSystemException => e
70
+ Notify.warning e.inspect
71
+ nil
64
72
  end
65
73
  end
66
74
  end
@@ -1,15 +1,16 @@
1
- require 'evertils/common/authentication'
2
-
3
1
  module Evertils
4
2
  module Common
5
3
  module Entity
6
4
  class Base
7
5
 
6
+ attr_accessor :evernote
7
+
8
8
  def initialize
9
- @evernote = Authentication.new
10
- self
9
+ @evernote = Authentication.instance
11
10
  end
12
11
 
12
+ #
13
+ # @since 0.2.0
13
14
  def has_required_fields(hash, required)
14
15
  hash.keys.each do |key|
15
16
  required.include? key
@@ -26,7 +26,7 @@ module Evertils
26
26
 
27
27
  #
28
28
  # @since 0.2.0
29
- def create(title, body, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
29
+ def create(title, body, parent_notebook = nil, file = nil, share_note = false, created_on = nil)
30
30
  @entity = nil
31
31
 
32
32
  # final output
@@ -62,11 +62,11 @@ module Evertils
62
62
  # setup note properties
63
63
  our_note.title = title
64
64
  our_note.content = n_body
65
- our_note.created = created_on if !created_on.nil?
65
+ our_note.created = created_on if !created_on.is_a?(DateTime)
66
66
 
67
- if !p_notebook_name.is_a? ::Evernote::EDAM::Type::Notebook
67
+ if !parent_notebook.is_a? Evertils::Common::Entity::Notebook
68
68
  nb = Entity::Notebook.new
69
- parent_notebook = nb.find(p_notebook_name)
69
+ parent_notebook = nb.find(parent_notebook)
70
70
  parent_notebook = nb.default if parent_notebook.nil?
71
71
  end
72
72
 
@@ -85,6 +85,8 @@ module Evertils
85
85
  rescue ::Evernote::EDAM::Error::EDAMNotFoundException
86
86
  ## Parent Notebook GUID doesn't correspond to an actual notebook
87
87
  Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
88
+ rescue ArgumentError => e
89
+ Notify.error e.backtrace
88
90
  end
89
91
 
90
92
  Notify.success("#{parent_notebook.prop(:stack)}/#{parent_notebook.prop(:name)}/#{our_note.title} created")
@@ -122,8 +124,10 @@ module Evertils
122
124
  #
123
125
  # @since 0.2.9
124
126
  def move_to(notebook)
125
- nb = Evertils::Common::Entity::Notebook.new
127
+ nb = Evertils::Common::Manager::Notebook.new
126
128
  target = nb.find(notebook)
129
+
130
+ raise "Notebook not found: #{notebook}" if !target
127
131
 
128
132
  @entity.notebookGuid = target.prop(:guid)
129
133
 
@@ -163,6 +167,19 @@ module Evertils
163
167
  end
164
168
  alias_method :find_by_name, :find
165
169
 
170
+ #
171
+ # @since 0.3.0
172
+ def tag(name)
173
+ @entity.tagNames = [name]
174
+ @evernote.call(:updateNote, @entity)
175
+ end
176
+
177
+ #
178
+ # @since 0.3.0
179
+ def entity
180
+ @entity
181
+ end
182
+
166
183
  end
167
184
  end
168
185
  end
@@ -5,6 +5,8 @@ module Evertils
5
5
  module Entity
6
6
  class Notebook < Entity::Base
7
7
 
8
+ #
9
+ # @since 0.2.0
8
10
  def find(name)
9
11
  @entity = nil
10
12
  notebooks = Notebooks.new.all
@@ -18,6 +20,8 @@ module Evertils
18
20
  self if @entity
19
21
  end
20
22
 
23
+ #
24
+ # @since 0.2.0
21
25
  def create(name, stack = nil)
22
26
  @entity = nil
23
27
 
@@ -34,30 +38,45 @@ module Evertils
34
38
  self if @entity
35
39
  end
36
40
 
41
+ #
42
+ # @since 0.2.0
37
43
  def default
38
44
  @entity = @evernote.call(:getDefaultNotebook)
39
45
 
40
46
  self if @entity
41
47
  end
42
48
 
49
+ #
50
+ # @since 0.2.9
43
51
  def expunge!
44
52
  @evernote.call(:expungeNotebook, @entity.guid)
45
53
  end
46
54
 
55
+ #
56
+ # @since 0.2.0
57
+ # @deprecated 0.2.9
47
58
  def expunge
48
59
  deprecation_notice('0.2.9')
49
60
 
50
61
  @evernote.call(:expungeNotebook, @entity.guid)
51
62
  end
52
63
 
64
+ #
65
+ # @since 0.2.0
53
66
  def notes
54
67
  filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
55
68
  filter.notebookGuid = @entity.guid
56
69
 
57
- notes = Notes.new
70
+ notes = Notes.new(@evernote)
58
71
  notes.find(nil, @entity.guid)
59
72
  end
60
73
 
74
+ #
75
+ # @since 0.3.0
76
+ def entity
77
+ @entity
78
+ end
79
+
61
80
  end
62
81
  end
63
82
  end
@@ -0,0 +1,35 @@
1
+ require 'evertils/common/authentication'
2
+
3
+ module Evertils
4
+ module Common
5
+ module Manager
6
+ class Base
7
+
8
+ attr_accessor :api
9
+
10
+ #
11
+ # @since 0.3.0
12
+ def initialize
13
+ @api = Authentication.instance
14
+
15
+ self
16
+ end
17
+
18
+ #
19
+ # @since 0.3.0
20
+ def has_required_fields(hash, required)
21
+ hash.keys.each do |key|
22
+ required.include? key
23
+ end
24
+ end
25
+
26
+ #
27
+ # @since 0.3.0
28
+ def deprecation_notice(version)
29
+ puts "Deprecated as of #{version}"
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ module Evertils
2
+ module Common
3
+ module Manager
4
+ class Note < Manager::Base
5
+
6
+ #
7
+ # @since 0.3.0
8
+ def create(config)
9
+ entity = Evertils::Common::Entity::Note.new
10
+ entity.create(config[:name], config[:body], config[:notebook], config[:files], config[:shared], config[:created_on])
11
+ end
12
+
13
+ #
14
+ # @since 0.3.0
15
+ def find(name)
16
+ entity = Evertils::Common::Entity::Note.new
17
+ entity.find(name)
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,37 @@
1
+ module Evertils
2
+ module Common
3
+ module Manager
4
+ class Notebook < Manager::Base
5
+
6
+ #
7
+ # @since 0.3.0
8
+ def create(name, stack = nil)
9
+ entity = Evertils::Common::Entity::Notebook.new
10
+ entity.create(name, stack)
11
+ end
12
+
13
+ #
14
+ # @since 0.3.0
15
+ def find(name)
16
+ entity = Evertils::Common::Entity::Notebook.new
17
+ entity.find(name)
18
+ end
19
+
20
+ #
21
+ # @since 0.3.0
22
+ def find_or_create(name, stack = nil)
23
+ search_result = find(name)
24
+
25
+ if !search_result
26
+ note = create(name, stack)
27
+ else
28
+ note = search_result
29
+ end
30
+
31
+ note
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ module Evertils
2
+ module Common
3
+ module Manager
4
+ class Sync < Manager::Base
5
+
6
+ #
7
+ # @since 0.3.0
8
+ def state
9
+ entity = Evertils::Common::Entity::Sync.new
10
+ entity.state
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module Evertils
2
+ module Common
3
+ module Manager
4
+ class Tag < Manager::Base
5
+
6
+ #
7
+ # @since 0.3.0
8
+ def create(name)
9
+ entity = Evertils::Common::Entity::Tag.new
10
+ entity.create(name)
11
+ end
12
+
13
+ #
14
+ # @since 0.3.0
15
+ def find(name)
16
+ entity = Evertils::Common::Entity::Tag.new
17
+ entity.find(name)
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,11 +1,3 @@
1
- require 'evertils/common/entity/notebook'
2
- require 'evertils/common/entity/notebooks'
3
- require 'evertils/common/entity/notes'
4
- require 'evertils/common/entity/note'
5
- require 'evertils/common/entity/tag'
6
- require 'evertils/common/entity/tags'
7
- require 'evertils/common/entity/sync'
8
-
9
1
  module Evertils
10
2
  module Common
11
3
  module Query
@@ -15,9 +7,18 @@ module Evertils
15
7
  # @since 0.2.8
16
8
  def files(*files)
17
9
  date = DateTime.now
10
+ backup_notebook_name = 'Backup'
18
11
  nm = Entity::Note.new
12
+
13
+ # create the backup notebook if it does not exist
14
+ nb_entity = Entity::Notebook.new
15
+ nb = nb_entity.find(backup_notebook_name)
16
+
17
+ if nb_entity.find(backup_notebook_name).nil?
18
+ nb = nb_entity.create(backup_notebook_name)
19
+ end
19
20
 
20
- @entity = nm.create("Backup: #{date}", '', 'Backup', files)
21
+ @entity = nm.create("Backup: #{date}", "", nb, files)
21
22
  end
22
23
 
23
24
  #
@@ -1,76 +1,101 @@
1
- require 'evertils/common/entity/notebook'
2
- require 'evertils/common/entity/notebooks'
3
- require 'evertils/common/entity/notes'
4
- require 'evertils/common/entity/note'
5
- require 'evertils/common/entity/tag'
6
- require 'evertils/common/entity/tags'
7
- require 'evertils/common/entity/sync'
8
-
9
1
  module Evertils
10
2
  module Common
11
3
  module Query
12
4
  class Simple < Query::Base
13
5
 
6
+ #
7
+ # @since 0.2.0
14
8
  def notebooks
15
9
  Entity::Notebooks.new.all
16
10
  end
17
11
 
12
+ #
13
+ # @since 0.2.0
18
14
  def tags
19
15
  Entity::Tags.new.all
20
16
  end
21
17
 
18
+ #
19
+ # @since 0.2.0
22
20
  def notebook_by_name(name)
23
- nb = Entity::Notebook.new
24
- nb.find(name)
21
+ entity = Entity::Notebook.new
22
+ nb = entity.find(name)
23
+ nb.entity
25
24
  end
26
25
 
26
+ #
27
+ # @since 0.2.0
27
28
  def notes_by_notebook(name)
28
- nb = Entity::Notebook.new
29
- nb.find(name)
29
+ entity = Entity::Notebook.new
30
+ nb = entity.find(name)
30
31
  nb.notes
31
32
  end
32
33
 
34
+ #
35
+ # @since 0.2.0
33
36
  def create_stack_from(full_path)
34
37
  stack = Entity::Stack.new
35
38
  stack.create_from_yml(full_path)
36
39
  end
37
40
 
41
+ #
42
+ # @since 0.2.0
38
43
  def create_note_from(full_path)
39
- note = Entity::Note.new
40
- note.create_from_yml(full_path)
44
+ entity = Entity::Note.new
45
+ note = entity.create_from_yml(full_path)
46
+ note.entity
41
47
  end
42
48
 
49
+ #
50
+ # @since 0.2.0
43
51
  def create_notebooks_from(full_path)
44
- nb = Entity::Notebooks.new
45
- nb.create_from_yml(full_path)
52
+ entity = Entity::Notebooks.new
53
+ nb = entity.create_from_yml(full_path)
54
+ nb.entity
46
55
  end
47
56
 
57
+ #
58
+ # @since 0.2.0
48
59
  def create_notebook(name, stack = nil)
49
- nb = Entity::Notebook.new
50
- nb.create(name, stack)
60
+ entity = Entity::Notebook.new
61
+ nb = entity.create(name, stack)
62
+ nb.entity
51
63
  end
52
64
 
65
+ #
66
+ # @since 0.2.0
53
67
  def find_note(title_filter = nil, notebook_filter = nil)
54
- note = Entity::Note.new
55
- note.find(title_filter, notebook_filter)
68
+ entity = Entity::Note.new
69
+ note = entity.find(title_filter, notebook_filter)
70
+ note.entity
56
71
  end
57
72
 
73
+ #
74
+ # @since 0.2.0
58
75
  def note_exists(name)
59
- note = Entity::Note.new
60
- note.exists? name
76
+ entity = Entity::Note.new
77
+ note = entity.find(name)
78
+ note.exists?
61
79
  end
62
80
 
81
+ #
82
+ # @since 0.2.0
63
83
  def create_note(title, body, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
64
- note = Entity::Note.new
65
- note.create(title, body, p_notebook_name, file, share_note, created_on)
84
+ entity = Entity::Note.new
85
+ note = nm.create(title, body, p_notebook_name, file, share_note, created_on)
86
+ note.entity
66
87
  end
67
88
 
89
+ #
90
+ # @since 0.2.0
68
91
  def destroy_note(name)
69
- note = Entity::Note.new
70
- note.find(name)
71
- note.expunge(name)
92
+ entity = Entity::Note.new
93
+ note = entity.find(name)
94
+ note.expunge!
72
95
  end
73
96
 
97
+ #
98
+ # @since 0.2.0
74
99
  def poll
75
100
  begin
76
101
  sync = Entity::Sync.new
@@ -1,8 +1,3 @@
1
- require 'evertils/common/entity/notebook'
2
- require 'evertils/common/entity/notebooks'
3
- require 'evertils/common/entity/notes'
4
- require 'evertils/common/entity/note'
5
-
6
1
  module Evertils
7
2
  module Common
8
3
  module Query
@@ -1,7 +1,7 @@
1
1
  module Evertils
2
2
  module Common
3
3
 
4
- VERSION = "0.2.9"
4
+ VERSION = "0.3.0"
5
5
 
6
6
  end
7
7
  end
@@ -0,0 +1,29 @@
1
+ require 'evertils/common'
2
+ require 'evertils/test/base'
3
+
4
+ module Evertils
5
+
6
+ #
7
+ # @since 0.3.0
8
+ def self.token
9
+ ENV['EVERTILS_SB_TOKEN']
10
+ end
11
+
12
+ #
13
+ # @since 0.3.0
14
+ def self.host
15
+ 'sandbox.evernote.com'
16
+ end
17
+
18
+ #
19
+ # @since 0.3.0
20
+ def self.is_test?
21
+ true
22
+ end
23
+
24
+ # define Test namespace
25
+ # @since 0.3.0
26
+ module Test
27
+ end
28
+
29
+ end
@@ -0,0 +1,116 @@
1
+ require 'minitest/autorun'
2
+
3
+ module Evertils
4
+ module Test
5
+ class Base < Minitest::Test
6
+
7
+ # Run before all tests (check the Rakefile for specifics)
8
+ # @since 0.3.0
9
+ def self.before
10
+ puts "Seeding test data"
11
+ inst = Base.new(nil)
12
+ inst.setup
13
+ inst.seed
14
+ end
15
+
16
+ # Run after all tests (check the Rakefile for specifics)
17
+ # @since 0.3.0
18
+ def self.after
19
+ puts "Deleting test data"
20
+ inst = Base.new(nil)
21
+ inst.setup
22
+ inst.clean
23
+ end
24
+
25
+ #
26
+ # @since 0.3.0
27
+ def setup
28
+ entity = Evertils::Common::Manager::Sync.new
29
+
30
+ @@test_time = Time.now.to_i
31
+
32
+ if !entity.state.is_a?(Evernote::EDAM::NoteStore::SyncState)
33
+ puts 'Could not determine connection to the Evernote API, exiting'
34
+ exit(1)
35
+ end
36
+ end
37
+
38
+ #
39
+ # @since 0.3.0
40
+ def seed
41
+ full_path = File.join(File.dirname(__FILE__), 'seed/all.yml')
42
+
43
+ begin
44
+ if File.exist? full_path
45
+ conf = YAML::load(File.open(full_path))
46
+
47
+ nb = Evertils::Common::Entity::Notebook.new
48
+ note = Evertils::Common::Entity::Note.new
49
+
50
+ conf.each do |stack_name|
51
+ stack_name.last.each_pair do |key, arr|
52
+ puts "Creating: #{stack_name.first}/#{key}-#{@@test_time}..."
53
+ ch_nb = nb.create("#{key}-#{@@test_time}", stack_name.first)
54
+
55
+ arr.each do |child_note|
56
+ child_note.each_pair do |name, options|
57
+ puts "Creating: #{stack_name.first}/#{key}/#{name}.note..."
58
+ parsed = DateTime.parse(options['created_on'])
59
+
60
+ created_on = (parsed.to_time.to_i.to_s + "000").to_i
61
+ note.create(name, "Body for test note", ch_nb, nil, false, created_on)
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ puts "Sample data seeded"
68
+ else
69
+ raise ArgumentError, "File not found: #{full_path}"
70
+ end
71
+ rescue ArgumentError => e
72
+ puts e.message
73
+ end
74
+ end
75
+
76
+ # Remove all seeded data after all tests have run
77
+ # @since 0.3.0
78
+ def clean
79
+ full_path = File.join(File.dirname(__FILE__), 'seed/all.yml')
80
+
81
+ begin
82
+ if File.exist? full_path
83
+ conf = YAML::load(File.open(full_path))
84
+
85
+ nb = Evertils::Common::Entity::Notebooks.new
86
+ nbm = Evertils::Common::Manager::Notebook.new
87
+ auth = Evertils::Common::Authentication.instance
88
+ tm = Evertils::Common::Entity::Tags.new
89
+
90
+ puts "Deleting all tags..."
91
+ tags = tm.all
92
+ tags.each do |tag|
93
+ auth.call(:expungeTag, tag.guid)
94
+ end
95
+
96
+ puts "Deleting all notebooks..."
97
+ notebooks = nb.all
98
+ default = nbm.find_or_create('Default')
99
+
100
+ notebooks.each do |nb|
101
+ next if nb.guid == default.prop(:guid)
102
+ auth.call(:expungeNotebook, nb.guid)
103
+ end
104
+
105
+ puts "Sample data deleted"
106
+ else
107
+ raise ArgumentError, "File not found: #{full_path}"
108
+ end
109
+ rescue ArgumentError => e
110
+ puts e.message
111
+ end
112
+ end
113
+
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,24 @@
1
+ Food:
2
+ Fruit:
3
+ - Oranges:
4
+ created_on: '2015-04-21'
5
+ - Apples:
6
+ created_on: '2015-05-02'
7
+ - Dragon fruit:
8
+ created_on: '2015-01-14'
9
+ Vegetable:
10
+ - Carrots:
11
+ created_on: '2015-10-11'
12
+ - Celery:
13
+ created_on: '2015-11-08'
14
+ - Onion:
15
+ created_on: '2015-12-22'
16
+ Cars:
17
+ Ford:
18
+ - Mustang:
19
+ created_on: '2015-10-11'
20
+ - Focus:
21
+ created_on: '2015-08-06'
22
+ Jaguar:
23
+ - XJ220:
24
+ created_on: '2015-06-01'
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2015-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '10.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mime-types
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +90,7 @@ extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
92
  - ".gitignore"
93
+ - ".travis.yml"
93
94
  - Gemfile
94
95
  - LICENSE.txt
95
96
  - README.md
@@ -111,11 +112,19 @@ files:
111
112
  - lib/evertils/common/entity/sync.rb
112
113
  - lib/evertils/common/entity/tag.rb
113
114
  - lib/evertils/common/entity/tags.rb
115
+ - lib/evertils/common/manager.rb
116
+ - lib/evertils/common/manager/note.rb
117
+ - lib/evertils/common/manager/notebook.rb
118
+ - lib/evertils/common/manager/sync.rb
119
+ - lib/evertils/common/manager/tag.rb
114
120
  - lib/evertils/common/query.rb
115
121
  - lib/evertils/common/query/backup.rb
116
122
  - lib/evertils/common/query/simple.rb
117
123
  - lib/evertils/common/query/time.rb
118
124
  - lib/evertils/common/version.rb
125
+ - lib/evertils/test.rb
126
+ - lib/evertils/test/base.rb
127
+ - lib/evertils/test/seed/all.yml
119
128
  homepage: http://rubygems.org/gems/evertils-common
120
129
  licenses:
121
130
  - MIT