@@ -33,7 +33,7 @@ jest.mock("../../messages/actions", () => ({
3333} ) ) ;
3434
3535import React from "react" ;
36- import { render , screen } from "@testing-library/react" ;
36+ import { fireEvent , render , screen } from "@testing-library/react" ;
3737import { mount , shallow } from "enzyme" ;
3838import { bot } from "../../__test_support__/fake_state/bot" ;
3939import {
@@ -103,7 +103,7 @@ import { PLACEHOLDER_FARMBOT } from "../../photos/images/image_flipper";
103103import {
104104 changeBlurableInput , changeBlurableInputRTL , clickButton ,
105105} from "../../__test_support__/helpers" ;
106- import { Actions } from "../../constants" ;
106+ import { Actions , SetupWizardContent } from "../../constants" ;
107107import { tourPath } from "../../help/tours" ;
108108import { FBSelect } from "../../ui" ;
109109
@@ -395,12 +395,14 @@ describe("<FirmwareHardwareSelection />", () => {
395395
396396 it ( "selects model" , ( ) => {
397397 const p = fakeProps ( ) ;
398- p . resources = buildResourceIndex ( [ fakeFbosConfig ( ) , fakeDevice ( ) ] ) . index ;
398+ const device = fakeDevice ( ) ;
399+ p . resources = buildResourceIndex ( [ fakeFbosConfig ( ) , device ] ) . index ;
399400 p . dispatch = mockDispatch ( jest . fn ( ) , ( ) => state ) ;
400- const wrapper = shallow ( < FirmwareHardwareSelection { ...p } /> ) ;
401- wrapper . find ( "FBSelect" ) . simulate ( "change" , {
402- label : "" , value : "genesis_1.2"
403- } ) ;
401+ render ( < FirmwareHardwareSelection { ...p } /> ) ;
402+ const dropdown = screen . getByRole ( "button" ) ;
403+ fireEvent . click ( dropdown ) ;
404+ const item = screen . getByRole ( "menuitem" , { name : "Genesis v1.2" } ) ;
405+ fireEvent . click ( item ) ;
404406 expect ( edit ) . toHaveBeenCalledWith ( expect . any ( Object ) , {
405407 firmware_hardware : "arduino"
406408 } ) ;
@@ -411,61 +413,66 @@ describe("<FirmwareHardwareSelection />", () => {
411413 const alert = fakeAlert ( ) ;
412414 alert . body . id = 1 ;
413415 alert . body . problem_tag = "api.seed_data.missing" ;
414- p . resources = buildResourceIndex ( [ alert , fakeDevice ( ) ] ) . index ;
415- mockState . resources = buildResourceIndex ( [ alert ] ) ;
416- p . dispatch = mockDispatch ( jest . fn ( ) , ( ) => state ) ;
417- const wrapper = mount < FirmwareHardwareSelection > (
418- < FirmwareHardwareSelection { ...p } /> ) ;
419- wrapper . instance ( ) . onChange ( { label : "" , value : "genesis_1.2" } ) ;
420- expect ( destroy ) . toHaveBeenCalled ( ) ;
421- } ) ;
422-
423- it ( "doesn't seed account twice" , ( ) => {
424- const p = fakeProps ( ) ;
425- const alert = fakeAlert ( ) ;
426- alert . body . id = 1 ;
427- alert . body . problem_tag = "api.seed_data.missing" ;
428- p . resources = buildResourceIndex ( [ alert , fakeDevice ( ) ] ) . index ;
416+ const device = fakeDevice ( ) ;
417+ p . resources = buildResourceIndex ( [ alert , device ] ) . index ;
429418 mockState . resources = buildResourceIndex ( [ alert ] ) ;
430419 p . dispatch = mockDispatch ( jest . fn ( ) , ( ) => state ) ;
431- const wrapper = mount < FirmwareHardwareSelection > (
432- < FirmwareHardwareSelection { ...p } /> ) ;
433- wrapper . setState ( { seeded : true } ) ;
434- wrapper . instance ( ) . onChange ( { label : "" , value : "genesis_1.2" } ) ;
435- expect ( destroy ) . not . toHaveBeenCalled ( ) ;
420+ render ( < FirmwareHardwareSelection { ...p } /> ) ;
421+ expect ( screen . getByText ( SetupWizardContent . SEED_DATA ) ) . toBeInTheDocument ( ) ;
422+ // once
423+ const dropdown = screen . getByRole ( "button" ) ;
424+ fireEvent . click ( dropdown ) ;
425+ const item = screen . getByRole ( "menuitem" , { name : "Genesis v1.2" } ) ;
426+ fireEvent . click ( item ) ;
427+ expect ( edit ) . toHaveBeenCalledWith ( expect . any ( Object ) , {
428+ firmware_hardware : "arduino"
429+ } ) ;
430+ expect ( destroy ) . toHaveBeenCalledTimes ( 1 ) ;
431+ expect ( screen . getByText ( "Resources added!" ) ) . toBeInTheDocument ( ) ;
432+ // not twice
433+ const newDropdown = screen . getByRole ( "button" ) ;
434+ fireEvent . click ( newDropdown ) ;
435+ const newItem = screen . getByRole ( "menuitem" , { name : "Genesis v1.3" } ) ;
436+ fireEvent . click ( newItem ) ;
437+ expect ( edit ) . toHaveBeenCalledWith ( expect . any ( Object ) , {
438+ firmware_hardware : "farmduino"
439+ } ) ;
440+ expect ( destroy ) . toHaveBeenCalledTimes ( 1 ) ;
436441 } ) ;
437442
438443 it ( "doesn't seed account" , ( ) => {
439444 const p = fakeProps ( ) ;
440- p . resources = buildResourceIndex ( [ fakeDevice ( ) ] ) . index ;
445+ const device = fakeDevice ( ) ;
446+ device . body . account_seeded_at = "2023-01-01T11:22:33.000Z" ;
447+ p . resources = buildResourceIndex ( [ device ] ) . index ;
441448 p . dispatch = mockDispatch ( jest . fn ( ) , ( ) => state ) ;
442- const wrapper = mount < FirmwareHardwareSelection > (
443- < FirmwareHardwareSelection { ...p } /> ) ;
444- wrapper . instance ( ) . onChange ( { label : "" , value : "genesis_1.2" } ) ;
449+ render ( < FirmwareHardwareSelection { ...p } /> ) ;
450+ expect ( screen . queryByText ( SetupWizardContent . SEED_DATA ) )
451+ . not . toBeInTheDocument ( ) ;
452+ const dropdown = screen . getByRole ( "button" ) ;
453+ fireEvent . click ( dropdown ) ;
454+ const item = screen . getByRole ( "menuitem" , { name : "Genesis v1.2" } ) ;
455+ fireEvent . click ( item ) ;
456+ expect ( edit ) . toHaveBeenCalledWith ( expect . any ( Object ) , {
457+ firmware_hardware : "arduino"
458+ } ) ;
445459 expect ( destroy ) . not . toHaveBeenCalled ( ) ;
446- expect ( wrapper . text ( ) . toLowerCase ( ) ) . not . toContain ( "resources" ) ;
447- } ) ;
448-
449- it ( "renders after account seeding" , ( ) => {
450- const p = fakeProps ( ) ;
451- p . resources = buildResourceIndex ( [ fakeDevice ( ) ] ) . index ;
452- const wrapper = mount < FirmwareHardwareSelection > (
453- < FirmwareHardwareSelection { ...p } /> ) ;
454- wrapper . setState ( { autoSeed : true } ) ;
455- expect ( wrapper . text ( ) . toLowerCase ( ) ) . toContain ( "resources added" ) ;
460+ expect ( screen . queryByText ( "Resources added!" ) ) . not . toBeInTheDocument ( ) ;
456461 } ) ;
457462
458463 it ( "toggles auto-seed" , ( ) => {
459464 const p = fakeProps ( ) ;
460465 const alert = fakeAlert ( ) ;
461466 alert . body . id = 1 ;
462467 alert . body . problem_tag = "api.seed_data.missing" ;
463- p . resources = buildResourceIndex ( [ alert , fakeDevice ( ) ] ) . index ;
464- const wrapper = shallow < FirmwareHardwareSelection > (
465- < FirmwareHardwareSelection { ...p } /> ) ;
466- expect ( wrapper . state ( ) . autoSeed ) . toEqual ( true ) ;
467- wrapper . instance ( ) . toggleAutoSeed ( ) ;
468- expect ( wrapper . state ( ) . autoSeed ) . toEqual ( false ) ;
468+ const device = fakeDevice ( ) ;
469+ p . resources = buildResourceIndex ( [ alert , device ] ) . index ;
470+ render ( < FirmwareHardwareSelection { ...p } /> ) ;
471+ expect ( screen . getByText ( SetupWizardContent . SEED_DATA ) ) . toBeInTheDocument ( ) ;
472+ const checkbox = screen . getByRole ( "checkbox" ) ;
473+ fireEvent . click ( checkbox ) ;
474+ expect ( screen . queryByText ( SetupWizardContent . SEED_DATA ) )
475+ . not . toBeInTheDocument ( ) ;
469476 } ) ;
470477} ) ;
471478
0 commit comments