def test_post_to_slack(self, post_message, construct_attachments):
        # Setup scenario
        md = MorningDigest()

        # Run code
        md.post_to_slack(self.slack_user_1)

        # Verify expectations
        post_message.assert_called_once_with(
            md._build_channel_name(self.slack_user_1), md._build_digest_message(self.slack_user_1),
            username='******', attachments=json.dumps(construct_attachments.return_value))
    def test_construct_message_kwargs(self):
        # Setup scenario
        md = MorningDigest()

        # Run code
        attachments = md._construct_message_kwargs(self.slack_user_1)

        # Verify expectations
        self.assertEquals({
            'username': '******',
            'attachments': json.dumps([{
                'color': 'good',
                'text': 'Remember to post Standup in #engineering',
            }]),
        }, attachments)
    def test_construct_message_kwargs(self, fetch_assigned_pull_requests, fetch_pull_requests_with_mention):
        # Setup scenario
        md = MorningDigest()
        G(GithubUser, slack_user=self.slack_user_1)
        mock_assigned_issue = Mock(pull_request_link='assigned-link', title='assigned-title')
        mock_issue_with_mention = Mock(pull_request_link='mention-link', title='mention-title')
        fetch_assigned_pull_requests.return_value = [mock_assigned_issue]
        fetch_pull_requests_with_mention.return_value = [mock_issue_with_mention]

        # Run code
        attachments = md._construct_message_kwargs(self.slack_user_1)

        # Verify expectations
        self.assertEquals({
            'username': '******',
            'attachments': json.dumps([
                {
                    'color': 'good',
                    'text': 'Remember to post Standup in #engineering',
                },
                {
                    'text': 'Assigned pull requests',
                    'color': 'good',
                    'fields': [
                        {
                            'title': mock_assigned_issue.title,
                            'value': mock_assigned_issue.pull_request_link,
                        }
                    ],
                },
                {
                    'text': '@mentions',
                    'color': 'good',
                    'fields': [
                        {
                            'title': mock_issue_with_mention.title,
                            'value': mock_issue_with_mention.pull_request_link,
                        }
                    ],
                }
            ]),
        }, attachments)