Skip to content

Commit 0b32da0

Browse files
committed
Update openweather condition mapping for accuracy
1 parent 9fb951b commit 0b32da0

File tree

2 files changed

+36
-13
lines changed

2 files changed

+36
-13
lines changed

src/providers/openweather/condition.test.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ describe('OpenWeather Conditions', () => {
66
// Test with OpenWeather ID-based conditions
77
expect(standardizeCondition(800)).toEqual(StandardWeatherCondition.Clear);
88
expect(standardizeCondition(801)).toEqual(StandardWeatherCondition.PartlyCloudy);
9-
expect(standardizeCondition(802)).toEqual(StandardWeatherCondition.MostlyCloudy);
10-
expect(standardizeCondition(803)).toEqual(StandardWeatherCondition.Overcast);
9+
expect(standardizeCondition(802)).toEqual(StandardWeatherCondition.Cloudy);
10+
expect(standardizeCondition(803)).toEqual(StandardWeatherCondition.MostlyCloudy);
1111
expect(standardizeCondition(804)).toEqual(StandardWeatherCondition.Overcast);
1212
expect(standardizeCondition(521)).toEqual(StandardWeatherCondition.Showers);
1313
expect(standardizeCondition(500)).toEqual(StandardWeatherCondition.LightRain);
@@ -19,6 +19,29 @@ describe('OpenWeather Conditions', () => {
1919
expect(standardizeCondition(701)).toEqual(StandardWeatherCondition.Mist);
2020
expect(standardizeCondition(721)).toEqual(StandardWeatherCondition.Haze);
2121
expect(standardizeCondition(761)).toEqual(StandardWeatherCondition.Dust);
22+
expect(standardizeCondition(771)).toEqual(StandardWeatherCondition.Windy);
23+
});
24+
25+
it('should standardize drizzle conditions correctly', () => {
26+
// Regular drizzle
27+
expect(standardizeCondition(300)).toEqual(StandardWeatherCondition.Drizzle);
28+
expect(standardizeCondition(301)).toEqual(StandardWeatherCondition.Drizzle);
29+
expect(standardizeCondition(302)).toEqual(StandardWeatherCondition.Drizzle);
30+
expect(standardizeCondition(310)).toEqual(StandardWeatherCondition.Drizzle);
31+
expect(standardizeCondition(311)).toEqual(StandardWeatherCondition.Drizzle);
32+
expect(standardizeCondition(312)).toEqual(StandardWeatherCondition.Drizzle);
33+
34+
// Shower drizzle
35+
expect(standardizeCondition(313)).toEqual(StandardWeatherCondition.Showers);
36+
expect(standardizeCondition(314)).toEqual(StandardWeatherCondition.Showers);
37+
expect(standardizeCondition(321)).toEqual(StandardWeatherCondition.Showers);
38+
});
39+
40+
it('should standardize shower rain conditions correctly', () => {
41+
expect(standardizeCondition(520)).toEqual(StandardWeatherCondition.Showers); // light shower rain
42+
expect(standardizeCondition(521)).toEqual(StandardWeatherCondition.Showers); // shower rain
43+
expect(standardizeCondition(522)).toEqual(StandardWeatherCondition.Showers); // heavy shower rain
44+
expect(standardizeCondition(531)).toEqual(StandardWeatherCondition.Showers); // ragged shower rain
2245
});
2346

2447
it('should return unknown for unrecognized conditions', () => {

src/providers/openweather/condition.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ const openWeatherIdMap: Record<number, StandardWeatherCondition> = {
2525
301: StandardWeatherCondition.Drizzle, // drizzle
2626
302: StandardWeatherCondition.Drizzle, // heavy intensity drizzle
2727
310: StandardWeatherCondition.Drizzle, // light intensity drizzle rain
28-
311: StandardWeatherCondition.FreezingDrizzle, // drizzle rain
29-
312: StandardWeatherCondition.FreezingDrizzle, // heavy intensity drizzle rain
30-
313: StandardWeatherCondition.FreezingDrizzle, // shower rain and drizzle
31-
314: StandardWeatherCondition.FreezingDrizzle, // heavy shower rain and drizzle
32-
321: StandardWeatherCondition.FreezingDrizzle, // shower drizzle
28+
311: StandardWeatherCondition.Drizzle, // drizzle rain
29+
312: StandardWeatherCondition.Drizzle, // heavy intensity drizzle rain
30+
313: StandardWeatherCondition.Showers, // shower rain and drizzle
31+
314: StandardWeatherCondition.Showers, // heavy shower rain and drizzle
32+
321: StandardWeatherCondition.Showers, // shower drizzle
3333

3434
// Group 5xx: Rain
3535
500: StandardWeatherCondition.LightRain, // light rain
@@ -38,10 +38,10 @@ const openWeatherIdMap: Record<number, StandardWeatherCondition> = {
3838
503: StandardWeatherCondition.HeavyRain, // very heavy rain
3939
504: StandardWeatherCondition.HeavyRain, // extreme rain
4040
511: StandardWeatherCondition.FreezingRain, // freezing rain
41-
520: StandardWeatherCondition.LightRain, // light intensity shower rain
41+
520: StandardWeatherCondition.Showers, // light intensity shower rain
4242
521: StandardWeatherCondition.Showers, // shower rain
43-
522: StandardWeatherCondition.HeavyRain, // heavy intensity shower rain
44-
531: StandardWeatherCondition.HeavyRain, // ragged shower rain
43+
522: StandardWeatherCondition.Showers, // heavy intensity shower rain
44+
531: StandardWeatherCondition.Showers, // ragged shower rain
4545

4646
// Group 6xx: Snow
4747
600: StandardWeatherCondition.LightSnow, // light snow
@@ -65,16 +65,16 @@ const openWeatherIdMap: Record<number, StandardWeatherCondition> = {
6565
751: StandardWeatherCondition.Dust, // sand
6666
761: StandardWeatherCondition.Dust, // dust
6767
762: StandardWeatherCondition.Smoke, // volcanic ash
68-
771: StandardWeatherCondition.Windy, // squalls
68+
771: StandardWeatherCondition.Windy, // squalls (severe wind increases)
6969
781: StandardWeatherCondition.Tornado, // tornado
7070

7171
// Group 800: Clear
7272
800: StandardWeatherCondition.Clear, // clear sky
7373

7474
// Group 80x: Clouds
7575
801: StandardWeatherCondition.PartlyCloudy, // few clouds: 11-25%
76-
802: StandardWeatherCondition.MostlyCloudy, // scattered clouds: 25-50%
77-
803: StandardWeatherCondition.Overcast, // broken clouds: 51-84%
76+
802: StandardWeatherCondition.Cloudy, // scattered clouds: 25-50%
77+
803: StandardWeatherCondition.MostlyCloudy, // broken clouds: 51-84%
7878
804: StandardWeatherCondition.Overcast, // overcast clouds: 85-100%
7979
};
8080

0 commit comments

Comments
 (0)