def test_to_json_method_not_ok(self): url = Url() url.code = 'aBC125' url.url = 'http://www.google.com/' expected_json = { 'url': 'http://www.google.com/' } self.assertTrue(url.to_json() != expected_json)
def test_get_stats_after_consume_should_be_ok(self): created_now = datetime.datetime.utcnow() url = Url() url.code = 'ab1234' url.url = 'http://www.google.com' url.created_at = created_now url.save() response_pre = app.test_client().get('/ab1234', content_type='application/json') self.assertTrue(response_pre.status_code == 302) expected_status = 200 response = app.test_client().get( '/ab1234/stats', content_type='application/json' ) response_body = json.loads(response.get_data()) self.assertTrue(response.status_code == expected_status) self.assertTrue(response_body['created_at'] == created_now.isoformat()) self.assertTrue(response_body['usage_count'] == 1) self.assertIsNotNone(response_body['last_usage'])
def test_get_stats_with_existant_code_and_0_calls_should_be_ok(self): created_now = datetime.datetime.utcnow() url = Url() url.code = 'ab1234' url.url = 'http://www.google.com' url.created_at = created_now url.save() expected_status = 200 expected_body = { 'created_at': created_now.isoformat(), 'usage_count': 0 } response = app.test_client().get( '/ab1234/stats', content_type='application/json' ) response_body = json.loads(response.get_data()) self.assertTrue(response.status_code == expected_status) self.assertTrue(response_body == expected_body)
def add_url(): """ Endpoint to Add a New URL """ post_data = request.get_json() if not post_data: return jsonify(response_object), 400 url = post_data.get('url') code = post_data.get('code') if url is None or len(url) == 0: return {}, 400 if code is None or len(code) == 0: code = generate_random_code() else: status = validate_code(code) if status != 201: return {}, status newUrl = Url() newUrl.url = url newUrl.code = code newUrl.save() return jsonify({'code': newUrl.code}), 201
def new_url(code, url): newUrl = Url() newUrl.code = code newUrl.url = url newUrl.save() return Url.query.filter_by(code=code).first()
def test_stats_to_json_method_ok(self): created_now = datetime.datetime.utcnow() updated_now = datetime.datetime.utcnow() url = Url() url.code = 'aBC126' url.url = 'http://www.google.com/' url.created_at = created_now url.last_usage = updated_now url.usage_count = 3 url.save() added_url = Url.query.filter_by(code='aBC126').first() expected_json = { 'created_at': created_now.isoformat(), 'last_usage': updated_now.isoformat(), 'usage_count': 3 } self.assertTrue(added_url.stats_to_json() == expected_json)
def test_add_url_correctly(self): url = Url() url.code = 'aBC123' url.url = 'http://www.google.com' url.save() added_url = Url.query.filter_by(code='aBC123').first() self.assertIsNotNone(added_url) self.assertIsNotNone(added_url.created_at) self.assertIsNone(added_url.last_usage) self.assertTrue(added_url.usage_count == 0)
def test_stats_to_json_method_with_default_values_ok(self): created_now = datetime.datetime.utcnow() url = Url() url.code = 'aBC127' url.url = 'http://www.google.com/' url.created_at = created_now url.save() added_url = Url.query.filter_by(code='aBC127').first() expected_json = { 'created_at': created_now.isoformat(), 'usage_count': 0 } self.assertTrue(added_url.stats_to_json() == expected_json)