everlog 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Guardfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/everlog.gemspec +33 -0
- data/lib/everlog.rb +42 -0
- data/lib/everlog/app.rb +15 -0
- data/lib/everlog/app/animetick.rb +14 -0
- data/lib/everlog/app/evernote.rb +9 -0
- data/lib/everlog/app/github.rb +9 -0
- data/lib/everlog/app/hatena.rb +13 -0
- data/lib/everlog/app/moves.rb +9 -0
- data/lib/everlog/app/twitter.rb +11 -0
- data/lib/everlog/app/weather.rb +9 -0
- data/lib/everlog/dom.rb +9 -0
- data/lib/everlog/dom/entity.rb +11 -0
- data/lib/everlog/dom/entity/config.rb +30 -0
- data/lib/everlog/dom/entity/content.erb +170 -0
- data/lib/everlog/dom/entity/content.rb +14 -0
- data/lib/everlog/dom/module.rb +6 -0
- data/lib/everlog/dom/module/github.rb +28 -0
- data/lib/everlog/dom/module/moves.rb +26 -0
- data/lib/everlog/dom/repository.rb +5 -0
- data/lib/everlog/dom/repository/evernote.rb +24 -0
- data/lib/everlog/dom/service.rb +5 -0
- data/lib/everlog/dom/service/nullobject.rb +18 -0
- data/lib/everlog/dom/value.rb +18 -0
- data/lib/everlog/dom/value/animetick.rb +25 -0
- data/lib/everlog/dom/value/github.rb +6 -0
- data/lib/everlog/dom/value/github/activity.rb +18 -0
- data/lib/everlog/dom/value/github/commit.rb +13 -0
- data/lib/everlog/dom/value/hatena.rb +20 -0
- data/lib/everlog/dom/value/moves.rb +16 -0
- data/lib/everlog/dom/value/moves/move.rb +31 -0
- data/lib/everlog/dom/value/moves/place.rb +13 -0
- data/lib/everlog/dom/value/moves/referer.rb +10 -0
- data/lib/everlog/dom/value/moves/referer/move.rb +7 -0
- data/lib/everlog/dom/value/moves/referer/place.rb +8 -0
- data/lib/everlog/dom/value/moves/summary.rb +30 -0
- data/lib/everlog/dom/value/twitter.rb +13 -0
- data/lib/everlog/dom/value/weather.rb +31 -0
- data/lib/everlog/inf.rb +5 -0
- data/lib/everlog/inf/api.rb +20 -0
- data/lib/everlog/inf/api/animetick.rb +25 -0
- data/lib/everlog/inf/api/evernote.rb +37 -0
- data/lib/everlog/inf/api/github.rb +26 -0
- data/lib/everlog/inf/api/googlemap.rb +15 -0
- data/lib/everlog/inf/api/hatena.rb +20 -0
- data/lib/everlog/inf/api/moves.rb +21 -0
- data/lib/everlog/inf/api/twitter.rb +26 -0
- data/lib/everlog/inf/api/wunderground.rb +15 -0
- data/lib/everlog/version.rb +3 -0
- data/spec/fixtures/animetick/list_ticket_response.json +1 -0
- data/spec/fixtures/hatena/feed_response.json +80 -0
- data/spec/fixtures/moves/daily_storyline_response.json +319 -0
- data/spec/fixtures/moves/daily_summary_response.json +29 -0
- data/spec/fixtures/moves/sample_for_erb.json +29 -0
- data/spec/fixtures/wunderground/yesterday_response.json +1 -0
- data/spec/lifelog/app/animetick_spec.rb +13 -0
- data/spec/lifelog/app/evernote_spec.rb +14 -0
- data/spec/lifelog/app/github_spec.rb +22 -0
- data/spec/lifelog/app/hatena_spec.rb +35 -0
- data/spec/lifelog/app/moves_spec.rb +9 -0
- data/spec/lifelog/app/twitter_spec.rb +33 -0
- data/spec/lifelog/app/weather_spec.rb +11 -0
- data/spec/lifelog/dom/entity/config_spec.rb +22 -0
- data/spec/lifelog/dom/entity/content_spec.rb +23 -0
- data/spec/lifelog/dom/module/github_spec.rb +60 -0
- data/spec/lifelog/dom/module/moves_spec.rb +37 -0
- data/spec/lifelog/dom/repository/evernote_spec.rb +26 -0
- data/spec/lifelog/dom/service/nullobject_spec.rb +19 -0
- data/spec/lifelog/dom/value/animetick_spec.rb +49 -0
- data/spec/lifelog/dom/value/github/activity_spec.rb +25 -0
- data/spec/lifelog/dom/value/github/commit_spec.rb +23 -0
- data/spec/lifelog/dom/value/hatena_spec.rb +23 -0
- data/spec/lifelog/dom/value/moves/move_spec.rb +45 -0
- data/spec/lifelog/dom/value/moves/place_spec.rb +18 -0
- data/spec/lifelog/dom/value/moves/referer/move_spec.rb +18 -0
- data/spec/lifelog/dom/value/moves/referer/place_spec.rb +17 -0
- data/spec/lifelog/dom/value/moves/summary_spec.rb +64 -0
- data/spec/lifelog/dom/value/twitter_spec.rb +23 -0
- data/spec/lifelog/dom/value/weather_spec.rb +43 -0
- data/spec/lifelog/inf/api/animetick_spec.rb +22 -0
- data/spec/lifelog/inf/api/evernote_spec.rb +49 -0
- data/spec/lifelog/inf/api/github_spec.rb +36 -0
- data/spec/lifelog/inf/api/googlemap_spec.rb +9 -0
- data/spec/lifelog/inf/api/hatena_spec.rb +23 -0
- data/spec/lifelog/inf/api/moves_spec.rb +13 -0
- data/spec/lifelog/inf/api/twitter_spec.rb +23 -0
- data/spec/lifelog/inf/api/wunderground_spec.rb +11 -0
- data/spec/spec_helper.rb +8 -0
- metadata +345 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Github::Repository_Activity do
|
4
|
+
let(:instance) { described_class.new(repo_name, repo_commits) }
|
5
|
+
|
6
|
+
describe '#repo_name' do
|
7
|
+
context 'nil' do
|
8
|
+
let(:repo_name) { nil }
|
9
|
+
let(:repo_commits) { nil }
|
10
|
+
subject { instance.repo_name }
|
11
|
+
|
12
|
+
it { expect(subject).to eq '' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#commits' do
|
17
|
+
context 'nil' do
|
18
|
+
let(:repo_name) { nil }
|
19
|
+
let(:repo_commits) { nil }
|
20
|
+
subject { instance.commits }
|
21
|
+
|
22
|
+
it { expect(subject).to eq [] }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Github::Commit do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
|
6
|
+
describe '#url' do
|
7
|
+
subject { instance.url }
|
8
|
+
|
9
|
+
context 'nil' do
|
10
|
+
let(:response) { double('response', rels: { html: double('href', href: nil) }) }
|
11
|
+
it { expect(subject).to eq '' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#message' do
|
16
|
+
subject { instance.message }
|
17
|
+
|
18
|
+
context 'nil' do
|
19
|
+
let(:response) { double('response', commit: { message: nil }) }
|
20
|
+
it { expect(subject).to eq '' }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Hatena do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
|
6
|
+
describe '#title' do
|
7
|
+
subject { instance.title }
|
8
|
+
|
9
|
+
context 'with no title in response' do
|
10
|
+
let(:response) { {} }
|
11
|
+
it { expect(subject).to eq '' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#issued' do
|
16
|
+
subject { instance.issued }
|
17
|
+
|
18
|
+
context 'with no issued in response' do
|
19
|
+
let(:response) { {} }
|
20
|
+
it { expect(subject).to be_instance_of Time }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Moves::Move do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
let(:response) do
|
6
|
+
load_fixture('moves/daily_storyline_response.json').first['segments'][1]['activities'].first
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#action' do
|
10
|
+
subject { instance.action }
|
11
|
+
context 'normal case' do
|
12
|
+
it { expect(subject).to eq 'wlk' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#duration' do
|
17
|
+
subject { instance.duration }
|
18
|
+
context 'normal case' do
|
19
|
+
it 'round of' do
|
20
|
+
expect(subject).to eq '13.0'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#start_time' do
|
26
|
+
subject { instance.start_time }
|
27
|
+
context 'normal case' do
|
28
|
+
it { expect(subject).to eq '16:14' }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#end_time' do
|
33
|
+
subject { instance.end_time }
|
34
|
+
context 'normal case' do
|
35
|
+
it { expect(subject).to eq '16:27' }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#distance' do
|
40
|
+
subject { instance.distance }
|
41
|
+
context 'normal case' do
|
42
|
+
it { expect(subject).to be 1.251 }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Moves::Place do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
let(:response) do
|
6
|
+
load_fixture('moves/daily_storyline_response.json').first['segments'][0]
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#latitude' do
|
10
|
+
subject { instance.latitude }
|
11
|
+
it { expect(subject).to eq '55.55555' }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#longitude' do
|
15
|
+
subject { instance.longitude }
|
16
|
+
it { expect(subject).to eq '33.33333' }
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Moves::Referer::Move do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
let(:response) do
|
6
|
+
load_fixture('moves/daily_storyline_response.json').first['segments'][1]
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#name' do
|
10
|
+
it { expect(instance.name).to eq 'move' }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#to_a' do
|
14
|
+
subject { instance.to_a }
|
15
|
+
it { expect(subject).to be_instance_of Array }
|
16
|
+
it { expect(subject.first.action).to eq 'wlk' }
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Moves::Referer::Place do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
let(:response) do
|
6
|
+
load_fixture('moves/daily_storyline_response.json').first['segments'][0]
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#name' do
|
10
|
+
it { expect(instance.name).to eq 'place' }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#screen_name' do
|
14
|
+
subject { instance.screen_name }
|
15
|
+
it { expect(subject).to eq "O18, スモレンスク ロシア" }
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Moves::Summary do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
|
6
|
+
shared_examples_for 'return fixture val with normal case and return 0.0 with abnormal case' do
|
7
|
+
context 'normal' do
|
8
|
+
let(:response) { load_fixture('moves/daily_summary_response.json').first['summary'] }
|
9
|
+
it { expect(subject).to be fixture_val }
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'abnormal' do
|
13
|
+
context 'with no applied activity' do
|
14
|
+
let(:response) do
|
15
|
+
r = load_fixture('moves/daily_summary_response.json').first['summary']
|
16
|
+
r.delete_at(fixture_index)
|
17
|
+
r
|
18
|
+
end
|
19
|
+
|
20
|
+
it { expect(subject).to be 0.0 }
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'with response nil' do
|
24
|
+
let(:response) { nil }
|
25
|
+
it { expect(subject).to be 0.0 }
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with response empty array' do
|
29
|
+
let(:response) { [] }
|
30
|
+
it { expect(subject).to be 0.0 }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
describe '#walk' do
|
37
|
+
subject { instance.walk }
|
38
|
+
let(:fixture_index) { 0 }
|
39
|
+
let(:fixture_val) { 1.847 }
|
40
|
+
it_behaves_like 'return fixture val with normal case and return 0.0 with abnormal case'
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#cycle' do
|
44
|
+
subject { instance.cycle }
|
45
|
+
let(:fixture_index) { 2 }
|
46
|
+
let(:fixture_val) { 4.049 }
|
47
|
+
it_behaves_like 'return fixture val with normal case and return 0.0 with abnormal case'
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#transport' do
|
51
|
+
subject { instance.transport }
|
52
|
+
let(:fixture_index) { 3 }
|
53
|
+
let(:fixture_val) { 0.419 }
|
54
|
+
it_behaves_like 'return fixture val with normal case and return 0.0 with abnormal case'
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#cal' do
|
58
|
+
subject { instance.cal }
|
59
|
+
let(:response) { load_fixture('moves/daily_summary_response.json').first['summary'] }
|
60
|
+
context 'normal' do
|
61
|
+
it { expect(subject).to be 1098 }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Twitter do
|
4
|
+
let(:instance) { described_class.new(response) }
|
5
|
+
|
6
|
+
describe '#tweet' do
|
7
|
+
context 'with Twitter::Tweet nil' do
|
8
|
+
subject { instance.tweet }
|
9
|
+
let(:response) { double('Twitter::Tweet', text: nil) }
|
10
|
+
|
11
|
+
it { expect(subject).to eq '' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#created_at' do
|
16
|
+
context 'with Twitter::Tweet nil' do
|
17
|
+
subject { instance.created_at }
|
18
|
+
let(:response) { double('Twitter::Tweet', created_at: nil) }
|
19
|
+
|
20
|
+
it { expect(subject).to eq '' }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Dom::Value::Weather do
|
4
|
+
let(:valid_response) do
|
5
|
+
load_fixture('wunderground/yesterday_response.json')['history']
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#max_temp' do
|
9
|
+
context 'normal' do
|
10
|
+
subject { described_class.new(valid_response).max_temp }
|
11
|
+
it { expect(subject).to be 10 }
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'abnormal' do
|
15
|
+
subject { described_class.new(nil).max_temp }
|
16
|
+
it { expect(subject).to be 0 }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#max_temp' do
|
21
|
+
context 'normal' do
|
22
|
+
subject { described_class.new(valid_response).min_temp }
|
23
|
+
it { expect(subject).to be 7 }
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'abnormal' do
|
27
|
+
subject { described_class.new(nil).max_temp }
|
28
|
+
it { expect(subject).to be 0 }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#condition' do
|
33
|
+
context 'normal' do
|
34
|
+
subject { described_class.new(valid_response).condition }
|
35
|
+
it { expect(subject).to eq 'rain' }
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'abnormal' do
|
39
|
+
subject { described_class.new(nil).condition }
|
40
|
+
it { expect(subject).to eq '' }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Inf::Api::Animetick do
|
4
|
+
let(:instance) do
|
5
|
+
config = double('config', access_token: ENV['animetick_session'], access_secret: ENV['animetick_csrf_token'])
|
6
|
+
described_class.new(config)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#client' do
|
10
|
+
it 'memo @client' do
|
11
|
+
expect(instance.client).to be instance.client
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#ticket_list' do
|
16
|
+
subject { instance.ticket_list }
|
17
|
+
it { expect(subject).to be_instance_of Array }
|
18
|
+
it { expect(subject.first).to have_key 'title' }
|
19
|
+
it { expect(subject.first).to have_key 'sub_title' }
|
20
|
+
it { expect(subject.first).to have_key 'updated_at' }
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Inf::Api::Evernote do
|
4
|
+
let(:instance) do
|
5
|
+
config = double('config', access_secret: ENV['evernote_sandbox_access_token'])
|
6
|
+
described_class.new(true, config)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#client' do
|
10
|
+
subject { instance.client }
|
11
|
+
it 'memo @client' do
|
12
|
+
expect(subject).to be instance.client
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#note' do
|
17
|
+
it 'memo @note' do
|
18
|
+
expect(instance.note).to be instance.note
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#post_note' do
|
23
|
+
before { EvernoteOAuth::Client.any_instance.stub_chain(:note_store, :createNote) }
|
24
|
+
let(:content) do
|
25
|
+
<<EOS
|
26
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
27
|
+
<!DOCTYPE en-note SYSTEM 'http://xml.evernote.com/pub/enml2.dtd'>
|
28
|
+
<en-note> <div>hi</div> <div>hello</div> </en-note>
|
29
|
+
EOS
|
30
|
+
end
|
31
|
+
|
32
|
+
it { expect { instance.post_note('title', content) }.not_to raise_error }
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#create_notebook' do
|
36
|
+
subject { instance.create_notebook(title) }
|
37
|
+
|
38
|
+
context 'duplicate notebook title' do
|
39
|
+
let(:title) { 'from rspec' }
|
40
|
+
it { expect { subject }.to raise_error ::Evernote::EDAM::Error::EDAMUserException }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#notebooks' do
|
45
|
+
subject { instance.notebooks }
|
46
|
+
|
47
|
+
it { expect(subject).to be_instance_of Array }
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Inf::Api::Github do
|
4
|
+
let(:instance) do
|
5
|
+
described_class.new(double('config', access_secret: ENV['github_access_secret']))
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#client' do
|
9
|
+
it 'memo @client' do
|
10
|
+
expect(instance.client).to be instance.client
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#repos' do
|
15
|
+
subject { instance.repos }
|
16
|
+
it { expect(subject).to be_instance_of Array }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#commits_on' do
|
20
|
+
subject { instance.commits_on(repo, date) }
|
21
|
+
let(:repo) { 'everlog' }
|
22
|
+
|
23
|
+
context 'with commit existing' do
|
24
|
+
let(:date) { '2014-01-17' }
|
25
|
+
|
26
|
+
it { expect(subject).to be_instance_of Array }
|
27
|
+
it { expect(subject.size).to be 2 }
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with no commit existing' do
|
31
|
+
let(:date) { '9999-09-09' }
|
32
|
+
|
33
|
+
it { expect(subject).to eq [] }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Everlog::Inf::Api::Hatena do
|
4
|
+
let(:instance) do
|
5
|
+
config = double('config',
|
6
|
+
consumer_key: ENV['hatena_consumer_key'],
|
7
|
+
consumer_secret: ENV['hatena_consumer_sec'],
|
8
|
+
access_token: ENV['hatena_access_token'],
|
9
|
+
access_secret: ENV['hatena_access_secret'])
|
10
|
+
described_class.new(config)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#client' do
|
14
|
+
it 'memo @client' do
|
15
|
+
expect(instance.client).to be instance.client
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#feed_entry' do
|
20
|
+
subject { instance.feed_entry }
|
21
|
+
it { expect(subject).to be_instance_of Array }
|
22
|
+
end
|
23
|
+
end
|