Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
2a7cf08
added a Nav link to /recommendationrequest/create (don't know if that…
Gupperfisher Nov 17, 2025
d9e89b1
AppNavbar.jsx now links to proper url
Gupperfisher Nov 17, 2025
32614f1
AppNavbar.jsx now links to proper url(added an s to the end of reques…
Gupperfisher Nov 17, 2025
ffdfc3b
added test and swapped placement of the nav link, to the bottom secti…
Gupperfisher Nov 17, 2025
8c21024
reverted placement of nav link and swapped currentUser form student t…
Gupperfisher Nov 17, 2025
d3e2b41
run npm format
Gupperfisher Nov 18, 2025
c18f388
swapped the Navbar Example Brand with UCSB Rec and made it so the bro…
Gupperfisher Nov 18, 2025
a88877a
enabled reques types on Nav for Admins
Gupperfisher Nov 18, 2025
520c7af
ran npm run format
Gupperfisher Nov 18, 2025
b06c7c8
Update AppNavbar.test.jsx
Gupperfisher Nov 19, 2025
2dee6dd
allowing multiple h2 connections
Gupperfisher Nov 19, 2025
765896c
Updated AppNavbar.jsx
Gupperfisher Nov 19, 2025
61d41b7
Update index.html
Gupperfisher Nov 20, 2025
357dd4d
Update index.html
Gupperfisher Nov 20, 2025
16ec623
Update index.html
Gupperfisher Nov 20, 2025
b678a40
Update index.html
Gupperfisher Nov 20, 2025
39823e2
Update AppNavbar.jsx
Gupperfisher Nov 20, 2025
455eb13
Update AppNavbar.jsx
Gupperfisher Nov 20, 2025
6822b48
Update AppNavbar.jsx
Gupperfisher Nov 20, 2025
396c750
Update AppNavbar.test.jsx
Gupperfisher Nov 20, 2025
c3a9def
Update AppNavbar.jsx
Gupperfisher Nov 20, 2025
0c1ff38
Update AppNavbar.test.jsx
Gupperfisher Nov 20, 2025
b8cc4ce
Update AppNavbar.jsx
Gupperfisher Nov 20, 2025
2c5c46d
ran npm run format
Gupperfisher Nov 20, 2025
12d747e
Merge pull request #6 from ucsb-cs156-f25/create-request-from-Nav
pconrad Nov 21, 2025
f938ee0
Merge branch 'main' into replace-example-Rec
pconrad Nov 21, 2025
0dc86df
Merge pull request #7 from ucsb-cs156-f25/replace-example-Rec
pconrad Nov 21, 2025
9075cfb
added the hardcoded request types via a seeder file
Gupperfisher Nov 22, 2025
e1f9590
made integration test to pass converage
Gupperfisher Nov 22, 2025
e5a3f5f
renamed RequestTypeIT.java to RequestTypeSeederIT.java
Gupperfisher Nov 22, 2025
bcf8aba
Update RequestTypeSeederIT.java
Gupperfisher Nov 22, 2025
acc9651
Merge branch 'main' into request-types-Admins
Gupperfisher Nov 22, 2025
8a1ed5f
Merge branch 'main' into multiple-h2-Connections-v2
Gupperfisher Nov 22, 2025
00f873c
Merge pull request #8 from ucsb-cs156-f25/request-types-Admins
pconrad Nov 23, 2025
297cc72
Merge branch 'main' into multiple-h2-Connections-v2
pconrad Nov 23, 2025
fad4383
Merge pull request #10 from ucsb-cs156-f25/multiple-h2-Connections-v2
pconrad Nov 23, 2025
87b761e
Merge branch 'main' into preset-request-Types
pconrad Nov 23, 2025
13305f0
ran mvn git-code-format:format-code
Gupperfisher Nov 23, 2025
c44122f
trying to fix the locked file issue
Gupperfisher Nov 23, 2025
9c41f75
added the needed imports
Gupperfisher Nov 23, 2025
93f536a
added back test for Recommendation Request
Gupperfisher Dec 4, 2025
398601a
added back Nav bar link to /requests/create for logged in users
Gupperfisher Dec 4, 2025
703d09e
deleted unfished seeder and its test files
Gupperfisher Dec 4, 2025
4566b07
ran run format
Gupperfisher Dec 4, 2025
9047865
added back the changed to the NAV bar to say UCSB instead of Example …
Gupperfisher Dec 4, 2025
63ba3ad
ran run format
Gupperfisher Dec 4, 2025
b938631
Update index.html
Gupperfisher Dec 4, 2025
fd69e71
Update index.html
Gupperfisher Dec 4, 2025
5b96d7b
Update AppNavbar.jsx
Gupperfisher Dec 4, 2025
a5e4e12
Update AppNavbar.jsx
Gupperfisher Dec 4, 2025
e5b2a71
Merge pull request #12 from ucsb-cs156-f25/fixing-pr-errors
pconrad Dec 5, 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
4 changes: 2 additions & 2 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React</title>
<title>UCSB Rec</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
</html>
18 changes: 17 additions & 1 deletion frontend/src/main/components/Nav/AppNavbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default function AppNavbar({
>
<Container>
<Navbar.Brand as={Link} to="/">
Example
UCSB Rec
</Navbar.Brand>

<Navbar.Toggle />
Expand Down Expand Up @@ -61,6 +61,22 @@ export default function AppNavbar({
</NavDropdown.Item>
</NavDropdown>
)}
{hasRole(currentUser, "ROLE_ADMIN") && (
<>
<Nav.Link as={Link} to="/requesttypes/all">
Request Types
</Nav.Link>
</>
)}
{currentUser && currentUser.loggedIn ? (
<>
<Nav.Link as={Link} to="/requests/create">
Recommendation Request
</Nav.Link>
</>
) : (
<></>
)}
{hasRole(currentUser, "ROLE_PROFESSOR") && (
<>
<Nav.Link as={Link} to="/requesttypes/all">
Expand Down
114 changes: 114 additions & 0 deletions frontend/src/tests/components/Nav/AppNavbar.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,120 @@ describe("AppNavbar tests", () => {
expect(adminMenu).toBeInTheDocument();
});

test("renders the recommendation requests for logged in users", async () => {
const currentUser = currentUserFixtures.userOnly;
const systemInfo = systemInfoFixtures.showingBoth;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar
currentUser={currentUser}
systemInfo={systemInfo}
doLogin={doLogin}
/>
</MemoryRouter>
</QueryClientProvider>,
);

await screen.findByText("Recommendation Request");
const pendingLink = screen.getByText("Recommendation Request");
expect(pendingLink).toBeInTheDocument();
});

test("does not render the recommendation requests for unlogged users", async () => {
const currentUser = null;
const systemInfo = systemInfoFixtures.showingBoth;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar
currentUser={currentUser}
systemInfo={systemInfo}
doLogin={doLogin}
/>
</MemoryRouter>
</QueryClientProvider>,
);

expect(
screen.queryByText("Recommendation Request"),
).not.toBeInTheDocument();
});

test("request types renders correctly for admin user", async () => {
const currentUser = currentUserFixtures.adminUser;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar currentUser={currentUser} doLogin={doLogin} />
</MemoryRouter>
</QueryClientProvider>,
);

await screen.findByText("Request Types");
const pendingLink = screen.getByText("Request Types");
expect(pendingLink).toBeInTheDocument();
});

test("request types does Not render for normal users", async () => {
const currentUser = currentUserFixtures.userOnly;
const systemInfo = systemInfoFixtures.showingBoth;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar
currentUser={currentUser}
systemInfo={systemInfo}
doLogin={doLogin}
/>
</MemoryRouter>
</QueryClientProvider>,
);

expect(screen.queryByText("Request Types")).not.toBeInTheDocument();
});
test("UCSB Rec renders correctly for regular logged in user", async () => {
const currentUser = currentUserFixtures.userOnly;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar currentUser={currentUser} doLogin={doLogin} />
</MemoryRouter>
</QueryClientProvider>,
);

await screen.findByText("UCSB Rec");
const pendingLink = screen.getByText("UCSB Rec");
expect(pendingLink).toBeInTheDocument();
});

test("UCSB Rec renders correctly for admin user", async () => {
const currentUser = currentUserFixtures.adminUser;
const doLogin = vi.fn();

render(
<QueryClientProvider client={queryClient}>
<MemoryRouter>
<AppNavbar currentUser={currentUser} doLogin={doLogin} />
</MemoryRouter>
</QueryClientProvider>,
);

await screen.findByText("UCSB Rec");
const pendingLink = screen.getByText("UCSB Rec");
expect(pendingLink).toBeInTheDocument();
});

test("renders H2Console and Swagger links correctly", async () => {
const currentUser = currentUserFixtures.adminUser;
const systemInfo = systemInfoFixtures.showingBoth;
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/application-development.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
logging.level.sql=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
spring.datasource.url=jdbc:h2:file:./target/db-development
spring.datasource.url=jdbc:h2:file:./target/db-development;AUTO_SERVER=TRUE
spring.datasource.username=sa
spring.datasource.password=password
spring.h2.console.settings.web-allow-others=true
spring.h2.console.enabled=true
app.showSwaggerUILink=true

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.initialization-mode=always
spring.datasource.initialization-mode=always
Loading