Skip to content

Commit 8e8c4ee

Browse files
author
Dominik Brader
authored
Do not automatically convert 0 in range to null (#74)
1 parent ee989e3 commit 8e8c4ee

File tree

3 files changed

+202
-2
lines changed

3 files changed

+202
-2
lines changed

src/Responses/Xml21/Properties/Range.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class Range
1515

1616
public function __construct(SimpleXMLElement $response)
1717
{
18-
$this->min = ResponseHelper::getFloatProperty($response, 'min');
19-
$this->max = ResponseHelper::getFloatProperty($response, 'max');
18+
$this->min = ResponseHelper::getFloatProperty($response, 'min', true);
19+
$this->max = ResponseHelper::getFloatProperty($response, 'max', true);
2020
}
2121

2222
/**
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<searchResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/findologic/xml-response-schema/master/schema.xsd">
3+
<servers>
4+
<frontend>martell.frontend.findologic.com</frontend>
5+
<backend>hydra.backend.findologic.com</backend>
6+
</servers>
7+
<query>
8+
<limit first="0" count="24"/>
9+
<queryString type="corrected">ps3</queryString>
10+
<originalQuery allow-override="1">original query</originalQuery>
11+
<didYouMeanQuery>ps4</didYouMeanQuery>
12+
</query>
13+
<landingPage link="https://www.landingpage.io/agb/"/>
14+
<promotion link="https://promotion.com/" image="https://promotion.com/promotion.png"/>
15+
<results>
16+
<count>1808</count>
17+
</results>
18+
<products>
19+
<product id="019111105-37900" relevance="1.3862943649292">
20+
<properties>
21+
<property name="ordernumber">019111105-37900</property>
22+
</properties>
23+
</product>
24+
<product id="029214085-37860" relevance="1.3862943649292"/>
25+
</products>
26+
<filters>
27+
<main>
28+
<filter>
29+
<name>price</name>
30+
<display>Preis</display>
31+
<select>single</select>
32+
<type>range-slider</type>
33+
<attributes>
34+
<selectedRange>
35+
<min>0</min>
36+
<max>0</max>
37+
</selectedRange>
38+
<totalRange>
39+
<min>0</min>
40+
<max>0</max>
41+
</totalRange>
42+
<stepSize>0.1</stepSize>
43+
<unit>€</unit>
44+
</attributes>
45+
<items>
46+
<item>
47+
<name>0.39 - 13.4</name>
48+
<weight>0.51743012666702</weight>
49+
<parameters>
50+
<min>0.39</min>
51+
<max>13.4</max>
52+
</parameters>
53+
</item>
54+
<item>
55+
<name>13.45 - 25.99</name>
56+
<weight>0.50098878145218</weight>
57+
<parameters>
58+
<min>13.45</min>
59+
<max>25.99</max>
60+
</parameters>
61+
</item>
62+
<item>
63+
<name>26 - 40.3</name>
64+
<weight>0.3976277410984</weight>
65+
<parameters>
66+
<min>26</min>
67+
<max>40.3</max>
68+
</parameters>
69+
</item>
70+
</items>
71+
</filter>
72+
</main>
73+
<other>
74+
<filter>
75+
<name>Farbe</name>
76+
<display>Farbe</display>
77+
<select>multiselect</select>
78+
<selectedItems>1</selectedItems>
79+
<type>color</type>
80+
<items>
81+
<item>
82+
<name>beige</name>
83+
<weight>0.10730088502169</weight>
84+
<image>https://blubbergurken.io/farbfilter/beige.gif</image>
85+
<color>#F5F5DC</color>
86+
</item>
87+
<item selected="1">
88+
<name>blau</name>
89+
<weight>0.3296460211277</weight>
90+
<image>https://blubbergurken.io/farbfilter/blau.gif</image>
91+
<color>#3c6380</color>
92+
</item>
93+
<item>
94+
<name>braun</name>
95+
<weight>0.90265488624573</weight>
96+
<image>https://blubbergurken.io/farbfilter/braun.gif</image>
97+
<color>#94651e</color>
98+
</item>
99+
</items>
100+
</filter>
101+
<filter>
102+
<name>Image</name>
103+
<display>Image</display>
104+
<select>single</select>
105+
<selectedItems>1</selectedItems>
106+
<type>image</type>
107+
<items>
108+
<item>
109+
<name>image1</name>
110+
<weight>0.10730088502179</weight>
111+
<image>https://blubbergurken.io/farbfilter/image1.gif</image>
112+
</item>
113+
</items>
114+
</filter>
115+
<filter>
116+
<itemCount>2</itemCount>
117+
<cssClass>fl-material</cssClass>
118+
<name>Material</name>
119+
<display>Material</display>
120+
<select>multiple</select>
121+
<type>select</type>
122+
<items>
123+
<item>
124+
<name>Hartgepäck</name>
125+
<weight>0.038716815412045</weight>
126+
<frequency>35</frequency>
127+
</item>
128+
<item>
129+
<name>Leder</name>
130+
<weight>0.63053095340729</weight>
131+
<frequency>1238</frequency>
132+
</item>
133+
<item>
134+
<name>Nylon</name>
135+
<weight>0.12168141454458</weight>
136+
<frequency>110</frequency>
137+
</item>
138+
</items>
139+
</filter>
140+
<filter>
141+
<itemCount>0</itemCount>
142+
<noAvailableFiltersText>Keine Hersteller</noAvailableFiltersText>
143+
<name>vendor</name>
144+
<display>Hersteller</display>
145+
<select>multiple</select>
146+
<type>select</type>
147+
<items>
148+
<item>
149+
<name>Bodenschatz</name>
150+
<weight>0.0022123893722892</weight>
151+
<frequency>2</frequency>
152+
</item>
153+
<item>
154+
<name>Braun Büffel</name>
155+
<weight>0.08517698943615</weight>
156+
<frequency>77</frequency>
157+
</item>
158+
<item>
159+
<name>Camel Active</name>
160+
<weight>0.13495574891567</weight>
161+
<frequency>122</frequency>
162+
</item>
163+
</items>
164+
</filter>
165+
<filter>
166+
<itemCount>-2</itemCount>
167+
<name>cat</name>
168+
<display>Kategorie</display>
169+
<select>single</select>
170+
<type>select</type>
171+
<items>
172+
<item>
173+
<name>Buch</name>
174+
<weight>0.25156819820404</weight>
175+
<frequency>5</frequency>
176+
<items>
177+
<item>
178+
<name>Beste Bücher</name>
179+
<weight>0.33799207210541</weight>
180+
<frequency>0</frequency>
181+
</item>
182+
</items>
183+
</item>
184+
</items>
185+
</filter>
186+
</other>
187+
</filters>
188+
</searchResult>

tests/Tests/Responses/Xml21/Xml21ResponseTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,4 +607,16 @@ public function testResponseWillNotBreakIfNoOtherFiltersAreFound()
607607
$this->assertEmpty($response->getOtherFilters());
608608
$this->assertFalse($response->hasOtherFilters());
609609
}
610+
611+
public function testResponseWithMinOrMaxZeroWillNotBeConvertedToNull()
612+
{
613+
$response = $this->getRealResponseData('demoResponseWithMinAndMaxZero.xml');
614+
615+
/** @var RangeSliderFilter $priceFilter */
616+
$priceFilter = $response->getMainFilters()['price'];
617+
$this->assertSame(0.0, $priceFilter->getAttributes()->getSelectedRange()->getMin());
618+
$this->assertSame(0.0, $priceFilter->getAttributes()->getSelectedRange()->getMax());
619+
$this->assertSame(0.0, $priceFilter->getAttributes()->getTotalRange()->getMin());
620+
$this->assertSame(0.0, $priceFilter->getAttributes()->getTotalRange()->getMax());
621+
}
610622
}

0 commit comments

Comments
 (0)