* #708 apply strictier linting rules and fix simple eslint bugs * #708 fix eslint errors relate to promise * #708 fix eslint import/no-extraneous-dependencies * #708 fix eslint errors of react-hook * #708 enable eslint check for typescript --------- Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
This commit is contained in:
@@ -1,67 +1,67 @@
|
||||
import ImportAlert from "@/features/Events/ImportAlert";
|
||||
import { fireEvent, screen } from "@testing-library/react";
|
||||
import { renderWithProviders } from "../../utils/Renderwithproviders";
|
||||
import ImportAlert from '@/features/Events/ImportAlert'
|
||||
import { fireEvent, screen } from '@testing-library/react'
|
||||
import { renderWithProviders } from '../../utils/Renderwithproviders'
|
||||
|
||||
// Mock the ErrorSnackbar component since we want to test ImportAlert logic,
|
||||
// but we can also test integration if we don't mock it.
|
||||
// Given ImportAlert uses EventErrorSnackbar which uses MUI Snackbar,
|
||||
// it's better to render it and check for text presence.
|
||||
|
||||
describe("ImportAlert", () => {
|
||||
describe('ImportAlert', () => {
|
||||
const preloadedState = {
|
||||
calendars: {
|
||||
list: {
|
||||
cal1: {
|
||||
id: "cal1",
|
||||
name: "Calendar 1",
|
||||
id: 'cal1',
|
||||
name: 'Calendar 1',
|
||||
events: {
|
||||
event1: {
|
||||
uid: "event1",
|
||||
title: "Event 1",
|
||||
error: "Error message 1",
|
||||
uid: 'event1',
|
||||
title: 'Event 1',
|
||||
error: 'Error message 1'
|
||||
},
|
||||
event2: {
|
||||
uid: "event2",
|
||||
title: "Event 2",
|
||||
uid: 'event2',
|
||||
title: 'Event 2'
|
||||
// No error
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
cal2: {
|
||||
id: "cal2",
|
||||
name: "Calendar 2",
|
||||
id: 'cal2',
|
||||
name: 'Calendar 2',
|
||||
events: {
|
||||
event3: {
|
||||
uid: "event3",
|
||||
title: "Event 3",
|
||||
error: "Error message 2",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
uid: 'event3',
|
||||
title: 'Event 3',
|
||||
error: 'Error message 2'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
it("renders nothing when there are no errors", () => {
|
||||
it('renders nothing when there are no errors', () => {
|
||||
const state = {
|
||||
calendars: {
|
||||
list: {
|
||||
cal1: {
|
||||
id: "cal1",
|
||||
id: 'cal1',
|
||||
events: {
|
||||
event1: { uid: "event1" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
event1: { uid: 'event1' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const { container } = renderWithProviders(<ImportAlert />, state);
|
||||
expect(container).toBeEmptyDOMElement();
|
||||
});
|
||||
const { container } = renderWithProviders(<ImportAlert />, state)
|
||||
expect(container).toBeEmptyDOMElement()
|
||||
})
|
||||
|
||||
it("renders snackbar with error message when there is one error", () => {
|
||||
renderWithProviders(<ImportAlert />, preloadedState);
|
||||
it('renders snackbar with error message when there is one error', () => {
|
||||
renderWithProviders(<ImportAlert />, preloadedState)
|
||||
|
||||
// EventErrorSnackbar shows "multipleEvents" if > 1, or the message if 1.
|
||||
// Here we have 2 errors in preloadedState.
|
||||
@@ -70,24 +70,24 @@ describe("ImportAlert", () => {
|
||||
calendars: {
|
||||
list: {
|
||||
cal1: {
|
||||
id: "cal1",
|
||||
id: 'cal1',
|
||||
events: {
|
||||
event1: {
|
||||
uid: "event1",
|
||||
error: "Single Error",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
uid: 'event1',
|
||||
error: 'Single Error'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
renderWithProviders(<ImportAlert />, singleErrorState);
|
||||
expect(screen.getByText("Single Error")).toBeInTheDocument();
|
||||
});
|
||||
renderWithProviders(<ImportAlert />, singleErrorState)
|
||||
expect(screen.getByText('Single Error')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("renders summary message when there are multiple errors", () => {
|
||||
renderWithProviders(<ImportAlert />, preloadedState);
|
||||
it('renders summary message when there are multiple errors', () => {
|
||||
renderWithProviders(<ImportAlert />, preloadedState)
|
||||
// 2 errors in preloadedState
|
||||
// "error.multipleEvents" key is used.
|
||||
// In test environment, t function usually returns the key or formatted string.
|
||||
@@ -108,34 +108,34 @@ describe("ImportAlert", () => {
|
||||
// const summary = messages.length === 1 ? messages[0] : t("error.multipleEvents", { count: messages.length });
|
||||
|
||||
// We can check if the Alert is present.
|
||||
expect(screen.getByRole("alert")).toBeInTheDocument();
|
||||
});
|
||||
expect(screen.getByRole('alert')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("dismisses error when close button is clicked", () => {
|
||||
it('dismisses error when close button is clicked', () => {
|
||||
const singleErrorState = {
|
||||
calendars: {
|
||||
list: {
|
||||
cal1: {
|
||||
id: "cal1",
|
||||
id: 'cal1',
|
||||
events: {
|
||||
event1: {
|
||||
uid: "event1",
|
||||
error: "Dismiss Me",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
uid: 'event1',
|
||||
error: 'Dismiss Me'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
renderWithProviders(<ImportAlert />, singleErrorState);
|
||||
expect(screen.getByText("Dismiss Me")).toBeInTheDocument();
|
||||
renderWithProviders(<ImportAlert />, singleErrorState)
|
||||
expect(screen.getByText('Dismiss Me')).toBeInTheDocument()
|
||||
|
||||
const closeButton = screen.getByRole("button", { name: /ok/i }); // EventErrorSnackbar has an "OK" button
|
||||
fireEvent.click(closeButton);
|
||||
const closeButton = screen.getByRole('button', { name: /ok/i }) // EventErrorSnackbar has an "OK" button
|
||||
fireEvent.click(closeButton)
|
||||
|
||||
// After clicking, it should disappear (or at least be removed from DOM or hidden)
|
||||
// Since we use local state to filter dismissed errors, it should re-render with null.
|
||||
expect(screen.queryByText("Dismiss Me")).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
expect(screen.queryByText('Dismiss Me')).not.toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user