@@ -3,80 +3,99 @@ import { getByText, render, screen, waitFor } from "@testing-library/react";
33import App from "../../App" ;
44import MissionManifest , { rovers } from "./MissionManifest" ;
55
6-
76const mockManifestResponse = {
8- photo_manifest : {
7+ photo_manifest : {
98 name : "Opportunity" ,
109 landing_date : "2004-01-25" ,
1110 launch_date : "2003-07-07" ,
1211 status : "complete" ,
1312 max_sol : 5111 ,
1413 max_date : "2018-06-11" ,
15- total_photos : 198439
16- }
17- }
14+ total_photos : 198439 ,
15+ } ,
16+ } ;
1817
19- beforeEach ( ( ) => {
20- global . fetch = jest . fn ( ) . mockResolvedValue ( {
21- json : jest . fn ( ) . mockResolvedValue ( mockManifestResponse ) ,
22- } ) ;
18+ beforeEach ( ( ) => {
19+ global . fetch = jest . fn ( ) . mockResolvedValue ( {
20+ json : jest . fn ( ) . mockResolvedValue ( mockManifestResponse ) ,
2321 } ) ;
22+ } ) ;
2423
2524// Ensures component renders a loading state before data arrives
2625test ( "renders loading message on initial render" , ( ) => {
27- render ( < MissionManifest roverType = { rovers . SPIRIT } /> ) ;
28- expect ( screen . getByText ( ' Loading...' ) ) . toBeInTheDocument ( ) ;
29- } )
26+ render ( < MissionManifest roverType = { rovers . SPIRIT } /> ) ;
27+ expect ( screen . getByText ( " Loading..." ) ) . toBeInTheDocument ( ) ;
28+ } ) ;
3029
3130test ( "opportunity rover renders correct p elements" , async ( ) => {
32- render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
33- const expectedTexts = [ "Rover Name: " , mockManifestResponse . photo_manifest . name , "Landing Date: " , mockManifestResponse . photo_manifest . landing_date , "Launch Date: " , mockManifestResponse . photo_manifest . launch_date , "Status: " , mockManifestResponse . photo_manifest . status , "Max Sol: " , mockManifestResponse . photo_manifest . max_sol . toString ( ) , "Max Date: " , mockManifestResponse . photo_manifest . max_date , "Total photos: " , mockManifestResponse . photo_manifest . total_photos . toString ( ) ] ;
34-
35- const missionManifestContainer = await screen . findByTestId ( 'mission-manifest-container' ) ;
36- const pElements = missionManifestContainer . querySelectorAll ( 'p' ) ;
31+ render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
32+ const expectedTexts = [
33+ "Rover Name: " ,
34+ mockManifestResponse . photo_manifest . name ,
35+ "Landing Date: " ,
36+ mockManifestResponse . photo_manifest . landing_date ,
37+ "Launch Date: " ,
38+ mockManifestResponse . photo_manifest . launch_date ,
39+ "Status: " ,
40+ mockManifestResponse . photo_manifest . status ,
41+ "Max Sol: " ,
42+ mockManifestResponse . photo_manifest . max_sol . toString ( ) ,
43+ "Max Date: " ,
44+ mockManifestResponse . photo_manifest . max_date ,
45+ "Total photos: " ,
46+ mockManifestResponse . photo_manifest . total_photos . toString ( ) ,
47+ ] ;
3748
38- expect ( pElements . length ) . toBe ( 14 ) ;
39- pElements . forEach ( ( p , index ) => {
40- expect ( p . textContent ) . toBe ( expectedTexts [ index ] ) ;
41- console . log ( p . textContent ) ;
42- } )
43- } )
49+ const missionManifestContainer = await screen . findByTestId (
50+ "mission-manifest-container" ,
51+ ) ;
52+ const pElements = missionManifestContainer . querySelectorAll ( "p" ) ;
53+
54+ expect ( pElements . length ) . toBe ( 14 ) ;
55+ pElements . forEach ( ( p , index ) => {
56+ expect ( p . textContent ) . toBe ( expectedTexts [ index ] ) ;
57+ console . log ( p . textContent ) ;
58+ } ) ;
59+ } ) ;
4460
4561test ( "opportunity rover renders correct Heading" , async ( ) => {
46- render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
47-
48- const missionManifestContainer = await screen . findByTestId ( 'mission-manifest-container' ) ;
49- const heading = screen . getByText ( 'MISSION MANIFEST' ) ;
62+ render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
5063
51- expect ( heading ) . toBeInTheDocument ( ) ;
52- } )
64+ const missionManifestContainer = await screen . findByTestId (
65+ "mission-manifest-container" ,
66+ ) ;
67+ const heading = screen . getByText ( "MISSION MANIFEST" ) ;
68+
69+ expect ( heading ) . toBeInTheDocument ( ) ;
70+ } ) ;
5371
5472test ( "invalid rover renders correct p elements" , async ( ) => {
73+ const mockInvalidFetchResponse = {
74+ photo_manifest : {
75+ name : undefined ,
76+ landing_date : undefined ,
77+ launch_date : undefined ,
78+ status : undefined ,
79+ max_sol : undefined ,
80+ max_date : undefined ,
81+ total_photos : undefined ,
82+ } ,
83+ } ;
84+ global . fetch = jest . fn ( ) . mockResolvedValue ( {
85+ json : jest . fn ( ) . mockResolvedValue ( mockInvalidFetchResponse ) ,
86+ } ) ;
5587
56- const mockInvalidFetchResponse = {
57- photo_manifest : {
58- name : undefined ,
59- landing_date : undefined ,
60- launch_date : undefined ,
61- status : undefined ,
62- max_sol : undefined ,
63- max_date : undefined ,
64- total_photos : undefined
65- }
66- }
67- global . fetch = jest . fn ( ) . mockResolvedValue ( {
68- json : jest . fn ( ) . mockResolvedValue ( mockInvalidFetchResponse ) ,
69- } ) ;
88+ render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
7089
71- render ( < MissionManifest roverType = { rovers . OPP } /> ) ;
72-
73- const missionManifestContainer = await screen . findByTestId ( 'mission-manifest-container' ) ;
74- const pElements = missionManifestContainer . querySelectorAll ( 'p' ) ;
75- let NaCounter = 0 ;
90+ const missionManifestContainer = await screen . findByTestId (
91+ "mission-manifest-container" ,
92+ ) ;
93+ const pElements = missionManifestContainer . querySelectorAll ( "p" ) ;
94+ let NaCounter = 0 ;
7695
77- pElements . forEach ( ( p ) => {
78- if ( p . textContent === "N/A" ) NaCounter ++
79- } )
96+ pElements . forEach ( ( p ) => {
97+ if ( p . textContent === "N/A" ) NaCounter ++ ;
98+ } ) ;
8099
81- expect ( NaCounter ) . toBe ( 7 ) ;
82- } )
100+ expect ( NaCounter ) . toBe ( 7 ) ;
101+ } ) ;
0 commit comments