Esempio n. 1
0
    def test_happypath_a_user_can_be_created_in_database(self):
        payload = {'username': '******', 'email': '*****@*****.**'}

        response = self.client.post('/api/v1/users',
                                    json=payload,
                                    content_type='application/json')

        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type_value(self, data, 'user_action', str,
                                        'created')

        assert_payload_field_type(self, data, 'data', dict)

        user_data = data['data']

        assert_payload_field_type_value(self, user_data, 'id', int, 1)

        assert_payload_field_type_value(self, user_data, 'type', str, 'users')

        attributes = user_data['attributes']

        assert_payload_field_type_value(self, attributes, 'username', str,
                                        payload['username'])

        assert_payload_field_type_value(self, attributes, 'email', str,
                                        payload['email'])

        assert_payload_field_type_value(self, attributes, 'xp', int, 0)
Esempio n. 2
0
    def test_happypath_create_user(self):
        payload = deepcopy(self.payload)

        response = self.client.post('/api/v1/users',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type(self, data, 'id', int)
        user_id = data['id']
        assert_payload_field_type_value(self, data, 'name', str,
                                        payload['name'].strip())
        assert_payload_field_type_value(self, data, 'email', str,
                                        payload['email'].strip())

        assert_payload_field_type(self, data, 'links', dict)
        links = data['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/users')
    def test_happypath_get_a_user_by_email(self):
        payload = deepcopy(self.payload)
        response = self.client.post('/api/v1/users',
                                    json=payload,
                                    content_type='application/json')

        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type(self, data, 'data', dict)

        user_data = data['data']

        assert_payload_field_type_value(self, user_data, 'id', int,
                                        self.user_1.id)

        assert_payload_field_type_value(self, user_data, 'type', str, 'users')

        attributes = user_data['attributes']

        assert_payload_field_type_value(self, attributes, 'username', str,
                                        self.user_1.username)

        assert_payload_field_type_value(self, attributes, 'email', str,
                                        self.user_1.email)

        assert_payload_field_type_value(self, attributes, 'xp', int,
                                        self.user_1.xp)
Esempio n. 4
0
    def test_happy_path_user_quest_progress_can_be_patched(self):
        payload = deepcopy(self.payload)
        response = self.client.patch(f'/api/v1/users/{self.user_1.id}/quests',
                                     json=payload,
                                     content_type='application/json')

        self.assertEqual(201, response.status_code)
        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type(self, data, 'data', dict)

        all_user_quest_data = data['data']

        assert_payload_field_type_value(self, all_user_quest_data, 'id', int,
                                        self.user_quest_1.id)
        assert_payload_field_type_value(self, all_user_quest_data, 'type', str,
                                        'user_quests')
        assert_payload_field_type(self, all_user_quest_data, 'attributes',
                                  dict)

        attributes = all_user_quest_data['attributes']

        assert_payload_field_type_value(self, attributes, 'response', str,
                                        'successful')
        assert_payload_field_type_value(self, attributes, 'progress', int,
                                        int(payload['progress']))
        assert_payload_field_type_value(self, attributes, 'completion_status',
                                        bool, False)
Esempio n. 5
0
    def test_happypath_get_empty_users(self):
        response = self.client.get(f'/api/v1/users')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'results', list)
        # results list should be empty
        self.assertEqual(0, len(data['results']))
Esempio n. 6
0
    def test_happypath_create_report(self):
        payload = deepcopy(self.payload)

        response = self.client.post(
            '/api/v1/reports', json=payload,
            content_type='application/json'
        )
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type(self, data, 'id', int)
        report_id = data['id']
        assert_payload_field_type_value(
            self, data, 'name', str, payload['name'].strip()
        )
        assert_payload_field_type_value(
            self, data, 'lat', float, payload['lat']
        )
        assert_payload_field_type_value(
            self, data, 'long', float, payload['long']
        )
        assert_payload_field_type_value(
            self, data, 'description', str, payload['description'].strip()
        )
        assert_payload_field_type_value(
            self, data, 'event_type', str, payload['event_type'].strip()
        )
        assert_payload_field_type_value(
            self, data, 'image', str, payload['image'].strip()
        )
        assert_payload_field_type_value(
            self, data, 'city', str, payload['city'].strip()
        )
        assert_payload_field_type_value(
            self, data, 'state', str, payload['state'].strip()
        )

        assert_payload_field_type(self, data, 'links', dict)
        links = data['links']
        assert_payload_field_type_value(
            self, links, 'get', str, f'/api/v1/reports/{report_id}'
        )
        assert_payload_field_type_value(
            self, links, 'patch', str, f'/api/v1/reports/{report_id}'
        )
        assert_payload_field_type_value(
            self, links, 'delete', str, f'/api/v1/reports/{report_id}'
        )
        assert_payload_field_type_value(
            self, links, 'index', str, '/api/v1/reports'
        )
Esempio n. 7
0
  def test_happypath_get_empty_rooms(self):
    user_1 = User(name='Test User', email='email 1')
    user_1.insert()

    response = self.client.get(
      f'/api/v1/users/{user_1.id}/rooms'
    )
    self.assertEqual(200, response.status_code)

    data = json.loads(response.data.decode('utf-8)'))
    assert_payload_field_type_value(self, data, 'success', bool, True)
    assert_payload_field_type(self, data, 'data', list)
    self.assertEqual(0, len(data['data']))
    def test_sad_path_user_has_zero_contacts(self):
        user = User(email='*****@*****.**',
                    first_name='example',
                    last_name='fake')
        user.insert()

        response = self.client.get(f'/users/{user.id}/contacts')

        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'contacts', list)
        self.assertEqual(0, len(data['contacts']))
Esempio n. 9
0
    def test_happypath_get_empty_rooms(self):
        user_1 = User(name='Test User', email='email 1')
        user_1.insert()
        room_1 = Room(name='Kitchen',
                      image='exampleimage1.com',
                      user_id=user_1.id)
        room_1.insert()

        response = self.client.get(f'/api/v1/rooms/{room_1.id}/memories')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8)'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'data', list)
        self.assertEqual(0, len(data['data']))
Esempio n. 10
0
    def test_happypath_create_user(self):
        payload = deepcopy(self.payload)

        response = self.client.post('/users',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'id', int)
        assert_payload_field_type_value(self, data, 'first_name', str,
                                        payload['first_name'])
        assert_payload_field_type_value(self, data, 'last_name', str,
                                        payload['last_name'])
        assert_payload_field_type_value(self, data, 'email', str,
                                        payload['email'])
Esempio n. 11
0
    def test_endpoint_sadpath_change_drink_missing_title(
            self, mock_get_token_auth_header, mock_verify_decode_jwt):
        mock_get_token_auth_header.return_value = 'manager-token'
        mock_verify_decode_jwt.return_value = {
            'permissions': ['delete:drinks', 'get:drinks-detail',
                            'patch:drinks', 'post:drinks']
        }

        payload = self.payload
        del(payload['title'])

        response = self.client.patch('/drinks/1', json=payload,
                                     content_type='application/json')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'drinks', list)

        next_drink = data['drinks'][0]
        assert_payload_field_type_value(self, next_drink, 'title', str,
                                        self.original_drink.title)
        assert_payload_field_type(self, next_drink, 'recipe', list)
        self.assertEqual(2, len(next_drink['recipe']))

        next_recipe = next_drink['recipe'][0]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        self.recipe_name_1)
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        self.recipe_color_1)
        assert_payload_field_type_value(self, next_recipe, 'parts', int,
                                        self.recipe_parts_1)

        next_recipe = next_drink['recipe'][1]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        self.recipe_name_2)
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        self.recipe_color_2)
        assert_payload_field_type_value(self, next_recipe, 'parts', int,
                                        self.recipe_parts_2)
Esempio n. 12
0
  def test_happypath_get_all_rooms(self):
    user_1 = User(name='Test User', email='email 1')
    user_1.insert()
    room_1 = Room(name='Kitchen', image='exampleimage1.com', user_id=user_1.id)
    room_1.insert()
    room_2 = Room(name='Living Room', image='exampleimage2.com', user_id=user_1.id)
    room_2.insert()

    response = self.client.get(
      f'/api/v1/users/{user_1.id}/rooms'
    )
    self.assertEqual(200, response.status_code)

    data = json.loads(response.data.decode('utf-8'))
    assert_payload_field_type_value(self, data, 'success', bool, True)
    assert_payload_field_type(self, data, 'data', list)

    results = data['data']

    first_result = results[0]
    assert_payload_field_type_value(
      self, first_result, 'name', str, room_1.name
    )
    assert_payload_field_type_value(
      self, first_result, 'image', str, room_1.image
    )
    assert_payload_field_type_value(
      self, first_result, 'user_id', int, room_1.user_id
    )

    second_result = results[1]
    assert_payload_field_type_value(
      self, second_result, 'name', str, room_2.name
    )
    assert_payload_field_type_value(
      self, second_result, 'image', str, room_2.image
    )
    assert_payload_field_type_value(
      self, second_result, 'user_id', int, room_2.user_id
    )
Esempio n. 13
0
    def test_happy_path_get_quests_for_user_false(self):
        response = self.client.get(f'/api/v1/users/{self.user_1.id}/quests?completion_status=false', content_type='application/json')

        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type(self, data, 'data', dict)

        all_quest_data = data['data']

        assert_payload_field_type_value(self, all_quest_data, 'id', str, 'Null')
        assert_payload_field_type_value(self, all_quest_data, 'type', str, 'quests')

        attributes = all_quest_data['attributes']

        assert_payload_field_type(self, attributes, 'quests', list)

        quest = attributes['quests'][0]

        assert_payload_field_type(self, quest, 'quest_id_1', dict)

        quest_data = quest['quest_id_1']

        assert_payload_field_type_value(self, quest_data, 'encounter_req', int, self.quest_1.encounter_req)
        assert_payload_field_type_value(self, quest_data, 'id', int, self.quest_1.id)
        assert_payload_field_type_value(self, quest_data, 'name', str, self.quest_1.name)
        assert_payload_field_type_value(self, quest_data, 'progress', int, self.user_quest_1.progress)
        assert_payload_field_type_value(self, quest_data, 'type', str, self.quest_1.type)
        assert_payload_field_type_value(self, quest_data, 'xp', int, self.quest_1.xp)
        assert_payload_field_type_value(self, quest_data, 'level', int, self.quest_1.level)
Esempio n. 14
0
    def test_happypath_get_a_user(self):
        response = self.client.get(f'/api/v1/users/{self.user_1.id}')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type_value(self, data, 'username', str,
                                        self.user_1.username)
        assert_payload_field_type_value(self, data, 'email', str,
                                        self.user_1.email)

        user_id = data['id']
        assert_payload_field_type(self, data, 'links', dict)
        links = data['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/users')
Esempio n. 15
0
    def test_happypath_create_memory(self):
        payload = deepcopy(self.payload)

        response = self.client.post(f'/api/v1/rooms/{self.room_1.id}/memories',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type(self, data, 'id', int)
        memory_id = data['id']
        assert_payload_field_type_value(self, data, 'image', str,
                                        payload['image'].strip())
        assert_payload_field_type_value(self, data, 'song', str,
                                        payload['song'].strip())
        assert_payload_field_type_value(self, data, 'description', str,
                                        payload['description'].strip())
        assert_payload_field_type_value(self, data, 'aromas', str,
                                        payload['aromas'].strip())
        assert_payload_field_type_value(self, data, 'x', int, payload['x'])
        assert_payload_field_type_value(self, data, 'y', int, payload['y'])
    def test_endpoint_drinks_happypath_with_drinks(self,
                                                   mock_get_token_auth_header,
                                                   mock_verify_decode_jwt):
        mock_get_token_auth_header.return_value = 'manager-token'
        mock_verify_decode_jwt.return_value = {
            'permissions': [
                'delete:drinks', 'get:drinks-detail', 'patch:drinks',
                'post:drinks'
            ]
        }

        response = self.client.get('/drinks-detail')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'drinks', list)

        next_drink = data['drinks'][0]
        assert_payload_field_type_value(self, next_drink, 'id', int,
                                        self.drink_1.id)
        assert_payload_field_type_value(self, next_drink, 'title', str,
                                        self.drink_1.title)
        assert_payload_field_type(self, next_drink, 'recipe', list)

        next_recipe = next_drink['recipe'][0]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        'Blue Water')
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        'blue')
        assert_payload_field_type_value(self, next_recipe, 'parts', int, 1)

        next_drink = data['drinks'][1]
        assert_payload_field_type_value(self, next_drink, 'id', int,
                                        self.drink_2.id)
        assert_payload_field_type_value(self, next_drink, 'title', str,
                                        self.drink_2.title)
        assert_payload_field_type(self, next_drink, 'recipe', list)
        self.assertEqual(2, len(next_drink['recipe']))

        next_recipe = next_drink['recipe'][0]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        'Blue Water')
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        'blue')
        assert_payload_field_type_value(self, next_recipe, 'parts', int, 2)

        next_recipe = next_drink['recipe'][1]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        'Yellow Water')
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        'yellow')
        assert_payload_field_type_value(self, next_recipe, 'parts', int, 2)
Esempio n. 17
0
    def test_happypath_get_a_report(self):
        response = self.client.get(f'/api/v1/reports/{self.report_1.id}')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type_value(self, data, 'name', str,
                                        self.report_1.name)
        assert_payload_field_type_value(self, data, 'lat', float,
                                        self.report_1.lat)
        assert_payload_field_type_value(self, data, 'long', float,
                                        self.report_1.long)
        assert_payload_field_type_value(self, data, 'description', str,
                                        self.report_1.description)
        assert_payload_field_type_value(self, data, 'event_type', str,
                                        self.report_1.event_type)
        assert_payload_field_type_value(self, data, 'image', str,
                                        self.report_1.image)

        assert_payload_field_type(self, data, 'comments', list)
        comments = data['comments']
        assert_payload_field_type_value(self, data, 'comments', list,
                                        [self.comment_1.text])

        report_id = data['id']
        assert_payload_field_type(self, data, 'links', dict)
        links = data['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/reports')
Esempio n. 18
0
    def test_happypath_get_all_users(self):
        user_1 = User(username='******', email='email 1')
        user_1.insert()
        user_2 = User(username='******', email='email 2')
        user_2.insert()

        response = self.client.get(f'/api/v1/users')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'results', list)

        results = data['results']

        # we expect user 2 first to ensure we're getting results in
        # ascending alphabetical order by username
        next_result = results[0]
        assert_payload_field_type_value(self, next_result, 'username', str,
                                        user_2.username)
        assert_payload_field_type_value(self, next_result, 'email', str,
                                        user_2.email)
        user_id = next_result['id']

        assert_payload_field_type(self, next_result, 'links', dict)

        links = next_result['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/users')

        next_result = results[1]
        assert_payload_field_type_value(self, next_result, 'username', str,
                                        user_1.username)
        assert_payload_field_type_value(self, next_result, 'email', str,
                                        user_1.email)
        user_id = next_result['id']

        assert_payload_field_type(self, next_result, 'links', dict)
    def test_endpoint_happypath_create_drink_1_ingredient(
            self, mock_get_token_auth_header, mock_verify_decode_jwt):
        mock_get_token_auth_header.return_value = 'manager-token'
        mock_verify_decode_jwt.return_value = {
            'permissions': [
                'delete:drinks', 'get:drinks-detail', 'patch:drinks',
                'post:drinks'
            ]
        }

        payload = deepcopy(self.payload)
        payload['recipe'] = payload['recipe'][0]

        response = self.client.post('/drinks',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'drinks', list)

        next_drink = data['drinks'][0]
        assert_payload_field_type(self, next_drink, 'id', int)
        assert_payload_field_type_value(self, next_drink, 'title', str,
                                        self.drink_name)
        assert_payload_field_type(self, next_drink, 'recipe', list)
        self.assertEqual(1, len(next_drink['recipe']))

        next_recipe = next_drink['recipe'][0]
        self.assertIsInstance(next_recipe, dict)
        assert_payload_field_type_value(self, next_recipe, 'name', str,
                                        self.recipe_name_1)
        assert_payload_field_type_value(self, next_recipe, 'color', str,
                                        self.recipe_color_1)
        assert_payload_field_type_value(self, next_recipe, 'parts', int,
                                        self.recipe_parts_1)
Esempio n. 20
0
 def test_happy_path_get_encounters_for_quest_by_progress(self):
     response = self.client.get(
         f'/api/v1/quests/{self.quest_1.id}/encounters?progress=2',
         content_type='application/json')
     self.assertEqual(200, response.status_code)
     data = json.loads(response.data.decode('utf-8'))
     assert_payload_field_type(self, data, 'data', dict)
     encounter_data = data['data']
     assert_payload_field_type_value(self, encounter_data, 'id', int,
                                     self.encounter_2.id)
     assert_payload_field_type_value(self, encounter_data, 'type', str,
                                     'encounters')
     attributes = encounter_data['attributes']
     assert_payload_field_type(self, encounter_data, 'attributes', dict)
     assert_payload_field_type_value(self, attributes, 'progress', int,
                                     self.encounter_2.progress)
     assert_payload_field_type_value(self, attributes, 'monster_image', str,
                                     self.encounter_2.monster_image)
     assert_payload_field_type(self, attributes, 'actions', list)
     actions = attributes['actions']
     assert_payload_field_type_value(self, actions[0], 'id', int,
                                     self.action_3.id)
     assert_payload_field_type_value(self, actions[0], 'description', str,
                                     self.action_3.description)
Esempio n. 21
0
    def test_happypath_get_all_reports(self):
        report_1 = Report(
            name='Will Smith',
            lat=3.123123,
            long=3.345345,
            city='Roswell',
            state='NM',
            description="Halle Berry was an alien the whole time",
            event_type="encounter",
            image="pics.com")
        report_1.insert()
        report_2 = Report(name='Mark Zuckerberg',
                          lat=3.123123,
                          long=3.345345,
                          city='Roswell',
                          state='NM',
                          description="I am your reptilian overloard!",
                          event_type="encounter",
                          image="pics.com")
        report_2.insert()

        response = self.client.get(f'/api/v1/reports')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'results', list)

        results = data['results']

        # we expect report 2 first to ensure we're getting results in
        # ascending alphabetical order by name
        next_result = results[0]
        assert_payload_field_type_value(self, next_result, 'name', str,
                                        report_2.name)
        assert_payload_field_type_value(self, next_result, 'lat', float,
                                        report_2.lat)
        assert_payload_field_type_value(self, next_result, 'long', float,
                                        report_2.long)
        assert_payload_field_type_value(self, next_result, 'description', str,
                                        report_2.description)
        assert_payload_field_type_value(self, next_result, 'event_type', str,
                                        report_2.event_type)
        assert_payload_field_type_value(self, next_result, 'image', str,
                                        report_2.image)
        report_id = next_result['id']

        assert_payload_field_type(self, next_result, 'links', dict)

        links = next_result['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/reports/{report_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/reports')

        next_result = results[1]
        assert_payload_field_type_value(self, next_result, 'name', str,
                                        report_1.name)
        assert_payload_field_type_value(self, next_result, 'lat', float,
                                        report_1.lat)
        assert_payload_field_type_value(self, next_result, 'lat', float,
                                        report_1.lat)
        assert_payload_field_type_value(self, next_result, 'event_type', str,
                                        report_1.event_type)
        assert_payload_field_type_value(self, next_result, 'description', str,
                                        report_1.description)
        assert_payload_field_type_value(self, next_result, 'image', str,
                                        report_1.image)
        report_id = next_result['id']

        assert_payload_field_type(self, next_result, 'links', dict)
    def test_happypath_show_contacts(self):
        payload = deepcopy(self.contact_payload)

        response = self.client.get(f'/users/{self.user.id}/contacts')

        self.assertEqual(200, response.status_code)
        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'contacts', list)

        self.assertEqual(3, len(data['contacts']))

        contacts = data['contacts']
        for contact in contacts:
            assert_payload_field_type(self, contact, 'first_name', str)
            assert_payload_field_type(self, contact, 'last_name', str)
            assert_payload_field_type(self, contact, 'group', str)
            assert_payload_field_type(self, contact, 'phone_number', str)
            assert_payload_field_type(self, contact, 'street_address', str)
            assert_payload_field_type(self, contact, 'city', str)
            assert_payload_field_type(self, contact, 'state', str)
            assert_payload_field_type(self, contact, 'zipcode', str)
Esempio n. 23
0
    def test_happypath_get_all_memories(self):
        user_1 = User(name='Test User', email='email 1')
        user_1.insert()
        room_1 = Room(name='Kitchen',
                      image='exampleimage1.com',
                      user_id=user_1.id)
        room_1.insert()
        memory_1 = Memory(image='Picture string',
                          song='song url',
                          description='This is a great memory',
                          aromas='Roast in the oven',
                          x=123,
                          y=456,
                          room_id=room_1.id)
        memory_1.insert()
        memory_2 = Memory(image='Another string',
                          song='this song url',
                          description='Love this memory',
                          aromas='Chestnuts roasting',
                          x=678,
                          y=234,
                          room_id=room_1.id)
        memory_2.insert()

        response = self.client.get(f'/api/v1/rooms/{room_1.id}/memories')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'data', list)

        results = data['data']

        first_result = results[0]
        assert_payload_field_type_value(self, first_result, 'image', str,
                                        memory_1.image)
        assert_payload_field_type_value(self, first_result, 'song', str,
                                        memory_1.song)
        assert_payload_field_type_value(self, first_result, 'description', str,
                                        memory_1.description)
        assert_payload_field_type_value(self, first_result, 'aromas', str,
                                        memory_1.aromas)
        assert_payload_field_type_value(self, first_result, 'x', int,
                                        memory_1.x)
        assert_payload_field_type_value(self, first_result, 'y', int,
                                        memory_1.y)
        assert_payload_field_type_value(self, first_result, 'room_id', int,
                                        memory_1.room_id)

        second_result = results[1]
        assert_payload_field_type_value(self, second_result, 'image', str,
                                        memory_2.image)
        assert_payload_field_type_value(self, second_result, 'song', str,
                                        memory_2.song)
        assert_payload_field_type_value(self, second_result, 'description',
                                        str, memory_2.description)
        assert_payload_field_type_value(self, second_result, 'aromas', str,
                                        memory_2.aromas)
        assert_payload_field_type_value(self, second_result, 'x', int,
                                        memory_2.x)
        assert_payload_field_type_value(self, second_result, 'y', int,
                                        memory_2.y)
        assert_payload_field_type_value(self, second_result, 'room_id', int,
                                        memory_2.room_id)