| 6dd74de | | | 1 | import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts'; |
| 6dd74de | | | 2 | |
| 6dd74de | | | 3 | describe('XY Chart', () => { |
| 6dd74de | | | 4 | it('should render the simplest possible xy-beta chart', () => { |
| 6dd74de | | | 5 | imgSnapshotTest( |
| 6dd74de | | | 6 | ` |
| 6dd74de | | | 7 | xychart-beta |
| 6dd74de | | | 8 | line [10, 30, 20] |
| 6dd74de | | | 9 | `, |
| 6dd74de | | | 10 | {} |
| 6dd74de | | | 11 | ); |
| 6dd74de | | | 12 | }); |
| 6dd74de | | | 13 | it('should render the simplest possible xy chart', () => { |
| 6dd74de | | | 14 | imgSnapshotTest( |
| 6dd74de | | | 15 | ` |
| 6dd74de | | | 16 | xychart |
| 6dd74de | | | 17 | line [10, 30, 20] |
| 6dd74de | | | 18 | `, |
| 6dd74de | | | 19 | {} |
| 6dd74de | | | 20 | ); |
| 6dd74de | | | 21 | }); |
| 6dd74de | | | 22 | it('Should render a complete chart', () => { |
| 6dd74de | | | 23 | imgSnapshotTest( |
| 6dd74de | | | 24 | ` |
| 6dd74de | | | 25 | xychart |
| 6dd74de | | | 26 | title "Sales Revenue" |
| 6dd74de | | | 27 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 28 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 29 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 30 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 31 | `, |
| 6dd74de | | | 32 | {} |
| 6dd74de | | | 33 | ); |
| 6dd74de | | | 34 | }); |
| 6dd74de | | | 35 | it('Should render a chart without title', () => { |
| 6dd74de | | | 36 | imgSnapshotTest( |
| 6dd74de | | | 37 | ` |
| 6dd74de | | | 38 | xychart |
| 6dd74de | | | 39 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 40 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 41 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 42 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 43 | `, |
| 6dd74de | | | 44 | {} |
| 6dd74de | | | 45 | ); |
| 6dd74de | | | 46 | }); |
| 6dd74de | | | 47 | it('y-axis title not required', () => { |
| 6dd74de | | | 48 | imgSnapshotTest( |
| 6dd74de | | | 49 | ` |
| 6dd74de | | | 50 | xychart |
| 6dd74de | | | 51 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 52 | y-axis 4000 --> 11000 |
| 6dd74de | | | 53 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 54 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 55 | `, |
| 6dd74de | | | 56 | {} |
| 6dd74de | | | 57 | ); |
| 6dd74de | | | 58 | }); |
| 6dd74de | | | 59 | it('Should render a chart without y-axis with different range', () => { |
| 6dd74de | | | 60 | imgSnapshotTest( |
| 6dd74de | | | 61 | ` |
| 6dd74de | | | 62 | xychart |
| 6dd74de | | | 63 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 64 | bar [5000, 6000, 7500, 8200, 9500, 10500, 14000, 3200, 9200, 9900, 3400, 6000] |
| 6dd74de | | | 65 | line [2000, 7000, 6500, 9200, 9500, 7500, 11000, 10200, 3200, 8500, 7000, 8800] |
| 6dd74de | | | 66 | `, |
| 6dd74de | | | 67 | {} |
| 6dd74de | | | 68 | ); |
| 6dd74de | | | 69 | }); |
| 6dd74de | | | 70 | it('x axis title not required', () => { |
| 6dd74de | | | 71 | imgSnapshotTest( |
| 6dd74de | | | 72 | ` |
| 6dd74de | | | 73 | xychart |
| 6dd74de | | | 74 | x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 75 | bar [5000, 6000, 7500, 8200, 9500, 10500, 14000, 3200, 9200, 9900, 3400, 6000] |
| 6dd74de | | | 76 | line [2000, 7000, 6500, 9200, 9500, 7500, 11000, 10200, 3200, 8500, 7000, 8800] |
| 6dd74de | | | 77 | `, |
| 6dd74de | | | 78 | {} |
| 6dd74de | | | 79 | ); |
| 6dd74de | | | 80 | }); |
| 6dd74de | | | 81 | it('Multiple plots can be rendered', () => { |
| 6dd74de | | | 82 | imgSnapshotTest( |
| 6dd74de | | | 83 | ` |
| 6dd74de | | | 84 | xychart |
| 6dd74de | | | 85 | line [23, 46, 77, 34] |
| 6dd74de | | | 86 | line [45, 32, 33, 12] |
| 6dd74de | | | 87 | bar [87, 54, 99, 85] |
| 6dd74de | | | 88 | line [78, 88, 22, 4] |
| 6dd74de | | | 89 | line [22, 29, 75, 33] |
| 6dd74de | | | 90 | bar [52, 96, 35, 10] |
| 6dd74de | | | 91 | `, |
| 6dd74de | | | 92 | {} |
| 6dd74de | | | 93 | ); |
| 6dd74de | | | 94 | }); |
| 6dd74de | | | 95 | it('Decimals and negative numbers are supported', () => { |
| 6dd74de | | | 96 | imgSnapshotTest( |
| 6dd74de | | | 97 | ` |
| 6dd74de | | | 98 | xychart |
| 6dd74de | | | 99 | y-axis -2.4 --> 3.5 |
| 6dd74de | | | 100 | line [+1.3, .6, 2.4, -.34] |
| 6dd74de | | | 101 | `, |
| 6dd74de | | | 102 | {} |
| 6dd74de | | | 103 | ); |
| 6dd74de | | | 104 | }); |
| 6dd74de | | | 105 | it('Render spark line with "plotReservedSpacePercent"', () => { |
| 6dd74de | | | 106 | imgSnapshotTest( |
| 6dd74de | | | 107 | ` |
| 6dd74de | | | 108 | --- |
| 6dd74de | | | 109 | config: |
| 6dd74de | | | 110 | theme: dark |
| 6dd74de | | | 111 | xyChart: |
| 6dd74de | | | 112 | width: 200 |
| 6dd74de | | | 113 | height: 20 |
| 6dd74de | | | 114 | plotReservedSpacePercent: 100 |
| 6dd74de | | | 115 | --- |
| 6dd74de | | | 116 | xychart |
| 6dd74de | | | 117 | line [5000, 9000, 7500, 6200, 9500, 5500, 11000, 8200, 9200, 9500, 7000, 8800] |
| 6dd74de | | | 118 | `, |
| 6dd74de | | | 119 | {} |
| 6dd74de | | | 120 | ); |
| 6dd74de | | | 121 | }); |
| 6dd74de | | | 122 | it('Render spark bar without displaying other property', () => { |
| 6dd74de | | | 123 | imgSnapshotTest( |
| 6dd74de | | | 124 | ` |
| 6dd74de | | | 125 | --- |
| 6dd74de | | | 126 | config: |
| 6dd74de | | | 127 | theme: dark |
| 6dd74de | | | 128 | xyChart: |
| 6dd74de | | | 129 | width: 200 |
| 6dd74de | | | 130 | height: 20 |
| 6dd74de | | | 131 | xAxis: |
| 6dd74de | | | 132 | showLabel: false |
| 6dd74de | | | 133 | showTitle: false |
| 6dd74de | | | 134 | showTick: false |
| 6dd74de | | | 135 | showAxisLine: false |
| 6dd74de | | | 136 | yAxis: |
| 6dd74de | | | 137 | showLabel: false |
| 6dd74de | | | 138 | showTitle: false |
| 6dd74de | | | 139 | showTick: false |
| 6dd74de | | | 140 | showAxisLine: false |
| 6dd74de | | | 141 | --- |
| 6dd74de | | | 142 | xychart |
| 6dd74de | | | 143 | bar [5000, 9000, 7500, 6200, 9500, 5500, 11000, 8200, 9200, 9500, 7000, 8800] |
| 6dd74de | | | 144 | `, |
| 6dd74de | | | 145 | {} |
| 6dd74de | | | 146 | ); |
| 6dd74de | | | 147 | }); |
| 6dd74de | | | 148 | it('Should use all the config from directive', () => { |
| 6dd74de | | | 149 | imgSnapshotTest( |
| 6dd74de | | | 150 | ` |
| 6dd74de | | | 151 | %%{init: {"xyChart": {"width": 1000, "height": 600, "titlePadding": 5, "titleFontSize": 10, "xAxis": {"labelFontSize": "20", "labelPadding": 10, "titleFontSize": 30, "titlePadding": 20, "tickLength": 10, "tickWidth": 5}, "yAxis": {"labelFontSize": "20", "labelPadding": 10, "titleFontSize": 30, "titlePadding": 20, "tickLength": 10, "tickWidth": 5}, "plotBorderWidth": 5, "chartOrientation": "horizontal", "plotReservedSpacePercent": 60 }}}%% |
| 6dd74de | | | 152 | xychart |
| 6dd74de | | | 153 | title "Sales Revenue" |
| 6dd74de | | | 154 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 155 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 156 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 157 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 158 | `, |
| 6dd74de | | | 159 | {} |
| 6dd74de | | | 160 | ); |
| 6dd74de | | | 161 | }); |
| 6dd74de | | | 162 | it('Should use all the config from yaml', () => { |
| 6dd74de | | | 163 | imgSnapshotTest( |
| 6dd74de | | | 164 | ` |
| 6dd74de | | | 165 | --- |
| 6dd74de | | | 166 | config: |
| 6dd74de | | | 167 | theme: forest |
| 6dd74de | | | 168 | xyChart: |
| 6dd74de | | | 169 | width: 1000 |
| 6dd74de | | | 170 | height: 600 |
| 6dd74de | | | 171 | titlePadding: 5 |
| 6dd74de | | | 172 | titleFontSize: 10 |
| 6dd74de | | | 173 | xAxis: |
| 6dd74de | | | 174 | labelFontSize: 20 |
| 6dd74de | | | 175 | labelPadding: 10 |
| 6dd74de | | | 176 | titleFontSize: 30 |
| 6dd74de | | | 177 | titlePadding: 20 |
| 6dd74de | | | 178 | tickLength: 10 |
| 6dd74de | | | 179 | tickWidth: 5 |
| 6dd74de | | | 180 | axisLineWidth: 5 |
| 6dd74de | | | 181 | yAxis: |
| 6dd74de | | | 182 | labelFontSize: 20 |
| 6dd74de | | | 183 | labelPadding: 10 |
| 6dd74de | | | 184 | titleFontSize: 30 |
| 6dd74de | | | 185 | titlePadding: 20 |
| 6dd74de | | | 186 | tickLength: 10 |
| 6dd74de | | | 187 | tickWidth: 5 |
| 6dd74de | | | 188 | axisLineWidth: 5 |
| 6dd74de | | | 189 | chartOrientation: horizontal |
| 6dd74de | | | 190 | plotReservedSpacePercent: 60 |
| 6dd74de | | | 191 | showDataLabel: true |
| 6dd74de | | | 192 | --- |
| 6dd74de | | | 193 | xychart |
| 6dd74de | | | 194 | title "Sales Revenue" |
| 6dd74de | | | 195 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 196 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 197 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 198 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 199 | `, |
| 6dd74de | | | 200 | {} |
| 6dd74de | | | 201 | ); |
| 6dd74de | | | 202 | }); |
| 6dd74de | | | 203 | it('Render with show axis title false', () => { |
| 6dd74de | | | 204 | imgSnapshotTest( |
| 6dd74de | | | 205 | ` |
| 6dd74de | | | 206 | --- |
| 6dd74de | | | 207 | config: |
| 6dd74de | | | 208 | xyChart: |
| 6dd74de | | | 209 | xAxis: |
| 6dd74de | | | 210 | showTitle: false |
| 6dd74de | | | 211 | yAxis: |
| 6dd74de | | | 212 | showTitle: false |
| 6dd74de | | | 213 | --- |
| 6dd74de | | | 214 | xychart |
| 6dd74de | | | 215 | title "Sales Revenue" |
| 6dd74de | | | 216 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 217 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 218 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 219 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 220 | `, |
| 6dd74de | | | 221 | {} |
| 6dd74de | | | 222 | ); |
| 6dd74de | | | 223 | }); |
| 6dd74de | | | 224 | it('Render with show axis label false', () => { |
| 6dd74de | | | 225 | imgSnapshotTest( |
| 6dd74de | | | 226 | ` |
| 6dd74de | | | 227 | --- |
| 6dd74de | | | 228 | config: |
| 6dd74de | | | 229 | xyChart: |
| 6dd74de | | | 230 | xAxis: |
| 6dd74de | | | 231 | showLabel: false |
| 6dd74de | | | 232 | yAxis: |
| 6dd74de | | | 233 | showLabel: false |
| 6dd74de | | | 234 | --- |
| 6dd74de | | | 235 | xychart |
| 6dd74de | | | 236 | title "Sales Revenue" |
| 6dd74de | | | 237 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 238 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 239 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 240 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 241 | `, |
| 6dd74de | | | 242 | {} |
| 6dd74de | | | 243 | ); |
| 6dd74de | | | 244 | }); |
| 6dd74de | | | 245 | it('Render with show axis tick false', () => { |
| 6dd74de | | | 246 | imgSnapshotTest( |
| 6dd74de | | | 247 | ` |
| 6dd74de | | | 248 | --- |
| 6dd74de | | | 249 | config: |
| 6dd74de | | | 250 | xyChart: |
| 6dd74de | | | 251 | xAxis: |
| 6dd74de | | | 252 | showTick: false |
| 6dd74de | | | 253 | yAxis: |
| 6dd74de | | | 254 | showTick: false |
| 6dd74de | | | 255 | --- |
| 6dd74de | | | 256 | xychart |
| 6dd74de | | | 257 | title "Sales Revenue" |
| 6dd74de | | | 258 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 259 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 260 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 261 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 262 | `, |
| 6dd74de | | | 263 | {} |
| 6dd74de | | | 264 | ); |
| 6dd74de | | | 265 | }); |
| 6dd74de | | | 266 | it('Render with show axis line false', () => { |
| 6dd74de | | | 267 | imgSnapshotTest( |
| 6dd74de | | | 268 | ` |
| 6dd74de | | | 269 | --- |
| 6dd74de | | | 270 | config: |
| 6dd74de | | | 271 | xyChart: |
| 6dd74de | | | 272 | xAxis: |
| 6dd74de | | | 273 | showAxisLine: false |
| 6dd74de | | | 274 | yAxis: |
| 6dd74de | | | 275 | showAxisLine: false |
| 6dd74de | | | 276 | --- |
| 6dd74de | | | 277 | xychart |
| 6dd74de | | | 278 | title "Sales Revenue" |
| 6dd74de | | | 279 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 280 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 281 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 282 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 283 | `, |
| 6dd74de | | | 284 | {} |
| 6dd74de | | | 285 | ); |
| 6dd74de | | | 286 | }); |
| 6dd74de | | | 287 | it('Render all the theme color', () => { |
| 6dd74de | | | 288 | imgSnapshotTest( |
| 6dd74de | | | 289 | ` |
| 6dd74de | | | 290 | --- |
| 6dd74de | | | 291 | config: |
| 6dd74de | | | 292 | themeVariables: |
| 6dd74de | | | 293 | xyChart: |
| 6dd74de | | | 294 | titleColor: "#ff0000" |
| 6dd74de | | | 295 | backgroundColor: "#f0f8ff" |
| 6dd74de | | | 296 | yAxisLabelColor: "#ee82ee" |
| 6dd74de | | | 297 | yAxisTitleColor: "#7fffd4" |
| 6dd74de | | | 298 | yAxisTickColor: "#87ceeb" |
| 6dd74de | | | 299 | yAxisLineColor: "#ff6347" |
| 6dd74de | | | 300 | xAxisLabelColor: "#7fffd4" |
| 6dd74de | | | 301 | xAxisTitleColor: "#ee82ee" |
| 6dd74de | | | 302 | xAxisTickColor: "#ff6347" |
| 6dd74de | | | 303 | xAxisLineColor: "#87ceeb" |
| 6dd74de | | | 304 | plotColorPalette: "#008000, #faba63" |
| 6dd74de | | | 305 | --- |
| 6dd74de | | | 306 | xychart |
| 6dd74de | | | 307 | title "Sales Revenue" |
| 6dd74de | | | 308 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 309 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 310 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 311 | line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 312 | `, |
| 6dd74de | | | 313 | {} |
| 6dd74de | | | 314 | ); |
| 6dd74de | | | 315 | }); |
| 6dd74de | | | 316 | it('should use the correct distances between data points', () => { |
| 6dd74de | | | 317 | imgSnapshotTest( |
| 6dd74de | | | 318 | ` |
| 6dd74de | | | 319 | xychart |
| 6dd74de | | | 320 | x-axis 0 --> 2 |
| 6dd74de | | | 321 | line [0, 1, 0, 1] |
| 6dd74de | | | 322 | bar [1, 0, 1, 0] |
| 6dd74de | | | 323 | `, |
| 6dd74de | | | 324 | {} |
| 6dd74de | | | 325 | ); |
| 6dd74de | | | 326 | cy.get('svg'); |
| 6dd74de | | | 327 | }); |
| 6dd74de | | | 328 | |
| 6dd74de | | | 329 | it('should render vertical bar chart with labels', () => { |
| 6dd74de | | | 330 | imgSnapshotTest( |
| 6dd74de | | | 331 | ` |
| 6dd74de | | | 332 | --- |
| 6dd74de | | | 333 | config: |
| 6dd74de | | | 334 | xyChart: |
| 6dd74de | | | 335 | showDataLabel: true |
| 6dd74de | | | 336 | --- |
| 6dd74de | | | 337 | xychart |
| 6dd74de | | | 338 | title "Sales Revenue" |
| 6dd74de | | | 339 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 340 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 341 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 342 | `, |
| 6dd74de | | | 343 | {} |
| 6dd74de | | | 344 | ); |
| 6dd74de | | | 345 | }); |
| 6dd74de | | | 346 | |
| 6dd74de | | | 347 | it('should render horizontal bar chart with labels', () => { |
| 6dd74de | | | 348 | imgSnapshotTest( |
| 6dd74de | | | 349 | ` |
| 6dd74de | | | 350 | --- |
| 6dd74de | | | 351 | config: |
| 6dd74de | | | 352 | xyChart: |
| 6dd74de | | | 353 | showDataLabel: true |
| 6dd74de | | | 354 | chartOrientation: horizontal |
| 6dd74de | | | 355 | --- |
| 6dd74de | | | 356 | xychart |
| 6dd74de | | | 357 | title "Sales Revenue" |
| 6dd74de | | | 358 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 359 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 360 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 361 | `, |
| 6dd74de | | | 362 | {} |
| 6dd74de | | | 363 | ); |
| 6dd74de | | | 364 | }); |
| 6dd74de | | | 365 | |
| 6dd74de | | | 366 | it('should render vertical bar chart without labels by default', () => { |
| 6dd74de | | | 367 | imgSnapshotTest( |
| 6dd74de | | | 368 | ` |
| 6dd74de | | | 369 | xychart |
| 6dd74de | | | 370 | title "Sales Revenue" |
| 6dd74de | | | 371 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 372 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 373 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 374 | `, |
| 6dd74de | | | 375 | {} |
| 6dd74de | | | 376 | ); |
| 6dd74de | | | 377 | }); |
| 6dd74de | | | 378 | |
| 6dd74de | | | 379 | it('should render horizontal bar chart without labels by default', () => { |
| 6dd74de | | | 380 | imgSnapshotTest( |
| 6dd74de | | | 381 | ` |
| 6dd74de | | | 382 | --- |
| 6dd74de | | | 383 | config: |
| 6dd74de | | | 384 | xyChart: |
| 6dd74de | | | 385 | chartOrientation: horizontal |
| 6dd74de | | | 386 | --- |
| 6dd74de | | | 387 | xychart |
| 6dd74de | | | 388 | title "Sales Revenue" |
| 6dd74de | | | 389 | x-axis Months [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] |
| 6dd74de | | | 390 | y-axis "Revenue (in $)" 4000 --> 11000 |
| 6dd74de | | | 391 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] |
| 6dd74de | | | 392 | `, |
| 6dd74de | | | 393 | {} |
| 6dd74de | | | 394 | ); |
| 6dd74de | | | 395 | }); |
| 6dd74de | | | 396 | |
| 6dd74de | | | 397 | it('should render multiple bar plots vertically with labels correctly', () => { |
| 6dd74de | | | 398 | imgSnapshotTest( |
| 6dd74de | | | 399 | ` |
| 6dd74de | | | 400 | --- |
| 6dd74de | | | 401 | config: |
| 6dd74de | | | 402 | xyChart: |
| 6dd74de | | | 403 | showDataLabel: true |
| 6dd74de | | | 404 | --- |
| 6dd74de | | | 405 | xychart |
| 6dd74de | | | 406 | title "Multiple Bar Plots" |
| 6dd74de | | | 407 | x-axis Categories [A, B, C] |
| 6dd74de | | | 408 | y-axis "Values" 0 --> 100 |
| 6dd74de | | | 409 | bar [10, 50, 90] |
| 6dd74de | | | 410 | `, |
| 6dd74de | | | 411 | {} |
| 6dd74de | | | 412 | ); |
| 6dd74de | | | 413 | }); |
| 6dd74de | | | 414 | |
| 6dd74de | | | 415 | it('should render multiple bar plots horizontally with labels correctly', () => { |
| 6dd74de | | | 416 | imgSnapshotTest( |
| 6dd74de | | | 417 | ` |
| 6dd74de | | | 418 | --- |
| 6dd74de | | | 419 | config: |
| 6dd74de | | | 420 | xyChart: |
| 6dd74de | | | 421 | showDataLabel: true |
| 6dd74de | | | 422 | chartOrientation: horizontal |
| 6dd74de | | | 423 | --- |
| 6dd74de | | | 424 | xychart |
| 6dd74de | | | 425 | title "Multiple Bar Plots" |
| 6dd74de | | | 426 | x-axis Categories [A, B, C] |
| 6dd74de | | | 427 | y-axis "Values" 0 --> 100 |
| 6dd74de | | | 428 | bar [10, 50, 90] |
| 6dd74de | | | 429 | `, |
| 6dd74de | | | 430 | {} |
| 6dd74de | | | 431 | ); |
| 6dd74de | | | 432 | }); |
| 6dd74de | | | 433 | |
| 6dd74de | | | 434 | it('should render a single bar with label for a vertical xy-chart', () => { |
| 6dd74de | | | 435 | imgSnapshotTest( |
| 6dd74de | | | 436 | ` |
| 6dd74de | | | 437 | --- |
| 6dd74de | | | 438 | config: |
| 6dd74de | | | 439 | xyChart: |
| 6dd74de | | | 440 | showDataLabel: true |
| 6dd74de | | | 441 | --- |
| 6dd74de | | | 442 | xychart |
| 6dd74de | | | 443 | title "Single Bar Chart" |
| 6dd74de | | | 444 | x-axis Categories [A] |
| 6dd74de | | | 445 | y-axis "Value" 0 --> 100 |
| 6dd74de | | | 446 | bar [75] |
| 6dd74de | | | 447 | `, |
| 6dd74de | | | 448 | {} |
| 6dd74de | | | 449 | ); |
| 6dd74de | | | 450 | }); |
| 6dd74de | | | 451 | |
| 6dd74de | | | 452 | it('should render a single bar with label for a horizontal xy-chart', () => { |
| 6dd74de | | | 453 | imgSnapshotTest( |
| 6dd74de | | | 454 | ` |
| 6dd74de | | | 455 | --- |
| 6dd74de | | | 456 | config: |
| 6dd74de | | | 457 | xyChart: |
| 6dd74de | | | 458 | showDataLabel: true |
| 6dd74de | | | 459 | chartOrientation: horizontal |
| 6dd74de | | | 460 | --- |
| 6dd74de | | | 461 | xychart |
| 6dd74de | | | 462 | title "Single Bar Chart" |
| 6dd74de | | | 463 | x-axis Categories [A] |
| 6dd74de | | | 464 | y-axis "Value" 0 --> 100 |
| 6dd74de | | | 465 | bar [75] |
| 6dd74de | | | 466 | `, |
| 6dd74de | | | 467 | {} |
| 6dd74de | | | 468 | ); |
| 6dd74de | | | 469 | }); |
| 6dd74de | | | 470 | |
| 6dd74de | | | 471 | it('should render negative and decimal values with correct labels for vertical xy-chart', () => { |
| 6dd74de | | | 472 | imgSnapshotTest( |
| 6dd74de | | | 473 | ` |
| 6dd74de | | | 474 | --- |
| 6dd74de | | | 475 | config: |
| 6dd74de | | | 476 | xyChart: |
| 6dd74de | | | 477 | showDataLabel: true |
| 6dd74de | | | 478 | --- |
| 6dd74de | | | 479 | xychart |
| 6dd74de | | | 480 | title "Decimal and Negative Values" |
| 6dd74de | | | 481 | x-axis Categories [A, B, C] |
| 6dd74de | | | 482 | y-axis -10 --> 10 |
| 6dd74de | | | 483 | bar [ -2.5, 0.75, 5.1 ] |
| 6dd74de | | | 484 | `, |
| 6dd74de | | | 485 | {} |
| 6dd74de | | | 486 | ); |
| 6dd74de | | | 487 | }); |
| 6dd74de | | | 488 | |
| 6dd74de | | | 489 | it('should render negative and decimal values with correct labels for horizontal xy-chart', () => { |
| 6dd74de | | | 490 | imgSnapshotTest( |
| 6dd74de | | | 491 | ` |
| 6dd74de | | | 492 | --- |
| 6dd74de | | | 493 | config: |
| 6dd74de | | | 494 | xyChart: |
| 6dd74de | | | 495 | showDataLabel: true |
| 6dd74de | | | 496 | chartOrientation: horizontal |
| 6dd74de | | | 497 | --- |
| 6dd74de | | | 498 | xychart |
| 6dd74de | | | 499 | title "Decimal and Negative Values" |
| 6dd74de | | | 500 | x-axis Categories [A, B, C] |
| 6dd74de | | | 501 | y-axis -10 --> 10 |
| 6dd74de | | | 502 | bar [ -2.5, 0.75, 5.1 ] |
| 6dd74de | | | 503 | `, |
| 6dd74de | | | 504 | {} |
| 6dd74de | | | 505 | ); |
| 6dd74de | | | 506 | }); |
| 6dd74de | | | 507 | |
| 6dd74de | | | 508 | it('should render data labels within each bar in the vertical xy-chart', () => { |
| 6dd74de | | | 509 | imgSnapshotTest( |
| 6dd74de | | | 510 | ` |
| 6dd74de | | | 511 | --- |
| 6dd74de | | | 512 | config: |
| 6dd74de | | | 513 | xyChart: |
| 6dd74de | | | 514 | showDataLabel: true |
| 6dd74de | | | 515 | --- |
| 6dd74de | | | 516 | xychart |
| 6dd74de | | | 517 | title "Sales Revenue" |
| 6dd74de | | | 518 | x-axis Months [jan,b,c] |
| 6dd74de | | | 519 | y-axis "Revenue (in $)" 4000 --> 12000 |
| 6dd74de | | | 520 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000, 3000, 2000, 500, 2000, 3000, 11000, 5000, 6000] |
| 6dd74de | | | 521 | `, |
| 6dd74de | | | 522 | {} |
| 6dd74de | | | 523 | ); |
| 6dd74de | | | 524 | |
| 6dd74de | | | 525 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 526 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 527 | // Extract bar properties |
| 6dd74de | | | 528 | const barProps = { |
| 6dd74de | | | 529 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 530 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 531 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 532 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 533 | }; |
| 6dd74de | | | 534 | |
| 6dd74de | | | 535 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 536 | cy.get('text') |
| 6dd74de | | | 537 | .eq(index) |
| 6dd74de | | | 538 | .then(($text) => { |
| 6dd74de | | | 539 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 540 | const textProps = { |
| 6dd74de | | | 541 | x: bbox.x, |
| 6dd74de | | | 542 | y: bbox.y, |
| 6dd74de | | | 543 | width: bbox.width, |
| 6dd74de | | | 544 | height: bbox.height, |
| 6dd74de | | | 545 | }; |
| 6dd74de | | | 546 | |
| 6dd74de | | | 547 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 548 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 549 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 550 | |
| 6dd74de | | | 551 | // Check horizontal alignment (within tolerance) |
| 6dd74de | | | 552 | expect(textProps.x + textProps.width / 2).to.be.closeTo( |
| 6dd74de | | | 553 | barProps.x + barProps.width / 2, |
| 6dd74de | | | 554 | 5 |
| 6dd74de | | | 555 | ); |
| 6dd74de | | | 556 | |
| 6dd74de | | | 557 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 558 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 559 | }); |
| 6dd74de | | | 560 | }); |
| 6dd74de | | | 561 | }); |
| 6dd74de | | | 562 | }); |
| 6dd74de | | | 563 | |
| 6dd74de | | | 564 | it('should render data labels within each bar in the horizontal xy-chart', () => { |
| 6dd74de | | | 565 | imgSnapshotTest( |
| 6dd74de | | | 566 | ` |
| 6dd74de | | | 567 | --- |
| 6dd74de | | | 568 | config: |
| 6dd74de | | | 569 | xyChart: |
| 6dd74de | | | 570 | showDataLabel: true |
| 6dd74de | | | 571 | chartOrientation: horizontal |
| 6dd74de | | | 572 | --- |
| 6dd74de | | | 573 | xychart |
| 6dd74de | | | 574 | title "Sales Revenue" |
| 6dd74de | | | 575 | x-axis Months [jan,b,c] |
| 6dd74de | | | 576 | y-axis "Revenue (in $)" 4000 --> 12000 |
| 6dd74de | | | 577 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000, 3000, 2000, 500, 2000, 3000, 11000, 5000, 6000] |
| 6dd74de | | | 578 | `, |
| 6dd74de | | | 579 | {} |
| 6dd74de | | | 580 | ); |
| 6dd74de | | | 581 | |
| 6dd74de | | | 582 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 583 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 584 | // Extract bar properties |
| 6dd74de | | | 585 | const barProps = { |
| 6dd74de | | | 586 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 587 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 588 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 589 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 590 | }; |
| 6dd74de | | | 591 | |
| 6dd74de | | | 592 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 593 | cy.get('text') |
| 6dd74de | | | 594 | .eq(index) |
| 6dd74de | | | 595 | .then(($text) => { |
| 6dd74de | | | 596 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 597 | const textProps = { |
| 6dd74de | | | 598 | x: bbox.x, |
| 6dd74de | | | 599 | y: bbox.y, |
| 6dd74de | | | 600 | width: bbox.width, |
| 6dd74de | | | 601 | height: bbox.height, |
| 6dd74de | | | 602 | }; |
| 6dd74de | | | 603 | |
| 6dd74de | | | 604 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 605 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 606 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 607 | |
| 6dd74de | | | 608 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 609 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 610 | expect(textProps.y + textProps.height / 2).to.be.closeTo( |
| 6dd74de | | | 611 | barProps.y + barProps.height / 2, |
| 6dd74de | | | 612 | 5 |
| 6dd74de | | | 613 | ); |
| 6dd74de | | | 614 | }); |
| 6dd74de | | | 615 | }); |
| 6dd74de | | | 616 | }); |
| 6dd74de | | | 617 | }); |
| 6dd74de | | | 618 | |
| 6dd74de | | | 619 | it('should render data labels within each bar in the vertical xy-chart with a lot of bars of different sizes', () => { |
| 6dd74de | | | 620 | imgSnapshotTest( |
| 6dd74de | | | 621 | ` |
| 6dd74de | | | 622 | --- |
| 6dd74de | | | 623 | config: |
| 6dd74de | | | 624 | xyChart: |
| 6dd74de | | | 625 | showDataLabel: true |
| 6dd74de | | | 626 | --- |
| 6dd74de | | | 627 | xychart |
| 6dd74de | | | 628 | title "Sales Revenue" |
| 6dd74de | | | 629 | x-axis Months [jan,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s] |
| 6dd74de | | | 630 | y-axis "Revenue (in $)" 4000 --> 12000 |
| 6dd74de | | | 631 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000, 8000, 10000, 5000, 7600, 4999,11000 ,5000,6000] |
| 6dd74de | | | 632 | `, |
| 6dd74de | | | 633 | {} |
| 6dd74de | | | 634 | ); |
| 6dd74de | | | 635 | |
| 6dd74de | | | 636 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 637 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 638 | // Extract bar properties |
| 6dd74de | | | 639 | const barProps = { |
| 6dd74de | | | 640 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 641 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 642 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 643 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 644 | }; |
| 6dd74de | | | 645 | |
| 6dd74de | | | 646 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 647 | cy.get('text') |
| 6dd74de | | | 648 | .eq(index) |
| 6dd74de | | | 649 | .then(($text) => { |
| 6dd74de | | | 650 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 651 | const textProps = { |
| 6dd74de | | | 652 | x: bbox.x, |
| 6dd74de | | | 653 | y: bbox.y, |
| 6dd74de | | | 654 | width: bbox.width, |
| 6dd74de | | | 655 | height: bbox.height, |
| 6dd74de | | | 656 | }; |
| 6dd74de | | | 657 | |
| 6dd74de | | | 658 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 659 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 660 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 661 | |
| 6dd74de | | | 662 | // Check horizontal alignment (within tolerance) |
| 6dd74de | | | 663 | expect(textProps.x + textProps.width / 2).to.be.closeTo( |
| 6dd74de | | | 664 | barProps.x + barProps.width / 2, |
| 6dd74de | | | 665 | 5 |
| 6dd74de | | | 666 | ); |
| 6dd74de | | | 667 | |
| 6dd74de | | | 668 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 669 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 670 | }); |
| 6dd74de | | | 671 | }); |
| 6dd74de | | | 672 | }); |
| 6dd74de | | | 673 | }); |
| 6dd74de | | | 674 | |
| 6dd74de | | | 675 | it('should render data labels within each bar in the horizontal xy-chart with a lot of bars of different sizes', () => { |
| 6dd74de | | | 676 | imgSnapshotTest( |
| 6dd74de | | | 677 | ` |
| 6dd74de | | | 678 | --- |
| 6dd74de | | | 679 | config: |
| 6dd74de | | | 680 | xyChart: |
| 6dd74de | | | 681 | showDataLabel: true |
| 6dd74de | | | 682 | chartOrientation: horizontal |
| 6dd74de | | | 683 | --- |
| 6dd74de | | | 684 | xychart |
| 6dd74de | | | 685 | title "Sales Revenue" |
| 6dd74de | | | 686 | x-axis Months [jan,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s] |
| 6dd74de | | | 687 | y-axis "Revenue (in $)" 4000 --> 12000 |
| 6dd74de | | | 688 | bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000, 8000, 10000, 5000, 7600, 4999,11000 ,5000,6000] |
| 6dd74de | | | 689 | `, |
| 6dd74de | | | 690 | {} |
| 6dd74de | | | 691 | ); |
| 6dd74de | | | 692 | |
| 6dd74de | | | 693 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 694 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 695 | // Extract bar properties |
| 6dd74de | | | 696 | const barProps = { |
| 6dd74de | | | 697 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 698 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 699 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 700 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 701 | }; |
| 6dd74de | | | 702 | |
| 6dd74de | | | 703 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 704 | cy.get('text') |
| 6dd74de | | | 705 | .eq(index) |
| 6dd74de | | | 706 | .then(($text) => { |
| 6dd74de | | | 707 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 708 | const textProps = { |
| 6dd74de | | | 709 | x: bbox.x, |
| 6dd74de | | | 710 | y: bbox.y, |
| 6dd74de | | | 711 | width: bbox.width, |
| 6dd74de | | | 712 | height: bbox.height, |
| 6dd74de | | | 713 | }; |
| 6dd74de | | | 714 | |
| 6dd74de | | | 715 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 716 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 717 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 718 | |
| 6dd74de | | | 719 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 720 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 721 | expect(textProps.y + textProps.height / 2).to.be.closeTo( |
| 6dd74de | | | 722 | barProps.y + barProps.height / 2, |
| 6dd74de | | | 723 | 5 |
| 6dd74de | | | 724 | ); |
| 6dd74de | | | 725 | }); |
| 6dd74de | | | 726 | }); |
| 6dd74de | | | 727 | }); |
| 6dd74de | | | 728 | }); |
| 6dd74de | | | 729 | |
| 6dd74de | | | 730 | it('should render data labels correctly for a bar in the vertical xy-chart', () => { |
| 6dd74de | | | 731 | imgSnapshotTest( |
| 6dd74de | | | 732 | ` |
| 6dd74de | | | 733 | --- |
| 6dd74de | | | 734 | config: |
| 6dd74de | | | 735 | xyChart: |
| 6dd74de | | | 736 | showDataLabel: true |
| 6dd74de | | | 737 | --- |
| 6dd74de | | | 738 | xychart |
| 6dd74de | | | 739 | title "Sales Revenue" |
| 6dd74de | | | 740 | x-axis Months [jan] |
| 6dd74de | | | 741 | y-axis "Revenue (in $)" 3000 --> 12000 |
| 6dd74de | | | 742 | bar [4000] |
| 6dd74de | | | 743 | `, |
| 6dd74de | | | 744 | {} |
| 6dd74de | | | 745 | ); |
| 6dd74de | | | 746 | |
| 6dd74de | | | 747 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 748 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 749 | // Extract bar properties |
| 6dd74de | | | 750 | const barProps = { |
| 6dd74de | | | 751 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 752 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 753 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 754 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 755 | }; |
| 6dd74de | | | 756 | |
| 6dd74de | | | 757 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 758 | cy.get('text') |
| 6dd74de | | | 759 | .eq(index) |
| 6dd74de | | | 760 | .then(($text) => { |
| 6dd74de | | | 761 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 762 | const textProps = { |
| 6dd74de | | | 763 | x: bbox.x, |
| 6dd74de | | | 764 | y: bbox.y, |
| 6dd74de | | | 765 | width: bbox.width, |
| 6dd74de | | | 766 | height: bbox.height, |
| 6dd74de | | | 767 | }; |
| 6dd74de | | | 768 | |
| 6dd74de | | | 769 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 770 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 771 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 772 | |
| 6dd74de | | | 773 | // Check horizontal alignment (within tolerance) |
| 6dd74de | | | 774 | expect(textProps.x + textProps.width / 2).to.be.closeTo( |
| 6dd74de | | | 775 | barProps.x + barProps.width / 2, |
| 6dd74de | | | 776 | 5 |
| 6dd74de | | | 777 | ); |
| 6dd74de | | | 778 | |
| 6dd74de | | | 779 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 780 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 781 | }); |
| 6dd74de | | | 782 | }); |
| 6dd74de | | | 783 | }); |
| 6dd74de | | | 784 | }); |
| 6dd74de | | | 785 | |
| 6dd74de | | | 786 | it('should render data labels correctly for a bar in the horizontal xy-chart', () => { |
| 6dd74de | | | 787 | imgSnapshotTest( |
| 6dd74de | | | 788 | ` |
| 6dd74de | | | 789 | --- |
| 6dd74de | | | 790 | config: |
| 6dd74de | | | 791 | xyChart: |
| 6dd74de | | | 792 | showDataLabel: true |
| 6dd74de | | | 793 | chartOrientation: horizontal |
| 6dd74de | | | 794 | --- |
| 6dd74de | | | 795 | xychart |
| 6dd74de | | | 796 | title "Sales Revenue" |
| 6dd74de | | | 797 | x-axis Months [jan] |
| 6dd74de | | | 798 | y-axis "Revenue (in $)" 3000 --> 12000 |
| 6dd74de | | | 799 | bar [4000] |
| 6dd74de | | | 800 | `, |
| 6dd74de | | | 801 | {} |
| 6dd74de | | | 802 | ); |
| 6dd74de | | | 803 | |
| 6dd74de | | | 804 | cy.get('g.bar-plot-0').within(() => { |
| 6dd74de | | | 805 | cy.get('rect').each(($rect, index) => { |
| 6dd74de | | | 806 | // Extract bar properties |
| 6dd74de | | | 807 | const barProps = { |
| 6dd74de | | | 808 | x: parseFloat($rect.attr('x')), |
| 6dd74de | | | 809 | y: parseFloat($rect.attr('y')), |
| 6dd74de | | | 810 | width: parseFloat($rect.attr('width')), |
| 6dd74de | | | 811 | height: parseFloat($rect.attr('height')), |
| 6dd74de | | | 812 | }; |
| 6dd74de | | | 813 | |
| 6dd74de | | | 814 | // Get the text element corresponding to this bar by index. |
| 6dd74de | | | 815 | cy.get('text') |
| 6dd74de | | | 816 | .eq(index) |
| 6dd74de | | | 817 | .then(($text) => { |
| 6dd74de | | | 818 | const bbox = $text[0].getBBox(); |
| 6dd74de | | | 819 | const textProps = { |
| 6dd74de | | | 820 | x: bbox.x, |
| 6dd74de | | | 821 | y: bbox.y, |
| 6dd74de | | | 822 | width: bbox.width, |
| 6dd74de | | | 823 | height: bbox.height, |
| 6dd74de | | | 824 | }; |
| 6dd74de | | | 825 | |
| 6dd74de | | | 826 | // Verify that the text label is positioned within the boundaries of the bar. |
| 6dd74de | | | 827 | expect(textProps.x).to.be.greaterThan(barProps.x); |
| 6dd74de | | | 828 | expect(textProps.x + textProps.width).to.be.lessThan(barProps.x + barProps.width); |
| 6dd74de | | | 829 | |
| 6dd74de | | | 830 | expect(textProps.y).to.be.greaterThan(barProps.y); |
| 6dd74de | | | 831 | expect(textProps.y + textProps.height).to.be.lessThan(barProps.y + barProps.height); |
| 6dd74de | | | 832 | expect(textProps.y + textProps.height / 2).to.be.closeTo( |
| 6dd74de | | | 833 | barProps.y + barProps.height / 2, |
| 6dd74de | | | 834 | 5 |
| 6dd74de | | | 835 | ); |
| 6dd74de | | | 836 | }); |
| 6dd74de | | | 837 | }); |
| 6dd74de | | | 838 | }); |
| 6dd74de | | | 839 | }); |
| 6dd74de | | | 840 | }); |