|
1 | 1 | import { module, test } from 'qunit';
|
2 | 2 |
|
3 | 3 | import { calculateReleaseTracks } from '@crates-io/msw/utils/release-tracks';
|
| 4 | +import window from 'ember-window-mock'; |
| 5 | +import { setupWindowMock } from 'ember-window-mock/test-support'; |
4 | 6 |
|
5 | 7 | import { setupTest } from 'crates-io/tests/helpers';
|
6 | 8 | import setupMsw from 'crates-io/tests/helpers/setup-msw';
|
7 | 9 |
|
8 | 10 | module('Model | Version', function (hooks) {
|
9 | 11 | setupTest(hooks);
|
10 | 12 | setupMsw(hooks);
|
| 13 | + setupWindowMock(hooks); |
11 | 14 |
|
12 | 15 | hooks.beforeEach(function () {
|
13 | 16 | this.store = this.owner.lookup('service:store');
|
@@ -345,4 +348,36 @@ module('Model | Version', function (hooks) {
|
345 | 348 | assert.ok(version.published_by);
|
346 | 349 | assert.strictEqual(version.published_by.name, 'JD');
|
347 | 350 | });
|
| 351 | + |
| 352 | + module('purl', function () { |
| 353 | + test('generates PURL for crates.io version', async function (assert) { |
| 354 | + let { db, store } = this; |
| 355 | + |
| 356 | + window.location = 'https://crates.io'; |
| 357 | + |
| 358 | + let crate = db.crate.create({ name: 'serde' }); |
| 359 | + db.version.create({ crate, num: '1.0.136' }); |
| 360 | + |
| 361 | + let crateRecord = await store.findRecord('crate', crate.name); |
| 362 | + let versions = (await crateRecord.versions).slice(); |
| 363 | + let version = versions[0]; |
| 364 | + |
| 365 | + assert.strictEqual(version.purl, 'pkg:cargo/serde@1.0.136'); |
| 366 | + }); |
| 367 | + |
| 368 | + test('generates PURL with registry URL for non-crates.io hosts', async function (assert) { |
| 369 | + let { db, store } = this; |
| 370 | + |
| 371 | + window.location = 'https://staging.crates.io'; |
| 372 | + |
| 373 | + let crate = db.crate.create({ name: 'test-crate' }); |
| 374 | + db.version.create({ crate, num: '2.5.0' }); |
| 375 | + |
| 376 | + let crateRecord = await store.findRecord('crate', crate.name); |
| 377 | + let versions = (await crateRecord.versions).slice(); |
| 378 | + let version = versions[0]; |
| 379 | + |
| 380 | + assert.strictEqual(version.purl, 'pkg:cargo/test-crate@2.5.0?repository_url=https%3A%2F%2Fstaging.crates.io%2F'); |
| 381 | + }); |
| 382 | + }); |
348 | 383 | });
|
0 commit comments