@@ -28,14 +28,14 @@ class ExcelImportExportTest extends SapphireTest
2828 public function testGetAllFields (): void
2929 {
3030 $ fields = ExcelImportExport::allFieldsForClass (Member::class);
31- $ this -> assertNotEmpty ($ fields );
31+ self :: assertNotEmpty ($ fields );
3232 }
3333
3434 public function testExportedFields (): void
3535 {
3636 $ fields = ExcelImportExport::exportFieldsForClass (Member::class);
37- $ this -> assertNotEmpty ($ fields );
38- $ this -> assertNotContains ('Password ' , $ fields );
37+ self :: assertNotEmpty ($ fields );
38+ self :: assertNotContains ('Password ' , $ fields );
3939 }
4040
4141 public function testCanImportMembers (): void
@@ -48,41 +48,41 @@ public function testCanImportMembers(): void
4848 $ loader = new ExcelMemberBulkLoader ();
4949 $ result = $ loader ->load (__DIR__ . '/data/members.csv ' );
5050
51- $ this -> assertEquals (1 , $ result ->CreatedCount ());
51+ self :: assertEquals (1 , $ result ->CreatedCount ());
5252
5353 $ newCount = Member::get ()->count ();
5454 $ firstGroup = Group::get ()->filter ('Code ' , 'Administrators ' )->first ();
5555 $ newMembersCount = $ firstGroup ->Members ()->count ();
5656
57- $ this -> assertEquals ($ count + 1 , $ newCount );
58- $ this -> assertEquals ($ membersCount + 1 , $ newMembersCount , "Groups are not updated " );
57+ self :: assertEquals ($ count + 1 , $ newCount );
58+ self :: assertEquals ($ membersCount + 1 , $ newMembersCount , "Groups are not updated " );
5959
6060 // format is handled according to file extension
6161 $ loader = new ExcelMemberBulkLoader ();
6262 $ result = $ loader ->load (__DIR__ . '/data/members.xlsx ' );
6363
64- $ this -> assertEquals (1 , $ result ->CreatedCount ());
65- $ this -> assertEquals (0 , $ result ->UpdatedCount ());
64+ self :: assertEquals (1 , $ result ->CreatedCount ());
65+ self :: assertEquals (0 , $ result ->UpdatedCount ());
6666
6767 $ newCount = Member::get ()->count ();
6868 $ firstGroup = Group::get ()->filter ('Code ' , 'Administrators ' )->first ();
6969 $ newMembersCount = $ firstGroup ->Members ()->count ();
7070
71- $ this -> assertEquals ($ count + 2 , $ newCount );
72- $ this -> assertEquals ($ membersCount + 2 , $ newMembersCount , "Groups are not updated " );
71+ self :: assertEquals ($ count + 2 , $ newCount );
72+ self :: assertEquals ($ membersCount + 2 , $ newMembersCount , "Groups are not updated " );
7373
7474 // Loading again does nothing new
7575 $ result = $ loader ->load (__DIR__ . '/data/members.xlsx ' );
7676
77- $ this -> assertEquals (0 , $ result ->CreatedCount ());
78- $ this -> assertEquals (1 , $ result ->UpdatedCount ());
77+ self :: assertEquals (0 , $ result ->CreatedCount ());
78+ self :: assertEquals (1 , $ result ->UpdatedCount ());
7979
8080 $ newCount = Member::get ()->count ();
8181 $ firstGroup = Group::get ()->filter ('Code ' , 'Administrators ' )->first ();
8282 $ newMembersCount = $ firstGroup ->Members ()->count ();
8383
84- $ this -> assertEquals ($ count + 2 , $ newCount );
85- $ this -> assertEquals ($ membersCount + 2 , $ newMembersCount , "Groups are not updated " );
84+ self :: assertEquals ($ count + 2 , $ newCount );
85+ self :: assertEquals ($ membersCount + 2 , $ newMembersCount , "Groups are not updated " );
8686 }
8787
8888 public function testSanitize (): void
@@ -91,7 +91,7 @@ public function testSanitize(): void
9191
9292 $ actual = ExcelGridFieldExportButton::sanitizeValue ($ dangerousInput );
9393 $ expected = "\t" . $ dangerousInput ;
94- $ this -> assertEquals ($ expected , $ actual );
94+ self :: assertEquals ($ expected , $ actual );
9595 }
9696
9797 public function testImportMultipleClasses (): void
@@ -102,28 +102,28 @@ public function testImportMultipleClasses(): void
102102 $ result = $ loader ->load (__DIR__ . '/data/members-class.csv ' );
103103
104104 $ totalCount = Member::get ()->count ();
105- $ this -> assertEquals (2 , $ result ->CreatedCount ());
106- $ this -> assertEquals ($ beforeCount , $ totalCount - 2 );
105+ self :: assertEquals (2 , $ result ->CreatedCount ());
106+ self :: assertEquals ($ beforeCount , $ totalCount - 2 );
107107
108108 // Is a subclass AND a base class
109109 $ member = TestExcelMember::
get ()->
filter (
'Email ' ,
'[email protected] ' )->
first ();
110- $ this -> assertNotEmpty ($ member );
110+ self :: assertNotEmpty ($ member );
111111 $ member = Member::
get ()->
filter (
'Email ' ,
'[email protected] ' )->
first ();
112- $ this -> assertNotEmpty ($ member );
112+ self :: assertNotEmpty ($ member );
113113
114114 // Not a subclass
115115 $ member = TestExcelMember::
get ()->
filter (
'Email ' ,
'[email protected] ' )->
first ();
116- $ this -> assertEmpty ($ member );
116+ self :: assertEmpty ($ member );
117117
118118 // Checking duplicate still works even with custom class
119119 $ loader = new ExcelMemberBulkLoader ();
120120 $ result = $ loader ->load (__DIR__ . '/data/members-class.csv ' );
121121
122- $ this -> assertEquals (0 , $ result ->CreatedCount ());
123- $ this -> assertEquals (2 , $ result ->UpdatedCount ());
122+ self :: assertEquals (0 , $ result ->CreatedCount ());
123+ self :: assertEquals (2 , $ result ->UpdatedCount ());
124124
125125 $ newTotalCount = Member::get ()->count ();
126- $ this -> assertEquals ($ newTotalCount , $ totalCount );
126+ self :: assertEquals ($ newTotalCount , $ totalCount );
127127 }
128128
129129 public function testImportMigrateClasses (): void
@@ -144,13 +144,13 @@ public function testImportMigrateClasses(): void
144144 ]
145145 ]);
146146
147- $ this -> assertEquals (0 , $ result ->CreatedCount ());
148- $ this -> assertEquals (1 , $ result ->UpdatedCount ());
147+ self :: assertEquals (0 , $ result ->CreatedCount ());
148+ self :: assertEquals (1 , $ result ->UpdatedCount ());
149149
150150 // Check that our existing member has the new class
151151 $ member = TestExcelMember::get ()->filter ('Email ' , $ duplicateEmail )->first ();
152- $ this -> assertNotEmpty ($ member );
153- $ this -> assertEquals ($ baseMember ->ID , $ member ->ID );
152+ self :: assertNotEmpty ($ member );
153+ self :: assertEquals ($ baseMember ->ID , $ member ->ID );
154154 }
155155
156156 public function testTransaction ()
@@ -168,10 +168,10 @@ public function testTransaction()
168168
169169 // First row was not created because it was rolled back
170170 $ member = Member::
get ()->
filter (
'Email ' ,
'[email protected] ' )->
first ();
171- $ this -> assertEmpty ($ member );
171+ self :: assertEmpty ($ member );
172172
173173 $ newTotalCount = Member::get ()->count ();
174- $ this -> assertEquals ($ newTotalCount , $ beforeCount );
174+ self :: assertEquals ($ newTotalCount , $ beforeCount );
175175
176176
177177 $ loader = new ExcelMemberBulkLoader ();
@@ -185,9 +185,40 @@ public function testTransaction()
185185
186186 // First row was created because it was not rolled back
187187 $ member = Member::
get ()->
filter (
'Email ' ,
'[email protected] ' )->
first ();
188- $ this -> assertNotEmpty ($ member );
188+ self :: assertNotEmpty ($ member );
189189
190190 $ newTotalCount = Member::get ()->count ();
191- $ this ->assertEquals ($ newTotalCount - 1 , $ beforeCount );
191+ self ::assertEquals ($ newTotalCount - 1 , $ beforeCount );
192+ }
193+
194+ public function testDuplicateChecks ()
195+ {
196+ $ loader = new ExcelMemberBulkLoader ();
197+ $ loader ->columnMap = [
198+ 'e_mail ' => 'Email ' ,
199+ 'fn ' => 'FirstName ' ,
200+ 'sn ' => 'Surname ' ,
201+ ];
202+ $ loader ->duplicateChecks = [
203+ 'e_mail ' => 'Email '
204+ ];
205+ $ result = $ loader ->load (__DIR__ . '/data/members-mapped.csv ' );
206+
207+ self ::assertCount (1 , $ result ->Created ());
208+
209+ // Load again, should not create any new record
210+ $ loader = new ExcelMemberBulkLoader ();
211+ $ loader ->columnMap = [
212+ 'e_mail ' => 'Email ' ,
213+ 'fn ' => 'FirstName ' ,
214+ 'sn ' => 'Surname ' ,
215+ ];
216+ // Make sure duplicate checks match the mapping
217+ $ loader ->duplicateChecks = [
218+ 'e_mail ' => 'Email '
219+ ];
220+ $ result = $ loader ->load (__DIR__ . '/data/members-mapped.csv ' );
221+
222+ self ::assertCount (0 , $ result ->Created ());
192223 }
193224}
0 commit comments