Skip to content

Commit d4cbb86

Browse files
authored
Merge pull request #1456 from ASU/UDS-1912
Uds 1912 - Updated packages to use unity-react-core
2 parents 85417e4 + f7e885c commit d4cbb86

File tree

174 files changed

+1601
-534
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+1601
-534
lines changed

.eslintrc.base.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ module.exports = {
99
// Automatically detect the react version
1010
version: "detect",
1111
},
12+
"import/resolver": {
13+
"node": {
14+
"extensions": [".js", ".jsx", ".ts", ".tsx"]
15+
}
16+
}
1217
},
1318
env: {
1419
browser: true,
@@ -22,6 +27,7 @@ module.exports = {
2227
// Make this the last element so prettier config overrides other formatting rules
2328
"plugin:prettier/recommended",
2429
"plugin:jest/recommended",
30+
// "plugin:import/typescript",
2531
],
2632
parserOptions: {
2733
ecmaFeatures: {

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"lint": "lerna run lint --stream --parallel",
1616
"build-static-site": "lerna run --scope @asu/static-site build",
1717
"build-storybook": "lerna run build-storybook --stream --parallel && yarn build-static-site",
18-
"build": "yarn prebuild && lerna run build --stream --parallel && yarn postbuild",
19-
"prebuild": "yarn lint",
18+
"build": "yarn prebuild && lerna run build --ignore=@asu/unity-react-core --stream --parallel && yarn postbuild",
19+
"prebuild": "lerna run build --scope=@asu/unity-react-core && yarn lint",
2020
"postbuild": "lerna run --ignore=@asu/unity-bootstrap-theme docs",
2121
"test": "lerna run test --stream --parallel",
2222
"test:e2e": "jest",

packages/app-degree-pages/.storybook/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const config = {
77
"@storybook/addon-viewport",
88
"@storybook/addon-a11y",
99
],
10-
stories: ["../src/**/*.stories.js"],
10+
stories: ["../src/**/*.stories.{js,jsx}"],
1111
framework: {
1212
name: "@storybook/react-vite",
1313
},
Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,52 @@
1-
import fetchMock from "jest-fetch-mock";
2-
1+
import { vi } from 'vitest';
32
import {
43
detailPageDefaultDataSource,
54
listingPageDefaultDataSource,
65
} from "../src/core/constants";
7-
import "./components-core-mock";
6+
import "./unity-react-core-mock";
87
import detailNoNewStudentData from "./data/degree-search-detail-no-new-student.json";
98
import detailData from "./data/degree-search-detail.json";
109
import listData from "./data/degree-search.json";
1110

1211
const noNewStudentAcadPlan = "BABUSCLBA";
1312

14-
// mock all fetch() calls
15-
fetchMock.enableMocks();
16-
fetchMock.mockResponse(req => {
17-
if (req.url.includes("dummy-error-url")) {
13+
// Mock fetch globally
14+
const mockFetch = vi.fn();
15+
16+
vi.stubGlobal('fetch', mockFetch);
17+
18+
// Setup the mock implementation
19+
mockFetch.mockImplementation(async (url) => {
20+
if (url.includes("dummy-error-url")) {
1821
return Promise.reject(new Error("dummy error"));
1922
}
20-
if (req.url.includes("dummy-broken-json")) {
23+
24+
if (url.includes("dummy-broken-json")) {
2125
const badResponse = { programs: undefined };
22-
return Promise.resolve(JSON.stringify(badResponse));
26+
return new Response(JSON.stringify(badResponse));
2327
}
2428

2529
let res = [];
2630

27-
if (req.url.includes(listingPageDefaultDataSource.endpoint)) {
31+
if (url.includes(listingPageDefaultDataSource.endpoint)) {
2832
res = listData;
29-
} else if (req.url.includes(noNewStudentAcadPlan)) {
33+
} else if (url.includes(noNewStudentAcadPlan)) {
3034
res = detailNoNewStudentData;
31-
} else if (req.url.includes(detailPageDefaultDataSource.endpoint + "/")) {
35+
} else if (url.includes(detailPageDefaultDataSource.endpoint + "/")) {
3236
res = detailData;
3337
}
3438

3539
if (globalThis.doDelay) {
36-
return new Promise(resolve => setTimeout(() => resolve(res), 1000));
40+
await new Promise(resolve => setTimeout(resolve, 1000));
3741
}
38-
return Promise.resolve(JSON.stringify(res));
42+
43+
return new Response(JSON.stringify(res), {
44+
status: 200,
45+
headers: { 'Content-Type': 'application/json' }
46+
});
47+
});
48+
49+
// Optional: Reset mocks between tests
50+
beforeEach(() => {
51+
mockFetch.mockClear();
3952
});

packages/app-degree-pages/__mocks__/components-core-mock.js renamed to packages/app-degree-pages/__mocks__/unity-react-core-mock.jsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/* eslint-disable react/jsx-props-no-spreading */
22
// @ts-check
3-
import * as asuCore from "@asu/components-core";
3+
import * as asuCore from "@asu/unity-react-core";
44
import * as React from "react";
5+
import { vi } from "vitest"
56

67
const {
78
Accordion: _C1,
@@ -14,11 +15,11 @@ const {
1415
...rest
1516
} = asuCore;
1617

17-
const mockComponent = jest.fn(props => <>{props?.children}</>);
18+
const mockComponent = vi.fn(props => <>{props?.children}</>);
1819

1920
const Accordion = mockComponent;
2021
const AnchorMenu = mockComponent;
21-
const Button = jest.fn(({ ariaLabel: _, ...props }) => (
22+
const Button = vi.fn(({ ariaLabel: _, ...props }) => (
2223
<button type="button" {...props}>
2324
{props?.label}
2425
</button>
@@ -28,7 +29,7 @@ const Hero = mockComponent;
2829
const Pagination = mockComponent;
2930
const Video = mockComponent;
3031

31-
jest.doMock("@asu/components-core", () => ({
32+
vi.doMock("@asu/unity-react-core", () => ({
3233
Accordion,
3334
AnchorMenu,
3435
Button,

packages/app-degree-pages/babel.config.js

Lines changed: 0 additions & 36 deletions
This file was deleted.

packages/app-degree-pages/docs/README.props.md

Lines changed: 106 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -14,62 +14,6 @@
1414
## Typedefs
1515

1616
<dl>
17-
<dt><a href="#ArticleProps">ArticleProps</a> : <code>Object</code></dt>
18-
<dd></dd>
19-
<dt><a href="#CardProps">CardProps</a> : <code>Object</code></dt>
20-
<dd></dd>
21-
<dt><a href="#FeedHeader">FeedHeader</a> : <code>Object</code></dt>
22-
<dd></dd>
23-
<dt><a href="#FeedCtaButton">FeedCtaButton</a> : <code>Object</code></dt>
24-
<dd></dd>
25-
<dt><a href="#FeedCardButton">FeedCardButton</a> : <code>Object</code></dt>
26-
<dd></dd>
27-
<dt><a href="#DataSource">DataSource</a> : <code>Object</code></dt>
28-
<dd></dd>
29-
<dt><a href="#FeedType">FeedType</a> : <code>Object</code></dt>
30-
<dd></dd>
31-
<dt><a href="#HeroProps">HeroProps</a> : <code>Object</code></dt>
32-
<dd></dd>
33-
<dt><a href="#ImageComponentProps">ImageComponentProps</a> : <code>Object</code></dt>
34-
<dd></dd>
35-
<dt><a href="#ButtonProps">ButtonProps</a> : <code>Object</code></dt>
36-
<dd></dd>
37-
<dt><a href="#ButtonIconOnlyProps">ButtonIconOnlyProps</a> : <code>Object</code></dt>
38-
<dd></dd>
39-
<dt><a href="#TagsProps">TagsProps</a> : <code>Object</code></dt>
40-
<dd></dd>
41-
<dt><a href="#BreadcrumbProps">BreadcrumbProps</a> : <code>Object</code></dt>
42-
<dd></dd>
43-
<dt><a href="#ImageProps">ImageProps</a> : <code>Object</code></dt>
44-
<dd></dd>
45-
<dt><a href="#ContentProps">ContentProps</a> : <code>Object</code></dt>
46-
<dd></dd>
47-
<dt><a href="#AccordionCard">AccordionCard</a> : <code>Object</code></dt>
48-
<dd></dd>
49-
<dt><a href="#AccordionProps">AccordionProps</a> : <code>Object</code></dt>
50-
<dd></dd>
51-
<dt><a href="#ReactMouseEvent">ReactMouseEvent</a> ⇒ <code>void</code></dt>
52-
<dd></dd>
53-
<dt><a href="#AccordionCardItemProps">AccordionCardItemProps</a> : <code>Object</code></dt>
54-
<dd></dd>
55-
<dt><a href="#AnchorMenuItem">AnchorMenuItem</a> : <code>Object</code></dt>
56-
<dd></dd>
57-
<dt><a href="#AnchorMenuProps">AnchorMenuProps</a> : <code>Object</code></dt>
58-
<dd></dd>
59-
<dt><a href="#PageChangeEvent">PageChangeEvent</a> ⇒ <code>void</code></dt>
60-
<dd></dd>
61-
<dt><a href="#PaginationProps">PaginationProps</a> : <code>Object</code></dt>
62-
<dd></dd>
63-
<dt><a href="#PageItemProps">PageItemProps</a> : <code>Object</code></dt>
64-
<dd></dd>
65-
<dt><a href="#TestimonialStyle">TestimonialStyle</a> : <code>Object</code></dt>
66-
<dd></dd>
67-
<dt><a href="#TestimonialQuote">TestimonialQuote</a> : <code>Object</code></dt>
68-
<dd></dd>
69-
<dt><a href="#TestimonialProps">TestimonialProps</a> : <code>Object</code></dt>
70-
<dd></dd>
71-
<dt><a href="#VideoProps">VideoProps</a> : <code>Object</code></dt>
72-
<dd></dd>
7317
<dt><a href="#AnchorMenuProps">AnchorMenuProps</a> : <code>Object</code></dt>
7418
<dd><p>This type set the <code>url</code> and <code>isActive</code> optional</p>
7519
</dd>
@@ -181,37 +125,120 @@
181125
| --- | --- |
182126
| props | [<code>DetailPageProps</code>](#DetailPageProps) |
183127

184-
<a name="ArticleProps"></a>
128+
<a name="AnchorMenuProps"></a>
129+
130+
## AnchorMenuProps : <code>Object</code>
131+
This type set the `url` and `isActive` optional
185132

186-
## ArticleProps : <code>Object</code>
187133
**Kind**: global typedef
188134
**Properties**
189135

190136
| Name | Type |
191137
| --- | --- |
192-
| type | <code>&quot;event&quot;</code> \| <code>&quot;news&quot;</code> |
193-
| [articleUrl] | <code>string</code> |
194-
| [publicationDate] | <code>string</code> |
195-
| [title] | <code>string</code> |
196-
| [body] | <code>string</code> |
197-
| [authorEmail] | <code>string</code> |
198-
| [authorName] | <code>string</code> |
199-
| [authorPhone] | <code>string</code> |
200-
| [authorTitle] | <code>string</code> |
201-
| [breadcrumbs] | [<code>Array.&lt;BreadcrumbProps&gt;</code>](#BreadcrumbProps) |
202-
| [calendarUrl] | <code>string</code> |
203-
| [eventLocation] | <code>string</code> |
204-
| [eventTime] | <code>string</code> |
205-
| [headerImageUrl] | <code>string</code> |
206-
| [registrationUrl] | <code>string</code> |
207-
| [zoomUrl] | <code>string</code> |
208-
209-
<a name="CardProps"></a>
210-
211-
## CardProps : <code>Object</code>
138+
| [atAGlance] | <code>boolean</code> |
139+
| [applicationRequirements] | <code>boolean</code> |
140+
| [changeMajorRequirements] | <code>boolean</code> |
141+
| [nextSteps] | <code>boolean</code> |
142+
| [affordingCollege] | <code>boolean</code> |
143+
| [flexibleDegreeOptions] | <code>boolean</code> |
144+
| [careerOutlook] | <code>boolean</code> |
145+
| [exampleCareers] | <code>boolean</code> |
146+
| [customizeYourCollegeExperience] | <code>boolean</code> |
147+
| [globalOpportunity] | <code>boolean</code> |
148+
| [attendOnline] | <code>boolean</code> |
149+
| [whyChooseAsu] | <code>boolean</code> |
150+
| [programContactInfo] | <code>boolean</code> |
151+
| [externalAnchors] | <code>Array.&lt;AnchorMenuItem&gt;</code> |
152+
153+
<a name="BreadcrumbItem"></a>
154+
155+
## BreadcrumbItem : <code>Object</code>
156+
**Kind**: global typedef
157+
**Properties**
158+
159+
| Name | Type |
160+
| --- | --- |
161+
| [url] | <code>string</code> |
162+
| text | <code>string</code> |
163+
| [isActive] | <code>boolean</code> |
164+
165+
<a name="IntroContentProps"></a>
166+
167+
## IntroContentProps : <code>Object</code>
212168
**Kind**: global typedef
213169
**Properties**
214170

215171
| Name | Type |
216172
| --- | --- |
217-
| [type] | <code>string</
173+
| [hideMarketText] | <code>boolean</code> |
174+
| [hideProgramDesc] | <code>boolean</code> |
175+
| [hideRequiredCourses] | <code>boolean</code> |
176+
| [contents] | [<code>Array.&lt;ContentItem&gt;</code>](#ContentItem) |
177+
| [video] | <code>VideoItem</code> |
178+
| [image] | <code>ImageItem</code> |
179+
| [breadcrumbs] | [<code>Array.&lt;BreadcrumbItem&gt;</code>](#BreadcrumbItem) |
180+
181+
<a name="ProgramDescriptionProps"></a>
182+
183+
## ProgramDescriptionProps : <code>Object</code>
184+
**Kind**: global typedef
185+
**Properties**
186+
187+
| Name | Type |
188+
| --- | --- |
189+
| content | [<code>ContentItem</code>](#ContentItem) \| <code>string</code> |
190+
| [stemOptText] | <code>string</code> |
191+
192+
<a name="RequiredCoursesProps"></a>
193+
194+
## RequiredCoursesProps : <code>Object</code>
195+
**Kind**: global typedef
196+
**Properties**
197+
198+
| Name | Type |
199+
| --- | --- |
200+
| onlineMajorMapURL | <code>string</code> |
201+
| majorMapOnCampusURL | <code>string</code> |
202+
| subPlnMajorMaps | <code>Array.&lt;Object&gt;</code> |
203+
| subPlns | <code>Array.&lt;Object&gt;</code> |
204+
205+
<a name="AtAGlanceProps"></a>
206+
207+
## AtAGlanceProps : <code>Object</code>
208+
**Kind**: global typedef
209+
**Properties**
210+
211+
| Name | Type |
212+
| --- | --- |
213+
| [hide] | <code>boolean</code> |
214+
| [offeredBy] | [<code>LinkItem</code>](#LinkItem) |
215+
| [locations] | [<code>Array.&lt;LinkItem&gt;</code>](#LinkItem) |
216+
| [firstRequirementMathCourse] | <code>string</code> |
217+
| [mathIntensity] | <code>string</code> |
218+
| [timeCommitment] | <code>string</code> |
219+
220+
<a name="ApplicationRequirementsProps"></a>
221+
222+
## ApplicationRequirementsProps : <code>Object</code>
223+
**Kind**: global typedef
224+
**Properties**
225+
226+
| Name | Type |
227+
| --- | --- |
228+
| graduateRequirements | <code>string</code> |
229+
| isMinorOrCertificate | <code>boolean</code> |
230+
| additionalRequirements | <code>string</code> |
231+
| transferRequirements | <code>string</code> |
232+
| minorRequirements | <code>string</code> |
233+
234+
<a name="ChangeMajorRequirementsProps"></a>
235+
236+
## ChangeMajorRequirementsProps : <code>Object</code>
237+
**Kind**: global typedef
238+
**Properties**
239+
240+
| Name | Type |
241+
| --- | --- |
242+
| [contents] | [<code>Array.&lt;ContentItem&gt;</code>](#ContentItem) |
243+
244+
<

0 commit comments

Comments
 (0)