Пример #1
0
    def test_counting(self):
        inputs = [
            "count unread emails"
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 2)

        response = client.output_list[0]
        self.assertEqual("JenniferGmailPlugin", response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))
        self.assertIn("checking", response.to_text().lower())

        response = client.output_list[1]
        self.assertEqual("JenniferGmailPlugin", response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        self.assertIn("you have 2 new emails", response.to_text().lower())
Пример #2
0
    def test_multiple_can_respond(self, iphone_respond_mock,
                                  time_respond_mock):
        inputs = ['what is the time']
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        # Should have just run the time, because it's higher priority
        self.assertEqual(len(client.output_list), 1)

        # Make sure only one was caled
        self.assertTrue(time_respond_mock.called)
        self.assertFalse(iphone_respond_mock.called)
    def test_multiple_can_respond(self, iphone_respond_mock, time_respond_mock):
        inputs = [
            'what is the time'
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        # Should have just run the time, because it's higher priority
        self.assertEqual(len(client.output_list), 1)

        # Make sure only one was caled
        self.assertTrue(time_respond_mock.called)
        self.assertFalse(iphone_respond_mock.called)
Пример #4
0
    def test_garbage_input(self):
        inputs = ["jashg asfsahf ashdf saf sd"]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))
        self.assertEqual(response.to_text(), self.brain.UNSURE_TEXT)
    def test_garbage_input(self):
        inputs = [
            "jashg asfsahf ashdf saf sd"
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))
        self.assertEqual(response.to_text(), self.brain.UNSURE_TEXT)
    def test_delete_read_email(self, delete_mock, read_mock):
        inputs = [
            "read my emails",
            "yes",
            "no",  # Email 1
            "no",
            "yes",  # Email 2
            "no",
            "no",  # Email 3
            "no",
            "no",  # Email 4
            "no",
            "no",  # Email 5
            "no",
            "no",  # Email 6
            "no",
            "no",  # Email 7
            "no",
            "no",  # Email 8
            "no",
            "no",  # Email 9
            "no",
            "no",  # Email 10
        ]
        JenniferTestClient(self.brain, inputs)

        self.assertTrue(delete_mock.called)
        self.assertTrue(read_mock.called)
    def test_delete_read_email(self, delete_mock, read_mock):
        inputs = [
            "read my emails",
            "yes", "no",  # Email 1
            "no", "yes",  # Email 2
            "no", "no",   # Email 3
            "no", "no",   # Email 4
            "no", "no",   # Email 5
            "no", "no",   # Email 6
            "no", "no",   # Email 7
            "no", "no",   # Email 8
            "no", "no",   # Email 9
            "no", "no",   # Email 10
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertTrue(delete_mock.called)
        self.assertTrue(read_mock.called)
    def test_date_tomorrow(self):
        inputs = ["what is the date tomorrow?"]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual(JenniferTimePlugin.__name__, response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        now = datetime.datetime.now() + datetime.timedelta(days=1)
        should_be_in = [now.strftime(code) for code in ["%A", "%B", "%d", "%Y"]]
        for time_str in should_be_in:
            self.assertIn(time_str, response.to_text())
    def test_check_email(self, delete_mock, read_mock):
        inputs = [
            "read my emails",
            "no",
            "no",  # Email 1
            "no",
            "no",  # Email 2
            "no",
            "no",  # Email 3
            "no",
            "no",  # Email 4
            "no",
            "no",  # Email 5
            "no",
            "no",  # Email 6
            "no",
            "no",  # Email 7
            "no",
            "no",  # Email 8
            "no",
            "no",  # Email 9
            "no",
            "no",  # Email 10
        ]
        client = JenniferTestClient(self.brain, inputs)

        self.assertGreaterEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual(
            "JenniferGmailPlugin",
            response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))
        self.assertIn("checking", response.to_text().lower())

        response = client.output_list[1]
        self.assertEqual(
            "JenniferGmailPlugin",
            response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        self.assertIn("you have", response.to_text().lower())
        self.assertIn("email", response.to_text().lower())

        self.assertFalse(delete_mock.called)
        self.assertFalse(read_mock.called)
Пример #10
0
    def test_time(self):
        inputs = ["what time is it?"]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual(JenniferTimePlugin.__name__,
                         response.response_creator)
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        now = datetime.datetime.now()
        should_be_in = [now.strftime(code) for code in ['%M', '%p']]
        for time_str in should_be_in:
            self.assertIn(time_str, response.to_text())
    def test_check_email(self, delete_mock, read_mock):
        inputs = [
            "read my emails",
            "no", "no",  # Email 1
            "no", "no",  # Email 2
            "no", "no",  # Email 3
            "no", "no",  # Email 4
            "no", "no",  # Email 5
            "no", "no",  # Email 6
            "no", "no",  # Email 7
            "no", "no",  # Email 8
            "no", "no",  # Email 9
            "no", "no",  # Email 10
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertGreaterEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual("JenniferGmailPlugin", response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))
        self.assertIn("checking", response.to_text().lower())

        response = client.output_list[1]
        self.assertEqual("JenniferGmailPlugin", response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        self.assertIn("you have", response.to_text().lower())
        self.assertIn("email", response.to_text().lower())

        self.assertFalse(delete_mock.called)
        self.assertFalse(read_mock.called)
    def test_time(self):
        inputs = [
            "what time is it?"
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual(JenniferTimePlugin.__name__, response.response_creator)
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        now = datetime.datetime.now()
        should_be_in = [now.strftime(code) for code in ['%M', '%p']]
        for time_str in should_be_in:
            self.assertIn(time_str, response.to_text())
Пример #13
0
    def test_date_tomorrow(self):
        inputs = ["what is the date tomorrow?"]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        self.assertEqual(len(client.output_list), 1)

        response = client.output_list[0]
        self.assertEqual(
            JenniferTimePlugin.__name__,
            response.response_creator)  # Make sure the time plugin responded
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)

        segment = response.segments[0]
        self.assertTrue(isinstance(segment, JenniferTextResponseSegment))

        now = datetime.datetime.now() + datetime.timedelta(days=1)
        should_be_in = [
            now.strftime(code) for code in ['%A', '%B', '%d', '%Y']
        ]
        for time_str in should_be_in:
            self.assertIn(time_str, response.to_text())
    def test_same_priority(self, iphone_respond_mock, time_respond_mock):
        inputs = [
            'what is the time',
            'no',
            'yes'
        ]
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        # Should have said:
        #    Which lesson applies?
        #    Find my iPhone?
        #    Time?
        #    (time's response)
        self.assertEqual(len(client.output_list), 4)

        # Get first reponse, make sure it's "Which Lesson Applies?"
        response = client.output_list[0]
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)
        self.assertEqual(response.to_text(), self.brain.MULTIPLE_LESSONS_APPLY)

        # Combine both of the verbose names:
        verbose_names = [JenniferTimePlugin.VERBOSE_NAME, JenniferFindMyIphonePlugin.VERBOSE_NAME]
        for indx in range(1,2):
            response = client.output_list[indx]

            # Make sure it's a response with one text segment
            self.assertTrue(isinstance(response, JenniferResponse))
            self.assertEqual(len(response.segments), 1)

            # Make sure the segment has the verbose name
            self.assertTrue(response.to_text().replace('?', ''), verbose_names)

        # Make sure only one was called (Because they may have been presented to user in reverse order)
        self.assertTrue(iphone_respond_mock.called or time_respond_mock.called)
        self.assertFalse(iphone_respond_mock.called and time_respond_mock.called)
Пример #15
0
    def test_same_priority(self, iphone_respond_mock, time_respond_mock):
        inputs = ['what is the time', 'no', 'yes']
        client = JenniferTestClient(self.brain, inputs)
        client.run()

        # Should have said:
        #    Which lesson applies?
        #    Find my iPhone?
        #    Time?
        #    (time's response)
        self.assertEqual(len(client.output_list), 4)

        # Get first reponse, make sure it's "Which Lesson Applies?"
        response = client.output_list[0]
        self.assertTrue(isinstance(response, JenniferResponse))
        self.assertEqual(len(response.segments), 1)
        self.assertEqual(response.to_text(), self.brain.MULTIPLE_LESSONS_APPLY)

        # Combine both of the verbose names:
        verbose_names = [
            JenniferTimePlugin.VERBOSE_NAME,
            JenniferFindMyIphonePlugin.VERBOSE_NAME
        ]
        for indx in range(1, 2):
            response = client.output_list[indx]

            # Make sure it's a response with one text segment
            self.assertTrue(isinstance(response, JenniferResponse))
            self.assertEqual(len(response.segments), 1)

            # Make sure the segment has the verbose name
            self.assertTrue(response.to_text().replace('?', ''), verbose_names)

        # Make sure only one was called (Because they may have been presented to user in reverse order)
        self.assertTrue(iphone_respond_mock.called or time_respond_mock.called)
        self.assertFalse(iphone_respond_mock.called
                         and time_respond_mock.called)