• 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

56.1
/src/js/components/settings/addonselection.js
1
// Copyright 2021 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, { useMemo } from 'react';
15

16
import { Checkbox } from '@mui/material';
17

18
import { ADDONS, PLANS } from '../../constants/appConstants';
19
import InfoText from '../common/infotext';
20
import { useStyles } from './planselection';
21

22
export const AddOnSelection = ({ addons = [], features, onChange, updatedPlan = 'os' }) => {
6✔
23
  const { classes } = useStyles();
3✔
24
  const onAddOnClick = (e, name, enabled) => {
3✔
25
    if (e.target.tagName === 'A') {
×
26
      return;
×
27
    }
28
    let changedAddOns = addons.filter(item => item.name !== name);
×
29
    if (enabled) {
×
30
      changedAddOns.push({ name, enabled });
×
31
    }
32
    onChange(changedAddOns);
×
33
  };
34

35
  const isUpgrade = Object.keys(PLANS).indexOf(updatedPlan) < Object.keys(PLANS).length - 1;
3✔
36
  const relevantAddons = useMemo(
3✔
37
    () =>
38
      Object.entries(ADDONS).reduce((accu, [addOnName, addOn]) => {
2✔
39
        if (!addOn.needs.every(need => features[need])) {
6✔
40
          return accu;
2✔
41
        }
42
        const isEnabled = addons.some(orgAddOn => orgAddOn.enabled && addOnName === orgAddOn.name);
4!
43
        accu.push({ ...addOn, name: addOnName, isEnabled });
4✔
44
        return accu;
4✔
45
      }, []),
46
    [JSON.stringify(addons), JSON.stringify(features)]
47
  );
48

49
  return (
3✔
50
    <>
51
      <h3 className="margin-top-large">Get more features with add-ons</h3>
52

53
      <div className="flexbox column">
54
        <p>
55
          Extend Mender features with our add-ons. Select one or more from the list and submit to request add-ons to be added to your plan. We&apos;ll adjust
56
          your subscription and confirm it with you.
57
        </p>
58
        {relevantAddons.map(addOn => {
59
          const isEligible = addOn.eligible.indexOf(updatedPlan) > -1;
6✔
60

61
          return (
6✔
62
            <div
63
              key={addOn.name}
64
              className={`planPanel ${classes.planPanel} addon ${isUpgrade ? 'upgrade' : ''} ${addOn.isEnabled ? 'active' : ''} ${isEligible ? '' : 'muted'}`}
18!
65
              onClick={e => (isEligible ? onAddOnClick(e, addOn.name, !addOn.isEnabled) : () => false)}
×
66
            >
67
              <Checkbox disabled={!isEligible} checked={addOn.isEnabled} />
68
              <div className="bold">{addOn.title}</div>
69
              {isUpgrade && (
12✔
70
                <div className="flexbox column">
71
                  <div className={`link-color bold ${classes.price}`}>{addOn[updatedPlan].price}</div>
72
                  <div>{addOn[updatedPlan].deviceCount}</div>
73
                </div>
74
              )}
75
              <InfoText variant="dense">{addOn.description}</InfoText>
76
              <a className="margin-left-small" href="https://mender.io/plans/features" target="_blank" rel="noopener noreferrer">
77
                Learn more
78
              </a>
79
            </div>
80
          );
81
        })}
82
      </div>
83
    </>
84
  );
85
};
86

87
export default AddOnSelection;
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