forecastr 0.1.4 → 0.1.5

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: 5cffd26866155781856d6e6502d6d1c11ca6db40
4
- data.tar.gz: 89de042eefbdfb4e49b584203e5ba12346c2d5a3
3
+ metadata.gz: 321b89adbd4783414005b54527fba04d252f8ec2
4
+ data.tar.gz: af8e349865f35855a8c51e33c88340514506c190
5
5
  SHA512:
6
- metadata.gz: 893ce64e40851ab239770e65c5a023999f7b188e5d7f2330e4ed79dd4edd03fa71f3132cff0eefe71aed6ae4679a0f897c7a9595428925bedd1dc49d66bf8c0b
7
- data.tar.gz: 29071cd3a3cf4a8e3498fd34df79859d769887282e22ec99f2036e5a136c0ad1eb819dfe66d0f0f1ce5acc11be8ff56a9df0319094d9baad5113ff6d9fc42fdd
6
+ metadata.gz: a17d0d59bc103ae3e12f0b2452495298364be357fa5d203ebe3f634cc079f9129cb6a79da57f157c29498f30916aa6f3c3ee13a4bf45237504d7d60ca2779d58
7
+ data.tar.gz: dd96b4997d9735fd75685797e1970fb8c79b78bb29bd29858b94fbd9ed2480528491ea2339817c1dfb7cb7c91c3ee71424418efca2cfe98a6e32c09d3d165248
@@ -0,0 +1 @@
1
+ 2.2.2
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs.push 'test'
6
+ t.pattern = 'test/**/*_test.rb'
7
+ end
8
+
9
+ task default: :test
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "minitest"
24
+ spec.add_development_dependency "m"
25
+ spec.add_development_dependency "minitest-reporters"
24
26
  spec.add_development_dependency "webmock"
25
27
  end
@@ -1,7 +1,8 @@
1
1
  require "forecastr/version"
2
- require 'forecastr/radar'
3
- require 'forecastr/forecast'
4
- require 'forecastr/wind'
5
- require 'forecastr/temperature'
6
- require 'forecastr/data_container'
7
- require 'forecastr/client'
2
+ require "forecastr/radar"
3
+ require "forecastr/forecast"
4
+ require "forecastr/wind"
5
+ require "forecastr/temperature"
6
+ require "forecastr/data_container"
7
+ require "forecastr/client"
8
+ require "forecastr/temperature_converter"
@@ -6,11 +6,11 @@ module Forecastr
6
6
  end
7
7
 
8
8
  def to_celsius
9
- (@kelvin - 273.15).round(2)
9
+ TemperatureConverter.to_celsius(@kelvin)
10
10
  end
11
11
 
12
12
  def to_farenheit
13
- (1.8 * (@kelvin - 273.15) + 32).round(2)
13
+ TemperatureConverter.to_farenheit(@kelvin)
14
14
  end
15
15
 
16
16
  def to_s
@@ -0,0 +1,13 @@
1
+ module Forecastr
2
+ class TemperatureConverter
3
+ class << self
4
+ def to_celsius kelvins
5
+ (kelvins - 273.15).round(2)
6
+ end
7
+
8
+ def to_farenheit kelvins
9
+ (1.8 * (kelvins - 273.15) + 32).round(2)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Forecastr
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -2,8 +2,6 @@ module Forecastr
2
2
  class Wind
3
3
  DIRECTIONS = ["N","NNE","NE","ENE","E","ESE", "SE", "SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"]
4
4
 
5
- attr_reader :speed, :direction
6
-
7
5
  def initialize(speed, angle)
8
6
  @speed = speed
9
7
  @angle = angle
@@ -0,0 +1 @@
1
+ {"coord":{"lon":-0.13,"lat":51.51},"sys":{"message":0.0846,"country":"GB","sunrise":1395640357,"sunset":1395685239},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"cmc stations","main":{"temp":279.64,"humidity":55,"pressure":1003,"temp_min":278.71,"temp_max":280.37},"wind":{"speed":2.06,"gust":3.6,"deg":350},"clouds":{"all":92},"dt":1395699452,"id":2643743,"name":"London","cod":200}
@@ -0,0 +1 @@
1
+ {"coord":{"lon":-0.13,"lat":51.51},"sys":{"message":0.047,"country":"GB","sunrise":1395381569,"sunset":1395425736},"weather":[{"id":520,"main":"Rain","description":"light intensity shower rain","icon":"09n"}],"base":"cmc stations","main":{"temp":280.79,"pressure":1001,"humidity":70,"temp_min":279.26,"temp_max":282.15},"wind":{"speed":5.1,"deg":180,"var_beg":150,"var_end":210},"rain":{"1h":5.08},"clouds":{"all":92},"dt":1395441145,"id":2643743,"name":"London","cod":200}
@@ -0,0 +1 @@
1
+ {"coord":{"lon":21.43,"lat":42},"sys":{"message":0.0427,"country":"MK","sunrise":1395376499,"sunset":1395420461},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01n"}],"base":"cmc stations","main":{"temp":283.85,"pressure":1021,"humidity":70,"temp_min":280.15,"temp_max":285.93},"wind":{"speed":1.16,"deg":128.501},"clouds":{"all":0},"dt":1395441000,"id":863860,"name":"Opština Karpoš","cod":200}
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::ClientTest < Minitest::Test
4
+ def test_fetching_city_data_from_api
5
+ stub_get("http://api.openweathermap.org/data/2.5/weather?q=London,UK").to_return(:body => fixture('london.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
6
+ results = Forecastr::Client.search_by_city('London,UK')
7
+
8
+ assert_equal results.city, "London"
9
+ end
10
+
11
+ def test_fetching_coordinates_data_from_api
12
+ stub_get("http://api.openweathermap.org/data/2.5/weather?lat=42.0&lon=21.4333").to_return(:body => fixture('skopje.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
13
+ results = Forecastr::Client.search_by_coordinates(42.0, 21.4333)
14
+
15
+ assert_equal results.city, "Opština Karpoš"
16
+ end
17
+
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::DataContainerTest < Minitest::Test
4
+
5
+ def setup
6
+ json = JSON.parse(fixture('skopje.json').read)
7
+ @container = Forecastr::DataContainer.new(json)
8
+ end
9
+
10
+ def test_mapping_from_json
11
+ assert_equal @container.city, "Opština Karpoš"
12
+ assert_equal @container.longitude, 21.43
13
+ assert_equal @container.latitude, 42
14
+ assert_equal @container.temperature, 283.85
15
+ assert_equal @container.pressure, 1021
16
+ assert_equal @container.humidity, 70
17
+ assert_equal @container.min_temperature, 280.15
18
+ assert_equal @container.max_temperature, 285.93
19
+ assert_equal @container.clouds, 0
20
+ assert_equal @container.wind_speed, 1.16
21
+ assert_equal @container.wind_angle, 128.501
22
+ assert_equal @container.sunrise, '1395376499'
23
+ assert_equal @container.sunset, '1395420461'
24
+ end
25
+ end
@@ -0,0 +1,58 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::ForecastTest < Minitest::Test
4
+ def setup
5
+ json = JSON.parse(fixture('london.json').read)
6
+ @data = Forecastr::DataContainer.new(json)
7
+ @forecast = Forecastr::Forecast.new(@data)
8
+ end
9
+
10
+ def test_it_has_a_city
11
+ assert_equal @forecast.city, @data.city
12
+ end
13
+
14
+ def test_it_has_time_of_sunrise
15
+ assert_equal @forecast.sunrise, DateTime.strptime(@data.sunrise, '%s')
16
+ end
17
+
18
+ def test_time_of_sunset
19
+ assert_equal @forecast.sunset, DateTime.strptime(@data.sunset, '%s')
20
+ end
21
+
22
+ def test_longitude
23
+ assert_equal @forecast.longitude, @data.longitude
24
+ end
25
+
26
+ def test_latitude
27
+ assert_equal @forecast.latitude, @data.latitude
28
+ end
29
+
30
+ def test_current_temperature
31
+ assert_equal @forecast.temperature.to_celsius, Forecastr::TemperatureConverter.to_celsius(@data.temperature)
32
+ end
33
+
34
+ def test_minimal_temperature
35
+ assert_equal @forecast.min_temperature.to_celsius, Forecastr::TemperatureConverter.to_celsius(@data.min_temperature)
36
+ end
37
+
38
+ def test_maximal_temperature
39
+ assert_equal @forecast.max_temperature.to_celsius, Forecastr::TemperatureConverter.to_celsius(@data.max_temperature)
40
+ end
41
+
42
+ def test_pressure
43
+ assert_equal @forecast.pressure, 1001
44
+ end
45
+
46
+ def test_humidity
47
+ assert_equal @forecast.humidity, 70
48
+ end
49
+
50
+ def test_cloud_coverage
51
+ assert_equal @forecast.clouds, 92
52
+ end
53
+
54
+ def test_wind
55
+ assert_respond_to @forecast, :wind
56
+ assert_kind_of Forecastr::Wind, @forecast.wind
57
+ end
58
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::RadarTest < Minitest::Test
4
+
5
+ def setup
6
+ @radar = Forecastr::Radar.new
7
+ end
8
+
9
+ def test_find_forecast_for_city
10
+ stub_get("http://api.openweathermap.org/data/2.5/weather?q=London,UK").to_return(:body => fixture('london.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
11
+
12
+ forecast = @radar.find_by_city("London,UK")
13
+
14
+ assert_equal forecast.city, "London"
15
+ assert_equal forecast.temperature.to_celsius, 7.64
16
+ assert_equal forecast.humidity, 70
17
+ assert_equal forecast.pressure, 1001
18
+ end
19
+
20
+
21
+ def test_find_forecast_by_coordinates
22
+ stub_get("http://api.openweathermap.org/data/2.5/weather?lat=42.0&lon=21.4333").to_return(:body => fixture('skopje.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
23
+
24
+ forecast = @radar.find_by_coordinates(42.000, 21.4333)
25
+
26
+ assert_equal forecast.city, "Opština Karpoš"
27
+ assert_equal forecast.temperature.to_celsius, 10.7
28
+ assert_equal forecast.humidity, 70
29
+ assert_equal forecast.pressure, 1021
30
+ end
31
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::TemperatureConverterTest < Minitest::Test
4
+
5
+ def test_celsius_conversion
6
+ assert_equal Forecastr::TemperatureConverter.to_celsius(273.15), 0
7
+ end
8
+
9
+ def test_farenheit_conversion
10
+ assert_equal Forecastr::TemperatureConverter.to_farenheit(278), 40.73
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::TemperatureTest < Minitest::Test
4
+
5
+ def setup
6
+ @temperature = Forecastr::Temperature.new(306.11)
7
+ end
8
+
9
+ def test_to_celsius
10
+ assert_equal @temperature.to_celsius, 32.96
11
+ end
12
+
13
+ def test_to_farenheit
14
+ assert_equal @temperature.to_farenheit, 91.33
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+
3
+ class Forecastr::WindTest < Minitest::Test
4
+
5
+ def setup
6
+ @wind = Forecastr::Wind.new(2.5, -37)
7
+ end
8
+
9
+ def test_speed_in_ms
10
+ assert_equal @wind.speed, "2.5 m/s"
11
+ end
12
+
13
+ def test_direction
14
+ assert_equal @wind.direction, "NNW"
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ require 'forecastr'
2
+ require 'minitest/autorun'
3
+ require 'minitest/unit'
4
+ require "minitest/reporters"
5
+ require 'webmock'
6
+
7
+ include WebMock::API
8
+
9
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
10
+
11
+ def fixture_path
12
+ File.expand_path('../fixtures', __FILE__)
13
+ end
14
+
15
+ def fixture(file)
16
+ File.new(fixture_path + '/' + file)
17
+ end
18
+
19
+ def stub_get(path)
20
+ stub_request(:get, path)
21
+ end
22
+
metadata CHANGED
@@ -1,69 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forecastr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ile Eftimov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-24 00:00:00.000000000 Z
11
+ date: 2015-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
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
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
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
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: m
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: webmock
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - '>='
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
89
  version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - '>='
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  description: Simple gem to use with openweathermap.org API
@@ -73,7 +101,8 @@ executables: []
73
101
  extensions: []
74
102
  extra_rdoc_files: []
75
103
  files:
76
- - .gitignore
104
+ - ".gitignore"
105
+ - ".ruby-version"
77
106
  - Gemfile
78
107
  - LICENSE.txt
79
108
  - README.md
@@ -85,6 +114,7 @@ files:
85
114
  - lib/forecastr/forecast.rb
86
115
  - lib/forecastr/radar.rb
87
116
  - lib/forecastr/temperature.rb
117
+ - lib/forecastr/temperature_converter.rb
88
118
  - lib/forecastr/version.rb
89
119
  - lib/forecastr/wind.rb
90
120
  - spec/fixtures/data.json
@@ -97,6 +127,17 @@ files:
97
127
  - spec/forecastr/temperature_spec.rb
98
128
  - spec/forecastr/wind_spec.rb
99
129
  - spec/spec_helper.rb
130
+ - test/fixtures/data.json
131
+ - test/fixtures/london.json
132
+ - test/fixtures/skopje.json
133
+ - test/forecastr/client_test.rb
134
+ - test/forecastr/data_container_test.rb
135
+ - test/forecastr/forecast_test.rb
136
+ - test/forecastr/radar_test.rb
137
+ - test/forecastr/temperature_converter_test.rb
138
+ - test/forecastr/temperature_test.rb
139
+ - test/forecastr/wind_test.rb
140
+ - test/test_helper.rb
100
141
  homepage: http://github.com/fteem/forecastr
101
142
  licenses:
102
143
  - MIT
@@ -107,17 +148,17 @@ require_paths:
107
148
  - lib
108
149
  required_ruby_version: !ruby/object:Gem::Requirement
109
150
  requirements:
110
- - - '>='
151
+ - - ">="
111
152
  - !ruby/object:Gem::Version
112
153
  version: '0'
113
154
  required_rubygems_version: !ruby/object:Gem::Requirement
114
155
  requirements:
115
- - - '>='
156
+ - - ">="
116
157
  - !ruby/object:Gem::Version
117
158
  version: '0'
118
159
  requirements: []
119
160
  rubyforge_project:
120
- rubygems_version: 2.0.3
161
+ rubygems_version: 2.4.5
121
162
  signing_key:
122
163
  specification_version: 4
123
164
  summary: Simple gem to use with openweathermap.org API
@@ -132,3 +173,14 @@ test_files:
132
173
  - spec/forecastr/temperature_spec.rb
133
174
  - spec/forecastr/wind_spec.rb
134
175
  - spec/spec_helper.rb
176
+ - test/fixtures/data.json
177
+ - test/fixtures/london.json
178
+ - test/fixtures/skopje.json
179
+ - test/forecastr/client_test.rb
180
+ - test/forecastr/data_container_test.rb
181
+ - test/forecastr/forecast_test.rb
182
+ - test/forecastr/radar_test.rb
183
+ - test/forecastr/temperature_converter_test.rb
184
+ - test/forecastr/temperature_test.rb
185
+ - test/forecastr/wind_test.rb
186
+ - test/test_helper.rb