evertils-common 0.2.9 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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