forecastr 0.1.4 → 0.1.5
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 +4 -4
- data/.ruby-version +1 -0
- data/Rakefile +8 -0
- data/forecastr.gemspec +3 -1
- data/lib/forecastr.rb +7 -6
- data/lib/forecastr/temperature.rb +2 -2
- data/lib/forecastr/temperature_converter.rb +13 -0
- data/lib/forecastr/version.rb +1 -1
- data/lib/forecastr/wind.rb +0 -2
- data/test/fixtures/data.json +1 -0
- data/test/fixtures/london.json +1 -0
- data/test/fixtures/skopje.json +1 -0
- data/test/forecastr/client_test.rb +18 -0
- data/test/forecastr/data_container_test.rb +25 -0
- data/test/forecastr/forecast_test.rb +58 -0
- data/test/forecastr/radar_test.rb +31 -0
- data/test/forecastr/temperature_converter_test.rb +12 -0
- data/test/forecastr/temperature_test.rb +16 -0
- data/test/forecastr/wind_test.rb +16 -0
- data/test/test_helper.rb +22 -0
- metadata +67 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 321b89adbd4783414005b54527fba04d252f8ec2
|
4
|
+
data.tar.gz: af8e349865f35855a8c51e33c88340514506c190
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a17d0d59bc103ae3e12f0b2452495298364be357fa5d203ebe3f634cc079f9129cb6a79da57f157c29498f30916aa6f3c3ee13a4bf45237504d7d60ca2779d58
|
7
|
+
data.tar.gz: dd96b4997d9735fd75685797e1970fb8c79b78bb29bd29858b94fbd9ed2480528491ea2339817c1dfb7cb7c91c3ee71424418efca2cfe98a6e32c09d3d165248
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.2
|
data/Rakefile
CHANGED
data/forecastr.gemspec
CHANGED
@@ -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 "
|
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
|
data/lib/forecastr.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require "forecastr/version"
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
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
|
9
|
+
TemperatureConverter.to_celsius(@kelvin)
|
10
10
|
end
|
11
11
|
|
12
12
|
def to_farenheit
|
13
|
-
|
13
|
+
TemperatureConverter.to_farenheit(@kelvin)
|
14
14
|
end
|
15
15
|
|
16
16
|
def to_s
|
data/lib/forecastr/version.rb
CHANGED
data/lib/forecastr/wind.rb
CHANGED
@@ -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
|
data/test/test_helper.rb
ADDED
@@ -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
|
+
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:
|
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:
|
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.
|
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
|