From 8eb06a350539f462d23baaf5bd9bf6657e2292ef Mon Sep 17 00:00:00 2001 From: Mikhail Golenkov Date: Sun, 14 Nov 2021 23:51:41 +1100 Subject: [PATCH] Fix additional email order in email sink --- tests/unit/messenger_compose_test.php | 4 +++- tests/unit/traits/sends_emails.php | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/unit/messenger_compose_test.php b/tests/unit/messenger_compose_test.php index e072b2b9..9bc65176 100644 --- a/tests/unit/messenger_compose_test.php +++ b/tests/unit/messenger_compose_test.php @@ -227,7 +227,9 @@ public function test_messenger_sends_to_additional_emails() { $this->assertEquals('Hello world', $this->email_in_sink_attr($sink, 7, 'subject')); $this->assertTrue($this->email_in_sink_body_contains($sink, 7, 'This is one fine body.')); $this->assertEquals(get_config('moodle', 'noreplyaddress'), $this->email_in_sink_attr($sink, 7, 'from')); - $this->assertEquals('additional@three.com', $this->email_in_sink_attr($sink, 7, 'to')); + $this->assertContains('additional@one.com', $this->email_in_sink_attr_all($sink, 'to')); + $this->assertContains('additional@two.com', $this->email_in_sink_attr_all($sink, 'to')); + $this->assertContains('additional@three.com', $this->email_in_sink_attr_all($sink, 'to')); $this->close_email_sink($sink); } diff --git a/tests/unit/traits/sends_emails.php b/tests/unit/traits/sends_emails.php index bb5760e1..7d25642e 100644 --- a/tests/unit/traits/sends_emails.php +++ b/tests/unit/traits/sends_emails.php @@ -53,6 +53,24 @@ public function email_in_sink_attr($sink, $index, $attr) { return $message->$attr; } + /** + * Gets a list of messages in the sink and builds an array with an attribute provided. + * + * @param phpunit_message_sink $sink Message sink. + * @param string $attr Name of the attribute. + * @return array List of the attributes. + */ + public function email_in_sink_attr_all($sink, $attr) { + $result = []; + $messages = $sink->get_messages(); + foreach ($messages as $message) { + if (!empty($message->$attr)) { + $result[] = $message->$attr; + } + } + return $result; + } + public function email_in_sink_body_contains($sink, $index, $bodytext) { $messages = $sink->get_messages();