@@ -866,64 +866,182 @@ public function testAddFields()
866
866
867
867
$ this ->assertIsArray ($ fieldsNames );
868
868
869
- $ fields = ['id ' , 'name ' , 'username ' , 'active ' ];
870
- $ this ->assertContains ($ fieldsData [0 ]->name , $ fields );
871
- $ this ->assertContains ($ fieldsData [1 ]->name , $ fields );
872
- unset($ fields );
873
-
874
869
if ($ this ->db ->DBDriver === 'MySQLi ' ) {
875
- $ this ->assertSame ('int ' , $ fieldsData [0 ]->type );
876
- $ this ->assertSame ('varchar ' , $ fieldsData [1 ]->type );
870
+ $ expected = [
871
+ 0 => [
872
+ 'name ' => 'id ' ,
873
+ 'type ' => 'int ' ,
874
+ 'max_length ' => 11 ,
875
+ 'nullable ' => false ,
876
+ 'default ' => null ,
877
+ 'primary_key ' => 1 ,
878
+ ],
879
+ 1 => [
880
+ 'name ' => 'username ' ,
881
+ 'type ' => 'varchar ' ,
882
+ 'max_length ' => 255 ,
883
+ 'nullable ' => false ,
884
+ 'default ' => null ,
885
+ 'primary_key ' => 0 ,
886
+ ],
887
+ 2 => [
888
+ 'name ' => 'name ' ,
889
+ 'type ' => 'varchar ' ,
890
+ 'max_length ' => 255 ,
891
+ 'nullable ' => false ,
892
+ 'default ' => null ,
893
+ 'primary_key ' => 0 ,
894
+ ],
895
+ 3 => [
896
+ 'name ' => 'active ' ,
897
+ 'type ' => 'int ' ,
898
+ 'max_length ' => 11 ,
899
+ 'nullable ' => false ,
900
+ 'default ' => '0 ' ,
901
+ 'primary_key ' => 0 ,
902
+ ],
903
+ ];
877
904
878
- if (version_compare ($ this ->db ->getVersion (), '8.0.17 ' , '< ' )) {
905
+ if (version_compare ($ this ->db ->getVersion (), '8.0.17 ' , '>= ' )) {
879
906
// As of MySQL 8.0.17, the display width attribute for integer data types
880
907
// is deprecated and is not reported back anymore.
881
908
// @see https://dev.mysql.com/doc/refman/8.0/en/numeric-type-attributes.html
882
- $ this ->assertSame (11 , $ fieldsData [0 ]->max_length );
909
+ $ expected [0 ]['max_length ' ] = null ;
910
+ $ expected [3 ]['max_length ' ] = null ;
883
911
}
884
-
885
- $ this ->assertNull ($ fieldsData [0 ]->default );
886
- $ this ->assertNull ($ fieldsData [1 ]->default );
887
-
888
- $ this ->assertSame (1 , (int ) $ fieldsData [0 ]->primary_key );
889
-
890
- $ this ->assertSame (255 , (int ) $ fieldsData [1 ]->max_length );
891
912
} elseif ($ this ->db ->DBDriver === 'Postgre ' ) {
892
- $ this ->assertSame ('integer ' , $ fieldsData [0 ]->type );
893
- $ this ->assertSame ('character varying ' , $ fieldsData [1 ]->type );
894
-
895
- $ this ->assertFalse ($ fieldsData [0 ]->nullable );
896
- $ this ->assertFalse ($ fieldsData [1 ]->nullable );
897
-
898
- $ this ->assertSame (32 , (int ) $ fieldsData [0 ]->max_length );
899
- $ this ->assertSame (255 , (int ) $ fieldsData [1 ]->max_length );
900
-
901
- $ this ->assertNull ($ fieldsData [1 ]->default );
913
+ $ expected = [
914
+ 0 => [
915
+ 'name ' => 'id ' ,
916
+ 'type ' => 'integer ' ,
917
+ 'nullable ' => false ,
918
+ 'default ' => "nextval('db_forge_test_fields_id_seq'::regclass) " ,
919
+ 'max_length ' => '32 ' ,
920
+ ],
921
+ 1 => [
922
+ 'name ' => 'username ' ,
923
+ 'type ' => 'character varying ' ,
924
+ 'nullable ' => false ,
925
+ 'default ' => null ,
926
+ 'max_length ' => '255 ' ,
927
+ ],
928
+ 2 => [
929
+ 'name ' => 'name ' ,
930
+ 'type ' => 'character varying ' ,
931
+ 'nullable ' => false ,
932
+ 'default ' => null ,
933
+ 'max_length ' => '255 ' ,
934
+ ],
935
+ 3 => [
936
+ 'name ' => 'active ' ,
937
+ 'type ' => 'integer ' ,
938
+ 'nullable ' => false ,
939
+ 'default ' => '0 ' ,
940
+ 'max_length ' => '32 ' ,
941
+ ],
942
+ ];
902
943
} elseif ($ this ->db ->DBDriver === 'SQLite3 ' ) {
903
- $ this ->assertSame ('integer ' , strtolower ($ fieldsData [0 ]->type ));
904
- $ this ->assertSame ('varchar ' , strtolower ($ fieldsData [1 ]->type ));
905
-
906
- $ this ->assertNull ($ fieldsData [1 ]->default );
944
+ $ expected = [
945
+ 0 => [
946
+ 'name ' => 'id ' ,
947
+ 'type ' => 'INTEGER ' ,
948
+ 'max_length ' => null ,
949
+ 'default ' => null ,
950
+ 'primary_key ' => true ,
951
+ 'nullable ' => true ,
952
+ ],
953
+ 1 => [
954
+ 'name ' => 'username ' ,
955
+ 'type ' => 'VARCHAR ' ,
956
+ 'max_length ' => null ,
957
+ 'default ' => null ,
958
+ 'primary_key ' => false ,
959
+ 'nullable ' => false ,
960
+ ],
961
+ 2 => [
962
+ 'name ' => 'name ' ,
963
+ 'type ' => 'VARCHAR ' ,
964
+ 'max_length ' => null ,
965
+ 'default ' => null ,
966
+ 'primary_key ' => false ,
967
+ 'nullable ' => false ,
968
+ ],
969
+ 3 => [
970
+ 'name ' => 'active ' ,
971
+ 'type ' => 'INTEGER ' ,
972
+ 'max_length ' => null ,
973
+ 'default ' => '0 ' ,
974
+ 'primary_key ' => false ,
975
+ 'nullable ' => false ,
976
+ ],
977
+ ];
907
978
} elseif ($ this ->db ->DBDriver === 'SQLSRV ' ) {
908
- $ this ->assertSame ('int ' , $ fieldsData [0 ]->type );
909
- $ this ->assertSame ('varchar ' , $ fieldsData [1 ]->type );
910
-
911
- $ this ->assertSame (10 , (int ) $ fieldsData [0 ]->max_length );
912
- $ this ->assertSame (255 , (int ) $ fieldsData [1 ]->max_length );
913
-
914
- $ this ->assertNull ($ fieldsData [1 ]->default );
979
+ $ expected = [
980
+ 0 => [
981
+ 'name ' => 'id ' ,
982
+ 'type ' => 'int ' ,
983
+ 'default ' => null ,
984
+ 'max_length ' => 10 ,
985
+ ],
986
+ 1 => [
987
+ 'name ' => 'username ' ,
988
+ 'type ' => 'varchar ' ,
989
+ 'default ' => null ,
990
+ 'max_length ' => 255 ,
991
+ ],
992
+ 2 => [
993
+ 'name ' => 'name ' ,
994
+ 'type ' => 'varchar ' ,
995
+ 'default ' => null ,
996
+ 'max_length ' => 255 ,
997
+ ],
998
+ 3 => [
999
+ 'name ' => 'active ' ,
1000
+ 'type ' => 'int ' ,
1001
+ 'default ' => '((0)) ' , // Why?
1002
+ 'max_length ' => 10 ,
1003
+ ],
1004
+ ];
915
1005
} elseif ($ this ->db ->DBDriver === 'OCI8 ' ) {
916
- // Check types
917
- $ this ->assertSame ('NUMBER ' , $ fieldsData [0 ]->type );
918
- $ this ->assertSame ('VARCHAR2 ' , $ fieldsData [1 ]->type );
919
-
920
- $ this ->assertSame ('11 ' , $ fieldsData [0 ]->max_length );
921
- $ this ->assertSame ('255 ' , $ fieldsData [1 ]->max_length );
1006
+ $ expected = [
1007
+ 0 => [
1008
+ 'name ' => 'id ' ,
1009
+ 'type ' => 'NUMBER ' ,
1010
+ 'max_length ' => '11 ' ,
1011
+ 'default ' => '"ORACLE"."ISEQ$$_80229".nextval ' , // Sequence id may change
1012
+ 'nullable ' => false ,
1013
+ ],
1014
+ 1 => [
1015
+ 'name ' => 'username ' ,
1016
+ 'type ' => 'VARCHAR2 ' ,
1017
+ 'max_length ' => '255 ' ,
1018
+ 'default ' => '' ,
1019
+ 'nullable ' => false ,
1020
+ ],
1021
+ 2 => [
1022
+ 'name ' => 'name ' ,
1023
+ 'type ' => 'VARCHAR2 ' ,
1024
+ 'max_length ' => '255 ' ,
1025
+ 'default ' => '' ,
1026
+ 'nullable ' => false ,
1027
+ ],
1028
+ 3 => [
1029
+ 'name ' => 'active ' ,
1030
+ 'type ' => 'NUMBER ' ,
1031
+ 'max_length ' => '11 ' ,
1032
+ 'default ' => '0 ' , // Why?
1033
+ 'nullable ' => false ,
1034
+ ],
1035
+ ];
922
1036
923
- $ this ->assertSame ('' , $ fieldsData [1 ]->default );
1037
+ // Sequence id may change
1038
+ $ this ->assertMatchesRegularExpression ('/"ORACLE"."ISEQ \\$ \\$_\d+".nextval/ ' , $ fieldsData [0 ]->default );
1039
+ $ expected [0 ]['default ' ] = $ fieldsData [0 ]->default ;
924
1040
} else {
925
1041
$ this ->fail (sprintf ('DB driver "%s" is not supported. ' , $ this ->db ->DBDriver ));
926
1042
}
1043
+
1044
+ $ this ->assertSame ($ expected , json_decode (json_encode ($ fieldsData ), true ));
927
1045
}
928
1046
929
1047
public function testCompositeKey ()
0 commit comments