• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / gui / 951400782

pending completion
951400782

Pull #3900

gitlab-ci

web-flow
chore: bump @testing-library/jest-dom from 5.16.5 to 5.17.0

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.5 to 5.17.0.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.5...v5.17.0)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Pull Request #3900: chore: bump @testing-library/jest-dom from 5.16.5 to 5.17.0

4446 of 6414 branches covered (69.32%)

8342 of 10084 relevant lines covered (82.73%)

186.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

68.0
/src/js/components/dashboard/widgets/mapwidget.js
1
// Copyright 2023 Northern.tech AS
2
//
3
//    Licensed under the Apache License, Version 2.0 (the "License");
4
//    you may not use this file except in compliance with the License.
5
//    You may obtain a copy of the License at
6
//
7
//        http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//    Unless required by applicable law or agreed to in writing, software
10
//    distributed under the License is distributed on an "AS IS" BASIS,
11
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//    See the License for the specific language governing permissions and
13
//    limitations under the License.
14
import React, { useEffect, useMemo, useState } from 'react';
15

16
import { MenuItem, Select } from '@mui/material';
17

18
import Leaflet from 'leaflet';
19

20
import { geoAttributes } from '../../../actions/deviceActions';
21
import { MAX_PAGE_SIZE } from '../../../api/general-api';
22
import { ALL_DEVICES } from '../../../constants/deviceConstants';
23
import Map from './map';
24

25
const fallbackCenter = [59.913333, 10.738889];
5✔
26

27
const MapWrapper = ({ groups, groupNames, devicesById, getGroupDevices, getDevicesInBounds }) => {
5✔
28
  const [group, setGroup] = useState(ALL_DEVICES);
14✔
29
  const [bounds, setBounds] = useState();
14✔
30
  const [items, setItems] = useState([]);
14✔
31

32
  useEffect(() => {
14✔
33
    if (groupNames.length && !groupNames.includes(ALL_DEVICES)) {
1!
34
      setGroup(groupNames[0]);
×
35
    }
36
  }, [groupNames.join('')]);
37

38
  useEffect(() => {
14✔
39
    if (!bounds) {
1!
40
      getGroupDevices(group, { perPage: MAX_PAGE_SIZE, selectedAttributes: geoAttributes });
1✔
41
      return;
1✔
42
    }
43
    getDevicesInBounds(bounds, group);
×
44
  }, [group, JSON.stringify(bounds)]);
45

46
  const deviceIds = group !== ALL_DEVICES ? groups[group].deviceIds : Object.keys(devicesById);
14!
47
  useEffect(() => {
14✔
48
    const items = deviceIds.reduce((accu, id) => {
1✔
49
      const device = devicesById[id];
3✔
50
      const { attributes = {} } = device;
3!
51
      if (attributes['geo-lat']) {
3!
52
        accu.push({ device, position: [attributes['geo-lat'], attributes['geo-lon']] });
×
53
      }
54
      return accu;
3✔
55
    }, []);
56
    setItems(items);
1✔
57
  }, [deviceIds.join('')]);
58

59
  const boundaries = useMemo(() => {
14✔
60
    if (!items.length) {
1!
61
      return;
1✔
62
    }
63
    const boundaries = items.reduce((accu, { position }) => {
×
64
      accu.push(position);
×
65
      return accu;
×
66
    }, []);
67
    return Leaflet.latLngBounds(boundaries);
×
68
  }, [JSON.stringify(items)]);
69

70
  const onGroupSelect = ({ target: { value } }) => {
14✔
71
    setBounds();
×
72
    setGroup(value);
×
73
  };
74

75
  const mapProps = boundaries ? { bounds: boundaries } : { center: fallbackCenter, zoom: 10 };
14!
76

77
  return (
14✔
78
    <span>
79
      <div className="flexbox center-aligned space-between">
80
        <h4>Device locations</h4>
81
        <Select labelId="group-selection-label" onChange={onGroupSelect} value={group}>
82
          {groupNames.map(item => (
83
            <MenuItem key={item} value={item}>
42✔
84
              {item}
85
            </MenuItem>
86
          ))}
87
        </Select>
88
      </div>
89
      <Map items={items} mapProps={mapProps} onMapMoved={setBounds} />
90
    </span>
91
  );
92
};
93

94
export default MapWrapper;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc