Skip to content

Commit

Permalink
Task: Improve docs, code and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jairojair committed Sep 26, 2018
1 parent 3699088 commit 9bdd896
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 24 deletions.
16 changes: 16 additions & 0 deletions .travis.yml
@@ -0,0 +1,16 @@
language: python

cache: pip

python:
- "3.6"

install:
- pip install -r dev-requirements.txt
- pip install coveralls

script:
- make tests

after_script:
- coveralls
9 changes: 8 additions & 1 deletion README.md
@@ -1 +1,8 @@
# Python database url
# Py-Database-URL

[![Build Status](https://travis-ci.org/jairojair/py-database-url.svg?branch=master)](https://travis-ci.org/jairojair/py-database-url)
[![Coverage Status](https://coveralls.io/repos/github/jairojair/py-database-url/badge.svg?branch=master)](https://coveralls.io/github/jairojair/py-database-url?branch=master)

## Installation

pip install py-database-url
3 changes: 3 additions & 0 deletions docker-compose.yml
Expand Up @@ -8,3 +8,6 @@ services:
- .:/code

working_dir: /code

environment:
- DATABASE_URL=postgres://user:password@hostname:5432/database-name
67 changes: 54 additions & 13 deletions py_database_url/py_database_url.py
Expand Up @@ -3,26 +3,67 @@
import os

try:
from urlparse import urlparse
except ImportError:
# Python 3
from urllib.parse import urlparse

except ImportError:
# Python 2
from urlparse import urlparse


def config():
class Config(object):
"""
Get database config from environment var (DATABASE_URL) automatically.
Describe class
"""
pass

def __init__(self):
pass

def parse(url=None):
"""
Parses a database URL.
"""
def __get_database_url_var(self):
"""
Describe
"""
return os.environ["DATABASE_URL"]

def config(self):
"""
Get database config from environment var (DATABASE_URL) automatically.
"""
pass

def parse(self, url=None):
"""
Parses a database URL.
"""

config = {}

if url is None:
return

return urlparse(url)

@property
def orator(self):
"""
Method to parser for orator format.
"""

url = self.__get_database_url_var()
url = self.parse(url)

config = {
f"{url.scheme}": {
"driver": url.scheme,
"host": url.hostname,
"database": url.path[1:],
"user": url.username,
"password": url.password,
"prefix": "",
}
}

config = {}
return config

if url is None:
return

return urlparse(url)
config = Config()
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -2,7 +2,7 @@

setup(
name="py-database-url",
description="A universal database URLS parser for Python.",
description="A universal database URLs for Python applications.",
version="0.0.2",
url="https://github.com/jairojair/py-database-url",
license="MIT",
Expand Down
34 changes: 25 additions & 9 deletions tests/test_parse.py
@@ -1,23 +1,39 @@
import pytest

from py_database_url import parse
from py_database_url import config


def test_parse_without_url():
def test_config_without_url():

assert parse() is None
assert config.parse() is None


def test_parse_database_url():
"""
Describe
"""

url = "postgres://user:password@hostname:5432/database-name"
url = "postgres://user:password@hostname:5432/db-name"

config = parse(url)
ret = config.parse(url)

assert config.username == "user"
assert config.password == "password"
assert config.hostname == "hostname"
assert config.port == 5432
assert ret.username == "user"
assert ret.password == "password"
assert ret.hostname == "hostname"
assert ret.port == 5432


def test_config_database_url_orator():

expected = {
"postgres": {
"database": "database-name",
"driver": "postgres",
"host": "hostname",
"user": "user",
"password": "password",
"prefix": "",
}
}

assert config.orator == expected

0 comments on commit 9bdd896

Please sign in to comment.