forecastr 0.1.3 → 0.1.4
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/lib/forecastr/data_container.rb +3 -1
- data/lib/forecastr/forecast.rb +5 -1
- data/lib/forecastr/version.rb +1 -1
- data/spec/fixtures/data.json +1 -12
- data/spec/forecastr/data_container_spec.rb +2 -0
- data/spec/forecastr/forecast_spec.rb +20 -12
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cffd26866155781856d6e6502d6d1c11ca6db40
|
4
|
+
data.tar.gz: 89de042eefbdfb4e49b584203e5ba12346c2d5a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 893ce64e40851ab239770e65c5a023999f7b188e5d7f2330e4ed79dd4edd03fa71f3132cff0eefe71aed6ae4679a0f897c7a9595428925bedd1dc49d66bf8c0b
|
7
|
+
data.tar.gz: 29071cd3a3cf4a8e3498fd34df79859d769887282e22ec99f2036e5a136c0ad1eb819dfe66d0f0f1ce5acc11be8ff56a9df0319094d9baad5113ff6d9fc42fdd
|
@@ -2,7 +2,7 @@ module Forecastr
|
|
2
2
|
class DataContainer
|
3
3
|
|
4
4
|
attr_reader :city, :longitude, :latitude, :pressure, :humidity, :clouds,
|
5
|
-
:temperature, :min_temperature, :max_temperature, :wind_speed, :wind_angle
|
5
|
+
:temperature, :min_temperature, :max_temperature, :wind_speed, :wind_angle, :sunrise, :sunset
|
6
6
|
|
7
7
|
def initialize(json)
|
8
8
|
@city = json['name']
|
@@ -16,6 +16,8 @@ module Forecastr
|
|
16
16
|
@clouds = json['clouds']['all']
|
17
17
|
@wind_speed = json['wind']['speed']
|
18
18
|
@wind_angle = json['wind']['deg']
|
19
|
+
@sunrise = json['sys']['sunrise'].to_s
|
20
|
+
@sunset = json['sys']['sunset'].to_s
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
data/lib/forecastr/forecast.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
1
3
|
module Forecastr
|
2
4
|
class Forecast
|
3
5
|
|
4
6
|
attr_reader :city, :longitude, :latitude, :temperature,
|
5
7
|
:pressure, :humidity, :min_temperature,
|
6
|
-
:max_temperature, :clouds, :wind
|
8
|
+
:max_temperature, :clouds, :wind, :sunrise, :sunset
|
7
9
|
|
8
10
|
def initialize(data)
|
9
11
|
@city = data.city
|
@@ -16,6 +18,8 @@ module Forecastr
|
|
16
18
|
@max_temperature = Forecastr::Temperature.new(data.max_temperature)
|
17
19
|
@clouds = data.clouds
|
18
20
|
@wind = Forecastr::Wind.new(data.wind_speed, data.wind_angle)
|
21
|
+
@sunset = DateTime.strptime(data.sunset, '%s')
|
22
|
+
@sunrise = DateTime.strptime(data.sunrise, '%s')
|
19
23
|
end
|
20
24
|
|
21
25
|
end
|
data/lib/forecastr/version.rb
CHANGED
data/spec/fixtures/data.json
CHANGED
@@ -1,12 +1 @@
|
|
1
|
-
{"id":
|
2
|
-
"coord":{"lat":32.12,"lon":20.07},
|
3
|
-
"main":{"temp":306.15,"pressure":1013,"humidity":44,"temp_min":306,"temp_max":306},
|
4
|
-
"wind":{"speed":1,"deg":-7},
|
5
|
-
"weather":[
|
6
|
-
{"id":520,"main":"Rain","description":"light intensity shower rain","icon":"09d"},
|
7
|
-
{"id":500,"main":"Rain","description":"light rain","icon":"10d"},
|
8
|
-
{"id":701,"main":"Mist","description":"mist","icon":"50d"}
|
9
|
-
],
|
10
|
-
"clouds":{"all":90},
|
11
|
-
"rain":{"3h":3}
|
12
|
-
}
|
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}
|
@@ -16,5 +16,7 @@ describe Forecastr::DataContainer do
|
|
16
16
|
expect(container.clouds).to eq 0
|
17
17
|
expect(container.wind_speed).to eq 1.16
|
18
18
|
expect(container.wind_angle).to eq 128.501
|
19
|
+
expect(container.sunrise).to eq '1395376499'
|
20
|
+
expect(container.sunset).to eq '1395420461'
|
19
21
|
end
|
20
22
|
end
|
@@ -1,21 +1,29 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Forecastr::Forecast do
|
4
|
-
let(:json) { JSON.parse(fixture('
|
4
|
+
let(:json) { JSON.parse(fixture('london.json').read) }
|
5
5
|
let(:data) { Forecastr::DataContainer.new(json) }
|
6
6
|
let(:forecast) { Forecastr::Forecast.new(data) }
|
7
7
|
|
8
8
|
it 'has a city' do
|
9
|
-
expect(forecast.city).to eq "
|
9
|
+
expect(forecast.city).to eq "London"
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has time of sunrise' do
|
13
|
+
expect(forecast.sunrise).to eq DateTime.parse("2014-03-21T05:59:29+00:00")
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has time of sunset' do
|
17
|
+
expect(forecast.sunset).to eq DateTime.parse("2014-03-21 19:15:36 +0100")
|
10
18
|
end
|
11
19
|
|
12
20
|
describe 'coordinates' do
|
13
21
|
it 'has longitude' do
|
14
|
-
expect(forecast.longitude).to eq
|
22
|
+
expect(forecast.longitude).to eq -0.13
|
15
23
|
end
|
16
24
|
|
17
25
|
it 'has latitude' do
|
18
|
-
expect(forecast.latitude).to eq
|
26
|
+
expect(forecast.latitude).to eq 51.51
|
19
27
|
end
|
20
28
|
end
|
21
29
|
|
@@ -23,42 +31,42 @@ describe Forecastr::Forecast do
|
|
23
31
|
describe 'temperatures' do
|
24
32
|
context 'celsius' do
|
25
33
|
it 'has current temperature' do
|
26
|
-
expect(forecast.temperature.to_celsius).to eq
|
34
|
+
expect(forecast.temperature.to_celsius).to eq 7.64
|
27
35
|
end
|
28
36
|
|
29
37
|
it 'has minimal temperature' do
|
30
|
-
expect(forecast.min_temperature.to_celsius).to eq
|
38
|
+
expect(forecast.min_temperature.to_celsius).to eq 6.11
|
31
39
|
end
|
32
40
|
|
33
41
|
it 'has maximal temperature' do
|
34
|
-
expect(forecast.max_temperature.to_celsius).to eq
|
42
|
+
expect(forecast.max_temperature.to_celsius).to eq 9.0
|
35
43
|
end
|
36
44
|
end
|
37
45
|
end
|
38
46
|
|
39
47
|
it 'has pressure' do
|
40
|
-
expect(forecast.pressure).to eq
|
48
|
+
expect(forecast.pressure).to eq 1001
|
41
49
|
end
|
42
50
|
|
43
51
|
it 'has humidity' do
|
44
|
-
expect(forecast.humidity).to eq
|
52
|
+
expect(forecast.humidity).to eq 70
|
45
53
|
end
|
46
54
|
|
47
55
|
end
|
48
56
|
|
49
57
|
describe 'clouds' do
|
50
58
|
it 'has cloud coverage in %' do
|
51
|
-
expect(forecast.clouds).to eq
|
59
|
+
expect(forecast.clouds).to eq 92
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
55
63
|
describe 'wind' do
|
56
64
|
it 'has speed in m/s' do
|
57
|
-
expect(forecast.wind.speed).to eq "1 m/s"
|
65
|
+
expect(forecast.wind.speed).to eq "5.1 m/s"
|
58
66
|
end
|
59
67
|
|
60
68
|
it 'has direction' do
|
61
|
-
expect(forecast.wind.direction).to eq "
|
69
|
+
expect(forecast.wind.direction).to eq "S"
|
62
70
|
end
|
63
71
|
end
|
64
72
|
end
|