@@ -75,6 +75,7 @@ import { renderCard } from '../../helpers/render-component';
75
75
import { setupRenderingTest } from ' ../../helpers/setup' ;
76
76
77
77
let loader: Loader ;
78
+ const testModuleRealm = ' http://localhost:4202/test/' ;
78
79
79
80
module (' Integration | card-basics' , function (hooks ) {
80
81
setupRenderingTest (hooks );
@@ -644,13 +645,13 @@ module('Integration | card-basics', function (hooks) {
644
645
};
645
646
}
646
647
647
- let ref = { module: ` http://localhost:4202/test/ person` , name: ' Person' };
648
+ let ref = { module: ` ${ testRealmURL } person` , name: ' Person' };
648
649
let driver = new DriverCard ({ ref });
649
650
650
651
await renderCard (loader , driver , ' embedded' );
651
652
assert
652
653
.dom (' [data-test-ref]' )
653
- .containsText (` Module: http://localhost:4202/test/ person Name: Person ` );
654
+ .containsText (` Module: ${ testRealmURL } person Name: Person ` );
654
655
655
656
// is this worth an assertion? or is it just obvious?
656
657
assert .strictEqual (
@@ -660,7 +661,7 @@ module('Integration | card-basics', function (hooks) {
660
661
);
661
662
});
662
663
663
- test (' render codeRef fields are not editable ' , async function (assert ) {
664
+ test (' can render a CodeRef field in edit mode with an initial value ' , async function (assert ) {
664
665
class DriverCard extends CardDef {
665
666
@field ref = contains (CodeRefField );
666
667
static edit = class Edit extends Component <typeof this > {
@@ -670,14 +671,221 @@ module('Integration | card-basics', function (hooks) {
670
671
};
671
672
}
672
673
673
- let ref = { module: ` http://localhost:4202/test/ person` , name: ' Person' };
674
+ let ref = { module: ` ${ testModuleRealm } person` , name: ' Person' };
674
675
let driver = new DriverCard ({ ref });
676
+ await renderCard (loader , driver , ' edit' );
677
+ await waitFor (' [data-test-hasValidated]' );
678
+
679
+ assert
680
+ .dom (' [data-test-ref] input' )
681
+ .hasValue (` ${testModuleRealm }person/Person ` , ' input field is correct' );
682
+ assert
683
+ .dom (' [data-test-ref] [data-test-boxel-input-validation-state="valid"]' )
684
+ .exists (' code ref is valid' );
685
+ });
686
+
687
+ test (' can edit a CodeRef field with a valid URL-like code ref' , async function (assert ) {
688
+ class DriverCard extends CardDef {
689
+ @field ref = contains (CodeRefField );
690
+ static edit = class Edit extends Component <typeof this > {
691
+ <template >
692
+ <div data-test-ref ><@ fields.ref /></div >
693
+ </template >
694
+ };
695
+ }
696
+
697
+ let driver = new DriverCard ();
675
698
676
699
await renderCard (loader , driver , ' edit' );
677
- assert .dom (' input' ).doesNotExist (' no input fields exist' );
700
+ await fillIn (' [data-test-ref] input' , ` ${testModuleRealm }person/Person ` );
701
+ await waitFor (' [data-test-hasValidated]' );
678
702
assert
679
- .dom (' [data-test-ref]' )
680
- .containsText (` Module: http://localhost:4202/test/person Name: Person ` );
703
+ .dom (' [data-test-ref] input' )
704
+ .hasValue (` ${testModuleRealm }person/Person ` , ' input field is correct' );
705
+ assert
706
+ .dom (' [data-test-ref] [data-test-boxel-input-validation-state="valid"]' )
707
+ .exists (' code ref is valid' );
708
+ assert .deepEqual (
709
+ driver .ref ,
710
+ {
711
+ module: ` ${testModuleRealm }person ` ,
712
+ name: ' Person' ,
713
+ },
714
+ ' code ref field value is correct' ,
715
+ );
716
+ });
717
+
718
+ test (' can edit a CodeRef field with a valid non-URL code ref' , async function (assert ) {
719
+ class DriverCard extends CardDef {
720
+ @field ref = contains (CodeRefField );
721
+ static edit = class Edit extends Component <typeof this > {
722
+ <template >
723
+ <div data-test-ref ><@ fields.ref /></div >
724
+ </template >
725
+ };
726
+ }
727
+
728
+ let driver = new DriverCard ();
729
+
730
+ await renderCard (loader , driver , ' edit' );
731
+ await fillIn (
732
+ ' [data-test-ref] input' ,
733
+ ` @cardstack/boxel-host/commands/save-card/default ` ,
734
+ );
735
+ await waitFor (' [data-test-hasValidated]' );
736
+ assert
737
+ .dom (' [data-test-ref] input' )
738
+ .hasValue (
739
+ ` @cardstack/boxel-host/commands/save-card/default ` ,
740
+ ' input field is correct' ,
741
+ );
742
+ assert
743
+ .dom (' [data-test-ref] [data-test-boxel-input-validation-state="valid"]' )
744
+ .exists (' code ref is valid' );
745
+
746
+ assert .deepEqual (
747
+ driver .ref ,
748
+ {
749
+ module: ` @cardstack/boxel-host/commands/save-card ` ,
750
+ name: ` default ` ,
751
+ },
752
+ ' code ref field value is correct' ,
753
+ );
754
+ });
755
+
756
+ test (' can edit a CodeRef field with an invalid non-URL code ref' , async function (assert ) {
757
+ class DriverCard extends CardDef {
758
+ @field ref = contains (CodeRefField );
759
+ static edit = class Edit extends Component <typeof this > {
760
+ <template >
761
+ <div data-test-ref ><@ fields.ref /></div >
762
+ </template >
763
+ };
764
+ }
765
+
766
+ let ref = { module: ` ${testModuleRealm }person ` , name: ' Person' };
767
+ let driver = new DriverCard ({ ref });
768
+ await renderCard (loader , driver , ' edit' );
769
+ await waitFor (' [data-test-hasValidated]' );
770
+ await fillIn (
771
+ ' [data-test-ref] input' ,
772
+ ` @cardstack/boxel-host/commands/save-card/doesNotExist ` ,
773
+ );
774
+ await waitFor (' [data-test-hasValidated]' );
775
+ assert
776
+ .dom (' [data-test-ref] input' )
777
+ .hasValue (
778
+ ` @cardstack/boxel-host/commands/save-card/doesNotExist ` ,
779
+ ' input field is correct' ,
780
+ );
781
+ assert
782
+ .dom (
783
+ ' [data-test-ref] [data-test-boxel-input-validation-state="invalid"]' ,
784
+ )
785
+ .exists (' code ref is invalid' );
786
+
787
+ assert .deepEqual (
788
+ driver .ref ,
789
+ {
790
+ module: ` ${testModuleRealm }person ` ,
791
+ name: ' Person' ,
792
+ },
793
+ ' code ref field value is correct' ,
794
+ );
795
+ });
796
+
797
+ test (' can edit a CodeRef field with an invalid URL-like code ref' , async function (assert ) {
798
+ class DriverCard extends CardDef {
799
+ @field ref = contains (CodeRefField );
800
+ static edit = class Edit extends Component <typeof this > {
801
+ <template >
802
+ <div data-test-ref ><@ fields.ref /></div >
803
+ </template >
804
+ };
805
+ }
806
+ let ref = { module: ` ${testModuleRealm }person ` , name: ' Person' };
807
+ let driver = new DriverCard ({ ref });
808
+ await renderCard (loader , driver , ' edit' );
809
+ await waitFor (' [data-test-hasValidated]' );
810
+
811
+ await fillIn (
812
+ ' [data-test-ref] input' ,
813
+ ` ${testModuleRealm }doesNotExist/Nothing ` ,
814
+ );
815
+ await waitFor (' [data-test-hasValidated]' );
816
+ assert
817
+ .dom (' [data-test-ref] input' )
818
+ .hasValue (
819
+ ` ${testModuleRealm }doesNotExist/Nothing ` ,
820
+ ' input field is correct' ,
821
+ );
822
+ assert
823
+ .dom (
824
+ ' [data-test-ref] [data-test-boxel-input-validation-state="invalid"]' ,
825
+ )
826
+ .exists (' code ref is invalid' );
827
+ assert .deepEqual (
828
+ driver .ref ,
829
+ {
830
+ module: ` ${testModuleRealm }person ` ,
831
+ name: ' Person' ,
832
+ },
833
+ ' code ref field value is correct' ,
834
+ );
835
+ });
836
+
837
+ test (' can edit a CodeRef field with a code ref that is invalid because its too short' , async function (assert ) {
838
+ class DriverCard extends CardDef {
839
+ @field ref = contains (CodeRefField );
840
+ static edit = class Edit extends Component <typeof this > {
841
+ <template >
842
+ <div data-test-ref ><@ fields.ref /></div >
843
+ </template >
844
+ };
845
+ }
846
+ let ref = { module: ` ${testModuleRealm }person ` , name: ' Person' };
847
+ let driver = new DriverCard ({ ref });
848
+ await renderCard (loader , driver , ' edit' );
849
+ await waitFor (' [data-test-hasValidated]' );
850
+
851
+ await fillIn (' [data-test-ref] input' , ` @cardstack ` );
852
+ await waitFor (' [data-test-hasValidated]' );
853
+ assert
854
+ .dom (' [data-test-ref] input' )
855
+ .hasValue (` @cardstack ` , ' input field is correct' );
856
+ assert
857
+ .dom (
858
+ ' [data-test-ref] [data-test-boxel-input-validation-state="invalid"]' ,
859
+ )
860
+ .exists (' code ref is invalid' );
861
+ assert .deepEqual (
862
+ driver .ref ,
863
+ {
864
+ module: ` ${testModuleRealm }person ` ,
865
+ name: ' Person' ,
866
+ },
867
+ ' code ref field value is correct' ,
868
+ );
869
+ });
870
+
871
+ test (' can clear a CodeRef field in edit mode' , async function (assert ) {
872
+ class DriverCard extends CardDef {
873
+ @field ref = contains (CodeRefField );
874
+ static edit = class Edit extends Component <typeof this > {
875
+ <template >
876
+ <div data-test-ref ><@ fields.ref /></div >
877
+ </template >
878
+ };
879
+ }
880
+ let ref = { module: ` ${testModuleRealm }person ` , name: ' Person' };
881
+ let driver = new DriverCard ({ ref });
882
+ await renderCard (loader , driver , ' edit' );
883
+ await waitFor (' [data-test-hasValidated]' );
884
+ await fillIn (' [data-test-ref] input' , ' ' );
885
+ assert
886
+ .dom (' [data-test-ref] input' )
887
+ .hasValue (' ' , ' input field is correct' );
888
+ assert .deepEqual (driver .ref , undefined , ' code ref can be unset' );
681
889
});
682
890
683
891
test (' render base64 image card' , async function (assert ) {
0 commit comments