velibe 0.2.2 → 0.2.3

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: 1171c7eb99d496a8fe7098cd4bac0e55afc5d433
4
- data.tar.gz: f297507d830b9ced6865fd86c208ac0478fb323f
3
+ metadata.gz: 53bf1830ce882ba66e706edbf383b5c97f0a3fa8
4
+ data.tar.gz: 22d9f6e371bf02de9e399f7f72797acff029aa07
5
5
  SHA512:
6
- metadata.gz: 0c0ff73de3c30a96c1469c61871fc076fd70e6d7c21e4d4ac4305ffce471809d40436c55f1d19861805c0db5e251794afdddd0a0cfc7b63194a954f747a177e6
7
- data.tar.gz: a8e0c19d9df1ba889f7d68e1089d5c990cc6cade8183db671f42a7c0740642363cc1d2a0c3b41ac29e654ec96b040ad6f636979bf71f6e8b92d05ac4ebbc4803
6
+ metadata.gz: 881572db58c41d7c2ff371781661b743f1498005718dce68d0f7ddff0474105692f8c664679ea2a8841174fa2f54c7ebf5a345ec312c88cdb85f9b04a528531c
7
+ data.tar.gz: 214b62a2c0ace61ec874eb8b0cc1492a08c99894fcfab161c6dfad811745eefdb1cfb0f03a74d9107accf21b1734084b8fa0b3b42751a1a8b7b460f8ee6812bf
@@ -10,7 +10,6 @@ rvm:
10
10
  before_install: gem install bundler
11
11
  install: bundle install
12
12
  script:
13
- - export VELIBE_TOKEN="junk"
14
13
  - bundle exec rake spec
15
14
 
16
15
  matrix:
@@ -4,6 +4,10 @@ All notable changes to *Velibe* will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased][unreleased]
7
+ ## [0.2.3] - 2015-12-04
8
+ ### Fixed
9
+ - ensure favorites stations are stored as integer
10
+ - prevent running test to destroy your config :)
7
11
 
8
12
  ## [0.2.2] - 2015-12-02
9
13
  ### Fixed
@@ -38,7 +42,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
38
42
  ## [0.0.1] - 2015-07-04
39
43
  - Initial Release
40
44
 
41
- [unreleased]: https://github.com/AdrieanKhisbe/velibe/compare/v0.2.1...HEAD
45
+ [unreleased]: https://github.com/AdrieanKhisbe/velibe/compare/v0.2.3...HEAD
46
+ [0.2.3]: https://github.com/AdrieanKhisbe/velibe/compare/v0.2.2...v0.2.3
47
+ [0.2.2]: https://github.com/AdrieanKhisbe/velibe/compare/v0.2.1...v0.2.2
42
48
  [0.2.1]: https://github.com/AdrieanKhisbe/velibe/compare/v0.2.0...v0.2.1
43
49
  [0.2.0]: https://github.com/AdrieanKhisbe/velibe/compare/v0.1.0...v0.2.0
44
50
  [0.1.0]: https://github.com/AdrieanKhisbe/velibe/compare/v0.0.2...v0.1.0
data/Rakefile CHANGED
@@ -1,8 +1,19 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
- # §todo: see task offered
1
+ # coding: utf-8
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+ require 'cucumber'
5
+ require 'cucumber/rake/task'
6
+
7
+ # §todo: see task offered : -T flag
4
8
  # see -> http://pablocantero.com/blog/2011/01/02/new-gem-with-bundler-sample-rakefile/
5
9
 
6
10
  RSpec::Core::RakeTask.new(:spec)
11
+ Cucumber::Rake::Task.new(:features) do |t|
12
+ t.cucumber_opts = 'features --format pretty'
13
+ end
14
+
15
+ task test: [:spec, :features]
16
+ task default: :test
17
+
18
+
7
19
 
8
- task :default => :spec
@@ -0,0 +1,5 @@
1
+
2
+
3
+ Given(/^my favorites stations are ([\d, ]+)$/) do |pattern|
4
+ Velibe::KvStore.reset_favorite_stations *pattern.split(', ')
5
+ end
@@ -0,0 +1 @@
1
+ require 'aruba/cucumber'
@@ -0,0 +1,26 @@
1
+ require 'aruba/cucumber'
2
+ velibe_lib = File.expand_path('../../lib', __FILE__)
3
+
4
+ ENV['VELIBE_DB_PATH'] = '/tmp/velibe.db'
5
+ ENV['VELIBE_CONFIG_PATH'] = '/tmp/velibe.yaml'
6
+ ENV['VELIBE_TOKEN'] = 'fake-test-value'
7
+
8
+ if ENV['TRAVIS']
9
+ require 'simplecov'
10
+ require 'coveralls'
11
+
12
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
13
+ SimpleCov.start do
14
+ # No need to report coverage metrics for the test code
15
+ add_filter 'test'
16
+ add_filter 'features'
17
+ add_filter 'data'
18
+ end
19
+
20
+ # Eager load the entire lib directory so that SimpleCov is able to report
21
+ # accurate code coverage metrics.
22
+ at_exit { Dir["#{velibe_lib}/**/*.rb"].each { |rb| require(rb) } }
23
+ end
24
+
25
+ $LOAD_PATH.unshift velibe_lib
26
+ require 'velibe'
@@ -0,0 +1,16 @@
1
+ Feature: Playing with favorites
2
+ In order to see not specify each time wich station i'm interested in
3
+ As a user of the velibe cli
4
+ I want to be handle to manage favorite
5
+
6
+
7
+ Background: Favorites Exists
8
+ Given my favorites stations are 22, 42, 68
9
+
10
+ Scenario: List favorites
11
+
12
+ Scenario: Add a Favorite
13
+
14
+
15
+
16
+ Scenario: Force Reset of favorites
@@ -0,0 +1,25 @@
1
+ Feature: Querying the API
2
+ In order to see if I can take a bike at a given station
3
+ As a user of the velibe cli
4
+ I want to be able to query the api through the velibe cli
5
+
6
+ Background: Favorites Exists
7
+ Given my favorites stations are 22, 42, 68
8
+
9
+ Scenario: By Default, my favorites are queried
10
+ Given a file named "file.txt" with:
11
+ """
12
+ Hello World
13
+ """
14
+ Then the file "file.txt" should contain:
15
+ """
16
+ Hello World
17
+ """
18
+
19
+
20
+ Scenario: I can specify the station i'm interested into
21
+
22
+
23
+
24
+
25
+ Scenario: Wrong arguments are ignored and warning is printed
@@ -50,7 +50,7 @@ module Velibe
50
50
  end
51
51
 
52
52
  def self.add_favorite(stations)
53
- KvStore.add_favorite_station(*stations)
53
+ KvStore.add_favorite_station *stations
54
54
  end
55
55
 
56
56
  def self.setup_station_database(force = false)
@@ -0,0 +1,15 @@
1
+ module Velibe
2
+ module Config
3
+ # §see: http://stackoverflow.com/questions/7828066/accessing-files-packaged-into-a-ruby-gem
4
+
5
+ DB_NAME = ENV['VELIBE_DB_PATH'] || '~/.velib.db'
6
+ DB_PATH = Pathname.new(DB_NAME).expand_path # .to_s?
7
+ DATA_CSV = '../../data/Paris.csv'
8
+
9
+ DATA_CSV_FILE = File.join(File.dirname(File.expand_path(__FILE__)), DATA_CSV)
10
+
11
+ KV_NAME = ENV['VELIBE_CONFIG_PATH'] || '~/.velib.yaml'
12
+ KV_PATH = Pathname.new(KV_NAME).expand_path
13
+
14
+ end
15
+ end
@@ -6,15 +6,12 @@ require 'sqlite3'
6
6
  require 'active_record'
7
7
  require 'csv'
8
8
  require 'velibe/db/models'
9
+ require 'velibe/config'
9
10
 
10
11
  module Velibe
11
12
 
12
13
  module Database
13
- DB_NAME = '~/.velib.db' # TODO: more generic + config
14
- DB_PATH = Pathname.new(DB_NAME).expand_path # .to_s?
15
- DATA_CSV = '../../../data/Paris.csv'
16
- DATA_CSV_FILE = File.join(File.dirname(File.expand_path(__FILE__)), DATA_CSV)
17
- # §see: http://stackoverflow.com/questions/7828066/accessing-files-packaged-into-a-ruby-gem
14
+ include Config
18
15
 
19
16
  def self.exist?
20
17
  DB_PATH.exist? # §check
@@ -1,34 +1,44 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'moneta'
3
3
  require 'pathname'
4
+ require 'velibe/config'
4
5
 
5
6
  module Velibe
6
7
 
7
8
  module KvStore
8
- NAME = '~/.velib.yaml' # TODO: more generic
9
- PATH = Pathname.new(NAME).expand_path
10
- DB = Moneta.new(:YAML, file: PATH)
9
+ include Config
11
10
 
11
+ KV_DB = Moneta.new(:YAML, file: KV_PATH)
12
12
  FAV_KEY = 'favorites'
13
13
 
14
+ def self.db
15
+ KV_DB
16
+ end
17
+
18
+ def self.fav_key
19
+ FAV_KEY
20
+ end
21
+
14
22
  def self.token
15
- DB['token']
23
+ KV_DB['token']
16
24
  end
17
25
 
18
- def self.reset_favorite_stations
19
- DB[FAV_KEY] = []
26
+ def self.reset_favorite_stations(*new_stations)
27
+ KV_DB[FAV_KEY] = new_stations.collect(&:to_i)
20
28
  end
21
29
 
22
30
  def self.favorite_stations
23
- DB[FAV_KEY]
31
+ KV_DB[FAV_KEY]
24
32
  end
25
33
 
26
34
  def self.add_favorite_station(*stations)
27
- fav = DB[FAV_KEY]
35
+ fav = KV_DB[FAV_KEY]
28
36
  # TODO: handle setup
29
37
  # TODO: check existing station
30
- stations.each { |station| fav.push(station) unless fav.include?(station) }
31
- DB[FAV_KEY] = fav
38
+ stations.collect(&:to_i).each do |station|
39
+ fav.push(station) unless fav.include?(station)
40
+ end
41
+ KV_DB[FAV_KEY] = fav
32
42
  end
33
43
 
34
44
  end
@@ -1,3 +1,3 @@
1
1
  module Velibe
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe Velibe::KvStore do
5
+
6
+
7
+ before { Velibe::KvStore.db[Velibe::KvStore.fav_key] = [2, 3, 4] }
8
+ let(:favorites) { Velibe::KvStore.favorite_stations }
9
+
10
+
11
+ describe '#token' do
12
+ let(:token) { Velibe::KvStore.token }
13
+ context 'no token in conf' do
14
+ before { Velibe::KvStore.db.delete 'token'}
15
+ it { expect(token).to be_nil }
16
+ end
17
+ context 'with token in conf' do
18
+ before { Velibe::KvStore.db['token'] = 'fake-test-value' }
19
+ it { expect(token).to eq 'fake-test-value' }
20
+ end
21
+ end
22
+
23
+ describe '#favorite_stations' do
24
+ it { expect(favorites).to eq [2, 3, 4] }
25
+ end
26
+
27
+ describe '#reset_favorite_stations' do
28
+
29
+ context 'default arguments' do
30
+ before { Velibe::KvStore.reset_favorite_stations }
31
+ it { expect(favorites).to eq [] }
32
+ end
33
+
34
+ context 'specific arguments' do
35
+ before { Velibe::KvStore.reset_favorite_stations 12, 42 }
36
+ it { expect(favorites).to eq [12, 42] }
37
+ end
38
+
39
+ context 'specific arguments as string' do
40
+ before { Velibe::KvStore.reset_favorite_stations '33' }
41
+ it { expect(favorites).to eq [33] }
42
+ end
43
+
44
+ end
45
+
46
+ describe '#add_favorite_station' do
47
+ before { Velibe::KvStore.add_favorite_station *new_fav }
48
+ let(:final_fav) { Velibe::KvStore.favorite_stations }
49
+
50
+ context 'single new favorite' do
51
+ let(:new_fav) { 5 }
52
+ it { expect(final_fav).to eq (2..5).to_a }
53
+ end
54
+
55
+ context 'list of favorites' do
56
+ let(:new_fav) { (5..10).to_a }
57
+ it { expect(final_fav).to eq (2..10).to_a }
58
+ end
59
+
60
+ context 'single new as string' do
61
+ let(:new_fav) { '5' }
62
+ it { expect(final_fav).to eq (2..5).to_a }
63
+ end
64
+
65
+ context 'ignore duplicates' do
66
+ let(:new_fav) { (3..5).to_a }
67
+ it { expect(final_fav).to eq (2..5).to_a }
68
+ end
69
+
70
+ context 'no values' do
71
+ let(:new_fav) {}
72
+ it { expect(final_fav).to eq (2..4).to_a }
73
+ end
74
+
75
+
76
+ end
77
+
78
+ end
@@ -1,5 +1,9 @@
1
1
  velibe_lib = File.expand_path('../../lib', __FILE__)
2
2
 
3
+ ENV['VELIBE_DB_PATH'] = '/tmp/velibe.db'
4
+ ENV['VELIBE_CONFIG_PATH'] = '/tmp/velibe.yaml'
5
+ ENV['VELIBE_TOKEN'] = 'fake-test-value'
6
+
3
7
  if ENV['TRAVIS']
4
8
  require 'simplecov'
5
9
  require 'coveralls'
@@ -8,6 +12,8 @@ if ENV['TRAVIS']
8
12
  SimpleCov.start do
9
13
  # No need to report coverage metrics for the test code
10
14
  add_filter 'test'
15
+ add_filter 'features'
16
+ add_filter 'data'
11
17
  end
12
18
 
13
19
  # Eager load the entire lib directory so that SimpleCov is able to report
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'bundler', '~> 1.6'
27
27
  spec.add_development_dependency 'rake'
28
28
  spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'cucumber'
30
+ spec.add_development_dependency 'aruba', '~> 0.11.1'
29
31
  spec.add_development_dependency 'simplecov'
30
32
  spec.add_development_dependency 'coveralls'
31
33
  spec.add_development_dependency 'jazz_fingers'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: velibe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adriean Khisbe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-02 00:00:00.000000000 Z
11
+ date: 2015-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: cucumber
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: aruba
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.11.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.11.1
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: simplecov
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -186,13 +214,20 @@ files:
186
214
  - bin/velibe
187
215
  - data/Paris.csv
188
216
  - data/Paris.json
217
+ - features/step_definitions/config_steps.rb
218
+ - features/support/aruba.rb
219
+ - features/support/env.rb
220
+ - features/velibe_favorites.feature
221
+ - features/velibe_query.feature
189
222
  - lib/velibe.rb
190
223
  - lib/velibe/api_velib.rb
224
+ - lib/velibe/config.rb
191
225
  - lib/velibe/db/database.rb
192
226
  - lib/velibe/db/kv_store.rb
193
227
  - lib/velibe/db/models.rb
194
228
  - lib/velibe/station_status.rb
195
229
  - lib/velibe/version.rb
230
+ - spec/kv_store_spec.rb
196
231
  - spec/spec_helper.rb
197
232
  - spec/station_status_spec.rb
198
233
  - velibe.gemspec
@@ -222,6 +257,12 @@ signing_key:
222
257
  specification_version: 4
223
258
  summary: Small Velib Utility
224
259
  test_files:
260
+ - features/step_definitions/config_steps.rb
261
+ - features/support/aruba.rb
262
+ - features/support/env.rb
263
+ - features/velibe_favorites.feature
264
+ - features/velibe_query.feature
265
+ - spec/kv_store_spec.rb
225
266
  - spec/spec_helper.rb
226
267
  - spec/station_status_spec.rb
227
268
  has_rdoc: