Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate from ember-cli-mirage to msw and @mswjs/data #10393

Merged
merged 189 commits into from
Jan 31, 2025
Merged
Changes from 1 commit
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
80d3823
git: Ignore *all* `node_modules` folders
Turbo87 Jan 14, 2025
e884806
Add basic `@crates-io/msw` package
Turbo87 Jan 14, 2025
5f94902
msw: Add `@mswjs/data` mock database
Turbo87 Jan 14, 2025
62238a9
msw: Extract custom `factory()` fn
Turbo87 Jan 15, 2025
7b4ca78
msw: Add support for `preCreate()` fns
Turbo87 Jan 15, 2025
47f2840
msw: Add support for `counter` values to the models
Turbo87 Jan 15, 2025
42e2007
msw: Extract `db.reset()` fn
Turbo87 Jan 16, 2025
15dbb4b
msw: Import `dasherize()` fn from `@ember/string`
Turbo87 Jan 15, 2025
bc236e9
msw: Implement `category` model
Turbo87 Jan 20, 2025
ccb4cef
msw: Implement `keyword` model
Turbo87 Jan 20, 2025
8894455
msw: Implement `crate` model
Turbo87 Jan 20, 2025
61a9a03
msw: Implement `user` model
Turbo87 Jan 15, 2025
31ddd22
msw: Implement `mswSession` model
Turbo87 Jan 15, 2025
e1237f7
msw: Implement `apiToken` model
Turbo87 Jan 17, 2025
a5f3281
msw: Implement `team` model
Turbo87 Jan 20, 2025
36b0bb0
msw: Implement `version` model
Turbo87 Jan 20, 2025
1a468d5
msw: Implement `versionDownload` model
Turbo87 Jan 20, 2025
c7d595f
msw: Implement `crateOwnerInvitation` model
Turbo87 Jan 20, 2025
3678f88
msw: Implement `crateOwnership` model
Turbo87 Jan 20, 2025
2a4f94f
msw: Implement `dependency` model
Turbo87 Jan 20, 2025
0abb0dd
msw: Import `underscore()` fn from `@ember/string`
Turbo87 Jan 21, 2025
2d325e4
msw: Implement basic `serializeModel()` fn
Turbo87 Jan 21, 2025
74245ce
msw: Implement `category` serializer
Turbo87 Jan 21, 2025
a931e55
msw: Implement `keyword` serializer
Turbo87 Jan 21, 2025
8403d00
msw: Implement `team` serializer
Turbo87 Jan 21, 2025
a455550
msw: Implement `user` serializer
Turbo87 Jan 21, 2025
aa45a7c
msw: Implement `invite` serializer
Turbo87 Jan 22, 2025
990f853
msw: Implement `api-token` serializer
Turbo87 Jan 22, 2025
70eabf2
msw: Implement `crate` serializer
Turbo87 Jan 23, 2025
c85158f
msw: Implement `version` serializer
Turbo87 Jan 23, 2025
404e209
msw: Implement `dependency` serializer
Turbo87 Jan 23, 2025
7dd2952
msw: Implement `getSession()` helper fn
Turbo87 Jan 21, 2025
2ebe678
msw: Implement docs.rs request handler
Turbo87 Jan 22, 2025
4c0ef9b
msw: Implement `GET /api/v1/categories` request handler
Turbo87 Jan 21, 2025
36170ae
msw: Implement `GET /api/v1/category_slugs` request handler
Turbo87 Jan 21, 2025
571ff2e
msw: Implement `GET /api/v1/categories/:category_id` request handler
Turbo87 Jan 21, 2025
ef202e4
msw: Implement `GET /api/v1/keywords` request handler
Turbo87 Jan 21, 2025
4c6eb08
msw: Implement `GET /api/v1/keywords/:keyword_id` request handler
Turbo87 Jan 21, 2025
ab1b1d5
msw: Implement `DELETE /api/private/session` request handler
Turbo87 Jan 21, 2025
14839ec
msw: Implement `GET /api/v1/site_metadata` request handler
Turbo87 Jan 15, 2025
3462a1a
msw: Implement `GET /api/v1/teams/:team_id` request handler
Turbo87 Jan 21, 2025
bc1e4a5
msw: Implement `GET /api/v1/users/:user_id` request handler
Turbo87 Jan 21, 2025
c537922
msw: Implement `PUT /api/v1/users/:user_id` request handler
Turbo87 Jan 21, 2025
11edd81
msw: Implement `PUT /api/v1/users/:user_id/resend` request handler
Turbo87 Jan 21, 2025
0329a77
msw: Implement `GET /api/v1/me` request handler
Turbo87 Jan 21, 2025
125687b
msw: Implement `GET /api/private/crate_owner_invitations` request han…
Turbo87 Jan 22, 2025
f207e28
msw: Implement `GET /api/v1/me/crate_owner_invitations` request handler
Turbo87 Jan 22, 2025
48db714
msw: Implement `PUT /api/v1/me/crate_owner_invitations/:crate_id` req…
Turbo87 Jan 22, 2025
8d57606
msw: Implement `PUT /api/v1/me/crate_owner_invitations/accept/:token`…
Turbo87 Jan 22, 2025
8df29aa
msw: Implement `PUT /api/v1/confirm/:token` request handler
Turbo87 Jan 22, 2025
a91fff1
msw: Implement `PUT /api/v1/me/tokens` request handler
Turbo87 Jan 22, 2025
3abeb17
msw: Implement `GET /api/v1/me/tokens` request handler
Turbo87 Jan 22, 2025
20d7f46
msw: Implement `DELETE /api/v1/me/tokens/:tokenId` request handler
Turbo87 Jan 22, 2025
59105c0
msw: Implement `GET /api/v1/me/tokens/:tokenId` request handler
Turbo87 Jan 22, 2025
f0da1a2
msw: Implement `GET /api/v1/crates` request handler
Turbo87 Jan 23, 2025
c26e091
msw: Implement `GET /api/v1/crates/:name` request handler
Turbo87 Jan 23, 2025
cb91248
msw: Implement `GET /api/v1/crates/:name/versions` request handler
Turbo87 Jan 23, 2025
68a3f8d
msw: Implement `GET /api/v1/crates/:name/:version` request handler
Turbo87 Jan 23, 2025
87e1a9f
msw: Implement `DELETE /api/v1/crates/:name` request handler
Turbo87 Jan 23, 2025
cbe86e2
msw: Implement `GET /api/v1/crates/:name/following` request handler
Turbo87 Jan 23, 2025
4206f5a
msw: Implement `PUT /api/v1/crates/:name/follow` request handler
Turbo87 Jan 23, 2025
e2fbce4
msw: Implement `DELETE /api/v1/crates/:name/follow` request handler
Turbo87 Jan 23, 2025
def0e95
msw: Implement `GET /api/v1/crates/:name/:version/dependencies` reque…
Turbo87 Jan 23, 2025
f2cd3d9
msw: Implement `GET /api/v1/crates/:name/:version/downloads` request …
Turbo87 Jan 23, 2025
56334bb
msw: Implement `GET /api/v1/crates/:name/owner_user` request handler
Turbo87 Jan 23, 2025
8024266
msw: Implement `GET /api/v1/crates/:name/owner_team` request handler
Turbo87 Jan 23, 2025
9bbc9b7
msw: Implement `GET /api/v1/crates/:name/downloads` request handler
Turbo87 Jan 23, 2025
29a5005
msw: Implement `GET /api/v1/crates/:name/reverse_dependencies` reques…
Turbo87 Jan 23, 2025
69ca1ae
msw: Implement `PUT /api/v1/crates/:name/owners` request handler
Turbo87 Jan 23, 2025
b2aab7f
msw: Implement `DELETE /api/v1/crates/:name/owners` request handler
Turbo87 Jan 23, 2025
1b168a8
msw: Implement `DELETE /api/v1/crates/:name/:version/yank` request ha…
Turbo87 Jan 23, 2025
b15d71c
msw: Implement `PUT /api/v1/crates/:name/:version/unyank` request han…
Turbo87 Jan 23, 2025
4ff2177
msw: Implement `GET /api/v1/crates/:name/:version/readme` request han…
Turbo87 Jan 23, 2025
81573a1
msw: Implement `PATCH /api/v1/crates/:name/:version` request handler
Turbo87 Jan 23, 2025
26434dd
msw: Implement `GET /api/v1/me/updates` request handler
Turbo87 Jan 23, 2025
14d7481
msw: Implement `GET /api/v1/summary` request handler
Turbo87 Jan 23, 2025
f7ea672
msw: Implement play.rust-lang.org request handler
Turbo87 Jan 24, 2025
583fe8e
msw: Import existing fixtures
Turbo87 Jan 24, 2025
4aac5e9
msw: Serve `mockServiceWorker.js` in dev/test mode
Turbo87 Jan 16, 2025
62c540c
msw: Add `msw: true` option to `setupApplicationTest()` fn
Turbo87 Jan 17, 2025
2e3f7c3
msw: Prevent `@mswjs/data` from bundling the `msw` package
Turbo87 Jan 24, 2025
d2474d9
tests/acceptance/api-token: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
8ff81d9
tests/acceptance/readme-rendering: Migrate from `mirage` to `@crates-…
Turbo87 Jan 24, 2025
6bcd319
tests/acceptance/front-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
0987e36
tests/acceptance/settings/add-owner: Migrate from `mirage` to `@crate…
Turbo87 Jan 24, 2025
24e48ef
tests/acceptance/settings/remove-owner: Migrate from `mirage` to `@cr…
Turbo87 Jan 24, 2025
2baf29d
tests/acceptance/404: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
3371f29
tests/acceptance/categories: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
a8ba731
tests/acceptance/crate-deletion: Migrate from `mirage` to `@crates-io…
Turbo87 Jan 24, 2025
a377ba1
tests/acceptance/crate-dependencies: Migrate from `mirage` to `@crate…
Turbo87 Jan 24, 2025
e558342
tests/acceptance/crate-following: Migrate from `mirage` to `@crates-i…
Turbo87 Jan 24, 2025
4515e1a
tests/acceptance/crate-navtabs: Migrate from `mirage` to `@crates-io/…
Turbo87 Jan 24, 2025
d6c7a06
tests/acceptance/crate: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
52afee6
tests/acceptance/crates: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
bdd6b7a
tests/acceptance/dashboard: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
b7e8b4e
tests/acceptance/dev-mode: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
7ad14f9
tests/acceptance/email-change: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
5d55d78
tests/acceptance/email-confirmation: Migrate from `mirage` to `@crate…
Turbo87 Jan 24, 2025
489577d
tests/acceptance/invites: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
5ac2ac7
tests/acceptance/keyword: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
2e5d704
tests/acceptance/login: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
f4e1fec
tests/acceptance/logout: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
d613e24
tests/acceptance/publish-notifications: Migrate from `mirage` to `@cr…
Turbo87 Jan 24, 2025
ad2f7b3
tests/acceptance/read-only-mode: Migrate from `mirage` to `@crates-io…
Turbo87 Jan 24, 2025
cbbf385
tests/acceptance/reverse-dependencies: Migrate from `mirage` to `@cra…
Turbo87 Jan 24, 2025
df2da96
tests/acceptance/search: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
6d86ab9
tests/acceptance/sudo: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
b29f320
tests/acceptance/support: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
5786e2d
tests/acceptance/team-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
3642278
tests/acceptance/token-invites: Migrate from `mirage` to `@crates-io/…
Turbo87 Jan 24, 2025
bbcbcdf
tests/acceptance/user-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
68a5ef8
tests/acceptance/versions: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
c8a64a0
tests/acceptance/settings: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
72481d9
tests/bugs/2329: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
679cc45
tests/bugs/4506: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
b4b458c
tests/routes/crate/version/crate-links: Migrate from `mirage` to `@cr…
Turbo87 Jan 24, 2025
a10fda0
tests/routes/crate/version/docs-link: Migrate from `mirage` to `@crat…
Turbo87 Jan 24, 2025
581a82f
tests/routes/crate/version/model: Migrate from `mirage` to `@crates-i…
Turbo87 Jan 24, 2025
e879541
tests/routes/crate/delete: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
090faf8
tests/routes/crate/range: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
e13525d
tests/routes/settings/tokens: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
7fbfb75
tests/routes/category: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
733eb4f
tests/routes/keyword: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
cb20fb8
tests/routes/support: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
38c1e48
tests/routes/team: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
bec3ce7
tests/routes/user: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
e270add
tests/adapters/crate: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
c2474e9
tests/components/crate-sidebar/playground-button: Migrate from `mirag…
Turbo87 Jan 24, 2025
03dd0fe
tests/components/crate-sidebar/toml-snippet: Migrate from `mirage` to…
Turbo87 Jan 24, 2025
088f841
tests/components/crate-row: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
2372611
tests/components/owners-list: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
4b420e4
tests/components/privileged-action: Migrate from `mirage` to `@crates…
Turbo87 Jan 24, 2025
7bafdc5
tests/components/version-list-row: Migrate from `mirage` to `@crates-…
Turbo87 Jan 24, 2025
d3b2897
tests/models/crate: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
9fb9eb2
tests/models/user: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
a87766b
tests/models/version: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
9d1e84e
tests/services/playground: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
7e62fae
tests/utils/ajax: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 24, 2025
3685a95
CI: Run `@crates-io/msw` tests in dedicated job
Turbo87 Jan 28, 2025
a6e4c9a
mirage: Start `ember-cli-mirage` server only if `window.startMirage` …
Turbo87 Jan 27, 2025
d366c39
playwright: Disable `mirage` fixture from being applied automatically
Turbo87 Jan 27, 2025
febc17b
playwright: Set default `locale` to `en-US`
Turbo87 Jan 31, 2025
55e0873
playwright: Implement basic `defer()` fn
Turbo87 Jan 27, 2025
d3dd235
playwright: Implement `msw` fixture
Turbo87 Jan 27, 2025
fe40d9c
playwright: Use `@sinonjs/fake-timers` on the test runner side too
Turbo87 Jan 27, 2025
ab27271
e2e/acceptance/front-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
7fe47e4
e2e/acceptance/settings/add-owner: Migrate from `mirage` to `@crates-…
Turbo87 Jan 27, 2025
3748f6f
e2e/acceptance/settings/remove-owner: Migrate from `mirage` to `@crat…
Turbo87 Jan 27, 2025
24369f8
e2e/acceptance/settings/settings: Migrate from `mirage` to `@crates-i…
Turbo87 Jan 27, 2025
aa884d7
e2e/acceptance/api-token: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
1eeb54e
e2e/acceptance/categories: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
917557a
e2e/acceptance/crate: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
cf8cec9
e2e/acceptance/crate-deletion: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
4c1a947
e2e/acceptance/crate-dependencies: Migrate from `mirage` to `@crates-…
Turbo87 Jan 27, 2025
60e4b5e
e2e/acceptance/crate-following: Migrate from `mirage` to `@crates-io/…
Turbo87 Jan 27, 2025
d7baf9f
e2e/acceptance/crate-navtabs: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
de1e94a
e2e/acceptance/crates: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
f8498a9
e2e/acceptance/dashboard: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
0d0a068
e2e/acceptance/email-change: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
8a43670
e2e/acceptance/email-confirmation: Migrate from `mirage` to `@crates-…
Turbo87 Jan 27, 2025
55648e1
e2e/acceptance/invites: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
7f9a388
e2e/acceptance/keyword: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
340e3be
e2e/acceptance/login: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
4020722
e2e/acceptance/logout: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
d26562c
e2e/acceptance/publish-notifications: Migrate from `mirage` to `@crat…
Turbo87 Jan 27, 2025
331eb63
e2e/acceptance/read-only: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
fa7bc92
e2e/acceptance/readme-rendering: Migrate from `mirage` to `@crates-io…
Turbo87 Jan 27, 2025
234756e
e2e/acceptance/reverse-dependencies: Migrate from `mirage` to `@crate…
Turbo87 Jan 27, 2025
eb1e267
e2e/acceptance/search: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
1f7c914
e2e/acceptance/sudo: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
63236b3
e2e/acceptance/support: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
525c2ce
e2e/acceptance/team-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
e65e192
e2e/acceptance/token-invites: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
9702df6
e2e/acceptance/user-page: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
58818a9
e2e/acceptance/versions: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 27, 2025
8ef87d3
e2e/bugs/2329: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
858182a
e2e/bugs/4506: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
68be0b4
e2e/routes/category: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
2423995
e2e/routes/crate/delete: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
c459b0e
e2e/routes/crate/range: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
9bc8b57
e2e/routes/crate/version/crate-links: Migrate from `mirage` to `@crat…
Turbo87 Jan 28, 2025
06542cc
e2e/routes/crate/version/docs-link: Migrate from `mirage` to `@crates…
Turbo87 Jan 28, 2025
ac446e5
e2e/routes/crate/version/model: Migrate from `mirage` to `@crates-io/…
Turbo87 Jan 28, 2025
4eaf3db
e2e/routes/keyword: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
b710303
e2e/routes/settings/tokens/index: Migrate from `mirage` to `@crates-i…
Turbo87 Jan 28, 2025
1ea2da8
e2e/routes/settings/tokens/new: Migrate from `mirage` to `@crates-io/…
Turbo87 Jan 28, 2025
a309609
e2e/routes/team: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
c34c9df
e2e/routes/user: Migrate from `mirage` to `@crates-io/msw`
Turbo87 Jan 28, 2025
a328a12
Remove obsolete `ember-cli-mirage` setup
Turbo87 Jan 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
e2e/routes/crate/version/model: Migrate from mirage to `@crates-io/…
…msw`
  • Loading branch information
Turbo87 committed Jan 31, 2025
commit ac446e5c0981d422fb3274617395aaed59498c2a
80 changes: 34 additions & 46 deletions e2e/routes/crate/version/model.spec.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';

test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () => {
test.describe('with explicit version number in the URL', () => {
test('shows yanked versions', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0' });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1' });
});
test('shows yanked versions', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0' });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1' });

await page.goto('/crates/foo/1.2.3');
await expect(page).toHaveURL(`/crates/foo/1.2.3`);
Expand All @@ -20,13 +18,11 @@ test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () =>
await expect(page.locator('[data-test-notification-message]')).toHaveCount(0);
});

test('shows error page for unknown versions', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0' });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1' });
});
test('shows error page for unknown versions', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0' });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1' });

await page.goto('/crates/foo/2.0.0');
await expect(page).toHaveURL(`/crates/foo/2.0.0`);
Expand All @@ -37,14 +33,12 @@ test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () =>
});
});
test.describe('without version number in the URL', () => {
test('defaults to the highest stable version', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0' });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1' });
server.create('version', { crate, num: '2.0.0' });
});
test('defaults to the highest stable version', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0' });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1' });
msw.db.version.create({ crate, num: '2.0.0' });

await page.goto('/crates/foo');
await expect(page).toHaveURL(`/crates/foo`);
Expand All @@ -56,13 +50,11 @@ test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () =>
await expect(page.locator('[data-test-notification-message]')).toHaveCount(0);
});

test('defaults to the highest stable version, even if there are higher prereleases', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0' });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1' });
});
test('defaults to the highest stable version, even if there are higher prereleases', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0' });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1' });

await page.goto('/crates/foo');
await expect(page).toHaveURL(`/crates/foo`);
Expand All @@ -74,15 +66,13 @@ test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () =>
await expect(page.locator('[data-test-notification-message]')).toHaveCount(0);
});

test('defaults to the highest not-yanked version', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0', yanked: true });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1' });
server.create('version', { crate, num: '2.0.0-beta.2' });
server.create('version', { crate, num: '2.0.0', yanked: true });
});
test('defaults to the highest not-yanked version', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0', yanked: true });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1' });
msw.db.version.create({ crate, num: '2.0.0-beta.2' });
msw.db.version.create({ crate, num: '2.0.0', yanked: true });

await page.goto('/crates/foo');
await expect(page).toHaveURL(`/crates/foo`);
Expand All @@ -94,13 +84,11 @@ test.describe('Route | crate.version | model() hook', { tag: '@routes' }, () =>
await expect(page.locator('[data-test-notification-message]')).toHaveCount(0);
});

test('if there are only yanked versions, it defaults to the latest version', async ({ page, mirage }) => {
await mirage.addHook(server => {
let crate = server.create('crate', { name: 'foo' });
server.create('version', { crate, num: '1.0.0', yanked: true });
server.create('version', { crate, num: '1.2.3', yanked: true });
server.create('version', { crate, num: '2.0.0-beta.1', yanked: true });
});
test('if there are only yanked versions, it defaults to the latest version', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0', yanked: true });
msw.db.version.create({ crate, num: '1.2.3', yanked: true });
msw.db.version.create({ crate, num: '2.0.0-beta.1', yanked: true });

await page.goto('/crates/foo');
await expect(page).toHaveURL(`/crates/foo`);
Expand Down