Skip to content

Commit 2ed42ea

Browse files
authored
Merge pull request #104 from silinternational/feature/finish-member-delete
Add delete and associated test
2 parents 45be77d + 0d905e7 commit 2ed42ea

File tree

2 files changed

+67
-5
lines changed

2 files changed

+67
-5
lines changed

SilMock/Google/Service/Directory/Resource/Members.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,21 @@ public function __construct(?string $dbFile = null)
1515
parent::__construct($dbFile, 'directory', 'members');
1616
}
1717

18+
public function delete(string $groupKey, string $memberKey)
19+
{
20+
$directoryMemberRecords = $this->getRecords();
21+
foreach ($directoryMemberRecords as $record) {
22+
$decodedRecordData = json_decode($record['data'], true);
23+
if (
24+
$decodedRecordData['groupKey'] === $groupKey
25+
&& $decodedRecordData['member']['email'] === $memberKey
26+
) {
27+
$recordId = $record['id'];
28+
$this->deleteRecordById($recordId);
29+
}
30+
}
31+
}
32+
1833
public function get(string $groupKey, string $memberKey): GoogleDirectory_Member
1934
{
2035
$members = $this->listMembers($groupKey);

SilMock/tests/Google/Service/Directory/Resource/MembersTest.php

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function testListMembersAll()
8181
try {
8282
$members = $mockGoogleServiceDirectory->members->listMembers($groupEmailAddress);
8383
} catch (Exception $exception) {
84-
$this->failure($exception);
84+
$this->failure($exception, 'listMembersAll');
8585
}
8686
self::assertNotEmpty(
8787
$members->getMembers(),
@@ -102,7 +102,7 @@ public function testListMembersOnlyMember()
102102
]
103103
);
104104
} catch (Exception $exception) {
105-
$this->failure($exception);
105+
$this->failure($exception, 'listMembersOnlyMember');
106106
}
107107
self::assertNotEmpty(
108108
$members->getMembers(),
@@ -123,19 +123,66 @@ public function testListMembersOnlyOwner()
123123
]
124124
);
125125
} catch (Exception $exception) {
126-
$this->failure($exception);
126+
$this->failure($exception, 'listMembersOnlyOwner');
127127
}
128128
self::assertEmpty(
129129
$members->getMembers(),
130130
'Was expecting the members.list method to have no owner types.'
131131
);
132132
}
133133

134-
protected function failure(Exception $exception): void
134+
public function testDelete()
135+
{
136+
$mockGoogleServiceDirectory = new GoogleMock_Directory('anyclient', $this->dataFile);
137+
$groupEmailAddress = '[email protected]';
138+
$emailAddress = '[email protected]';
139+
try {
140+
$result = $mockGoogleServiceDirectory->members->hasMember(
141+
$groupEmailAddress,
142+
$emailAddress
143+
);
144+
$hasMember = $result['isMember'] ?? false;
145+
} catch (Exception $exception) {
146+
self::fail(
147+
$exception->getMessage()
148+
);
149+
}
150+
151+
if (! $hasMember) {
152+
$member = new GoogleDirectory_Member();
153+
$member->setEmail($emailAddress);
154+
$member->setRole('MEMBER');
155+
$mockGoogleServiceDirectory->members->insert($groupEmailAddress, $member);
156+
}
157+
$mockGoogleServiceDirectory->members->delete($groupEmailAddress, $emailAddress);
158+
159+
try {
160+
$result = $mockGoogleServiceDirectory->members->hasMember(
161+
$groupEmailAddress,
162+
163+
);
164+
$hasMember = $result['isMember'] ?? false;
165+
} catch (Exception $exception) {
166+
self::fail(
167+
$exception->getMessage()
168+
);
169+
}
170+
self::assertFalse(
171+
$hasMember,
172+
sprintf(
173+
'Failed to delete %s from group %s',
174+
$emailAddress,
175+
$groupEmailAddress
176+
)
177+
);
178+
}
179+
180+
protected function failure(Exception $exception, string $function): void
135181
{
136182
self::fail(
137183
sprintf(
138-
'Was expecting the members.insert method to function, but got: %s',
184+
'Was expecting the %s method to function, but got: %s',
185+
$function,
139186
$exception->getMessage()
140187
)
141188
);

0 commit comments

Comments
 (0)