def process(service, labels, messages_details):
    for item in messages_details:
        subject = Msg.get_subject(item)

        if Msg.is_gocd_pattern(subject):
            gocd_details = Msg.get_gocd_details(subject)

            if slack.is_matching_send_rule(gocd_details):
                body = Msg.get_body(item)
                changeset = Msg.get_changeset_info(body)
                text = (slack
                        .message_builder(gocd_details,
                                         changeset,
                                         GOCD_DASHBOARD_URL))

                slack.send_to_slack(text, WEBHOOK_URL)

                Gm.add_label(service, Msg.get_id(item),
                             'SENT_TO_SLACK', labels)

        Gm.remove_label(service, Msg.get_id(item),
                        'UNREAD', labels)
 def test_get_gocd_details_status_2_words(self):
     subject = 'FW: Stage [pr0duct5.br4nch.CI/0/Package/2] is fixed'
     expected = {'pipeline': 'pr0duct5.br4nch.CI',
                 'stage': 'Package',
                 'status': 'is fixed'}
     self.assertEqual(expected, get_gocd_details(subject))
 def test_get_gocd_details(self):
     subject = 'FW: Stage [pr0duct5.br4nch.CI/100/Package/1] passed'
     expected = {'pipeline': 'pr0duct5.br4nch.CI',
                 'stage': 'Package',
                 'status': 'passed'}
     self.assertEqual(expected, get_gocd_details(subject))