|
1361 | 1361 | )
|
1362 | 1362 | end
|
1363 | 1363 |
|
| 1364 | + # Dependency doesn't consider metadata as part of equality checks |
| 1365 | + # so this allows us to check that the metadata is updated in tests. |
| 1366 | + RSpec::Matchers.define :including_metadata do |expected| |
| 1367 | + match do |actual| |
| 1368 | + actual == expected && actual.metadata == expected.metadata |
| 1369 | + end |
| 1370 | + end |
| 1371 | + |
| 1372 | + def contain_exactly_including_metadata(*expected) |
| 1373 | + contain_exactly(*expected.map { |e| including_metadata(e) }) |
| 1374 | + end |
| 1375 | + |
| 1376 | + def eq_including_metadata(expected_array) |
| 1377 | + eq(expected_array).and contain_exactly_including_metadata(*expected_array) |
| 1378 | + end |
| 1379 | + |
1364 | 1380 | context "for a security update for a locked transitive dependency" do
|
1365 | 1381 | let(:dependency_files) { project_dependency_files("npm8/locked_transitive_dependency") }
|
1366 | 1382 | let(:registry_listing_url) { "https://registry.npmjs.org/locked-transitive-dependency" }
|
|
1385 | 1401 |
|
1386 | 1402 | it "correctly updates the transitive dependency" do
|
1387 | 1403 | expect(checker.send(:updated_dependencies_after_full_unlock)).
|
1388 |
| - to eq([ |
| 1404 | + to eq_including_metadata([ |
1389 | 1405 | Dependabot::Dependency.new(
|
1390 | 1406 | name: "@dependabot-fixtures/npm-transitive-dependency",
|
1391 | 1407 | version: "1.0.1",
|
1392 | 1408 | package_manager: "npm_and_yarn",
|
1393 | 1409 | previous_version: "1.0.0",
|
1394 | 1410 | requirements: [],
|
1395 |
| - previous_requirements: [] |
| 1411 | + previous_requirements: [], |
| 1412 | + metadata: { information_only: true } |
1396 | 1413 | ),
|
1397 | 1414 | Dependabot::Dependency.new(
|
1398 | 1415 | name: "@dependabot-fixtures/npm-parent-dependency",
|
|
1426 | 1443 | let(:registry_listing_url) { "https://registry.npmjs.org/transitive-dependency-locked-by-intermediate" }
|
1427 | 1444 |
|
1428 | 1445 | it "correctly updates the transitive dependency" do
|
1429 |
| - expect(checker.send(:updated_dependencies_after_full_unlock)).to eq([ |
| 1446 | + expect(checker.send(:updated_dependencies_after_full_unlock)).to eq_including_metadata([ |
1430 | 1447 | Dependabot::Dependency.new(
|
1431 | 1448 | name: "@dependabot-fixtures/npm-transitive-dependency",
|
1432 | 1449 | package_manager: "npm_and_yarn",
|
1433 | 1450 | previous_requirements: [],
|
1434 | 1451 | previous_version: "1.0.0",
|
1435 | 1452 | requirements: [],
|
1436 |
| - version: "1.0.1" |
| 1453 | + version: "1.0.1", |
| 1454 | + metadata: { information_only: true } |
1437 | 1455 | ),
|
1438 | 1456 | Dependabot::Dependency.new(
|
1439 | 1457 | name: "@dependabot-fixtures/npm-intermediate-dependency",
|
|
1452 | 1470 | let(:registry_listing_url) { "https://registry.npmjs.org/transitive-dependency-locked-by-multiple" }
|
1453 | 1471 |
|
1454 | 1472 | it "correctly updates the transitive dependency" do
|
1455 |
| - expect(checker.send(:updated_dependencies_after_full_unlock)).to contain_exactly( |
| 1473 | + expect(checker.send(:updated_dependencies_after_full_unlock)).to contain_exactly_including_metadata( |
1456 | 1474 | Dependabot::Dependency.new(
|
1457 | 1475 | name: "@dependabot-fixtures/npm-parent-dependency",
|
1458 | 1476 | package_manager: "npm_and_yarn",
|
|
1531 | 1549 | previous_requirements: [],
|
1532 | 1550 | previous_version: "1.0.0",
|
1533 | 1551 | requirements: [],
|
1534 |
| - version: "1.0.1" |
| 1552 | + version: "1.0.1", |
| 1553 | + metadata: { information_only: true } |
1535 | 1554 | )
|
1536 | 1555 | )
|
1537 | 1556 | end
|
|
1547 | 1566 | end
|
1548 | 1567 |
|
1549 | 1568 | it "correctly updates the parent dependency and removes the transitive because removal is enabled" do
|
1550 |
| - expect(checker.send(:updated_dependencies_after_full_unlock)).to contain_exactly( |
| 1569 | + expect(checker.send(:updated_dependencies_after_full_unlock)).to contain_exactly_including_metadata( |
1551 | 1570 | Dependabot::Dependency.new(
|
1552 | 1571 | name: "@dependabot-fixtures/npm-transitive-dependency",
|
1553 | 1572 | package_manager: "npm_and_yarn",
|
1554 | 1573 | previous_requirements: [],
|
1555 | 1574 | previous_version: "1.0.0",
|
1556 | 1575 | requirements: [],
|
1557 |
| - removed: true |
| 1576 | + removed: true, |
| 1577 | + metadata: { information_only: true } |
1558 | 1578 | ),
|
1559 | 1579 | Dependabot::Dependency.new(
|
1560 | 1580 | name: "@dependabot-fixtures/npm-remove-dependency",
|
|
1608 | 1628 | end
|
1609 | 1629 |
|
1610 | 1630 | it "correctly updates the transitive dependency by unlocking the parent" do
|
1611 |
| - expect(checker.send(:updated_dependencies_after_full_unlock)).to eq([ |
| 1631 | + expect(checker.send(:updated_dependencies_after_full_unlock)).to eq_including_metadata([ |
1612 | 1632 | Dependabot::Dependency.new(
|
1613 | 1633 | name: "@dependabot-fixtures/npm-transitive-dependency-with-more-versions",
|
1614 | 1634 | package_manager: "npm_and_yarn",
|
1615 | 1635 | previous_requirements: [],
|
1616 | 1636 | previous_version: "1.0.0",
|
1617 | 1637 | requirements: [],
|
1618 |
| - version: "2.0.0" |
| 1638 | + version: "2.0.0", |
| 1639 | + metadata: { information_only: true } |
1619 | 1640 | ),
|
1620 | 1641 | Dependabot::Dependency.new(
|
1621 | 1642 | name: "@dependabot-fixtures/npm-parent-dependency-with-more-versions",
|
|
0 commit comments