1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
from src.dataframes import *
import pandas as pd
from unittest.mock import patch
from datetime import datetime as dt
class TestCreateDimDesign:
def test_dim_design_returns_dataframe(self):
d = {"test": ["Hello", "Bye"], "design_id": ["Hello", "Bye"], "design_name": ["Hello", "Bye"],
"file_name": ["Hello", "Bye"], "file_location": ["Hello", "Bye"], "Hello": ["Hello", "Bye"]}
test_df = {"design": pd.DataFrame(data=d)}
result = create_dim_design(test_df)
assert isinstance(result, pd.DataFrame)
def test_dim_design_returns_correct_columns_and_values(self):
d = {"test": ["Hello", "Bye"], "design_id": ["Hello", "Bye"], "design_name": ["Hello", "Bye"],
"file_name": ["Hello", "Bye"], "file_location": ["Hello", "Bye"], "Hello": ["Hello", "Bye"]}
test_df = {"design": pd.DataFrame(data=d)}
result = create_dim_design(test_df)
d2 = {"design_id": ["Hello", "Bye"], "design_name": ["Hello", "Bye"], "file_name": ["Hello", "Bye"],
"file_location": ["Hello", "Bye"]}
expected_df = pd.DataFrame(data=d2)
expected_result = expected_df.copy()
assert result.equals(expected_result)
class TestCreateDimStaff:
def test_dim_staff_returns_dataframe(self):
d = {"staff_id": ["Hello", "Bye"], "first_name": ["Hello", "Bye"], "last_name": ["Hello", "Bye"], "department_id": ["Hello", "Bye"]}
d2 = {"department_name": ["Hello", "Bye"], "location": ["Hello", "Bye"], "email_address": ["Hello", "Bye"], "department_id": ["Hello", "Bye"]}
test_df = {"staff": pd.DataFrame(data=d), "department": pd.DataFrame(data=d2)}
result = create_dim_staff(test_df)
assert isinstance(result, pd.DataFrame)
def test_dim_staff_returns_correct_columns_and_values(self):
d = {"staff_id": ["Hello", "Bye"], "first_name": ["Hello", "Bye"], "last_name": ["Hello", "Bye"], "department_id": ["Hello", "Bye"]}
d2 = {"department_name": ["Hello", "Bye"], "location": ["Hello", "Bye"], "email_address": ["Hello", "Bye"], "department_id": ["Hello", "Bye"]}
test_df = {"staff": pd.DataFrame(data=d), "department": pd.DataFrame(data=d2)}
result = create_dim_staff(test_df)
expected_d = {"staff_id": ["Hello", "Bye"], "first_name": ["Hello", "Bye"], "last_name": ["Hello", "Bye"], "department_name": ["Hello", "Bye"], "location": ["Hello", "Bye"], "email_address": ["Hello", "Bye"]}
expected_df = pd.DataFrame(data=expected_d)
expected_result = expected_df.copy()
assert result.equals(expected_result)
class TestCreatePaymentType:
def test_create_dim_payment_type_returns_correct_columns_and_values(self):
d = {"payment_type_id": ["Hello", "Bye"], "payment_type_name": ["Hello", "Bye"]}
test_df = {"payment_type": pd.DataFrame(data=d)}
result = create_dim_payment_type(test_df)
expected_columns = ["payment_type_id", "payment_type_name"]
expected_d = {"payment_type_id": ["Hello", "Bye"], "payment_type_name": ["Hello", "Bye"]}
expected_df = pd.DataFrame(data=expected_d)
assert isinstance(result, pd.DataFrame)
assert list(result.columns) == expected_columns
assert result.equals(expected_df)
class TestCreateDimCounterparty:
def test_create_dim_counterparty_type_returns_correct_columns_and_object(self):
data_l = pd.DataFrame(data={"counterparty_id": ["Hello", "Bye"],
"counterparty_legal_name": ["Hello", "Bye"],
"commercial_contact": ["Hello", "Bye"],
"legal_address_id": ["bond street", "regent street"]})
data_a = pd.DataFrame(data={"address_id":["bond street", "regent street"],
"postcode":[98365,93753]})
test_df = {"address": data_a,"counterparty":data_l}
result = create_dim_counterparty(test_df)
expected_columns = ["counterparty_id", "counterparty_legal_name",
"commercial_contact", "counterparty_legal_postcode"]
print(data_l)
print(data_a)
assert isinstance(result, pd.DataFrame)
assert list(result.columns) == expected_columns
class TestCreateDimCurrency:
def test_dim_currency_returns_columns_and_values(self):
nones = [None,None,None]
d = {"currency_id": [1, 2, 3], "currency_code": ["USD", "EUR", "GBP"],"created_at":nones,"last_updated":nones}
test_df = {"currency": pd.DataFrame(data=d)}
scraper_output = pd.DataFrame({"currency_code":["RUS","USD","PHP","GBP","EUR"],"currency_name":["Rubble","US Dollar","Peso","Pound","Euro"]})
result = create_dim_currency(test_df,names=scraper_output).sort_values(by="currency_code",axis=0)
expected_d = {"currency_id": [1, 2, 3], "currency_code": ["USD", "EUR", "GBP"], "currency_name": ["US Dollar", "Euro", "Pound"]}
expected_df = pd.DataFrame(data=expected_d).sort_values(by="currency_code",axis=0)
assert isinstance(result, pd.DataFrame)
assert result.equals(expected_df)
def test_scrape_currency_names_returns_dataframe_with_correct_collumns(self):
result = scrape_currency_names()
assert isinstance(result,pd.DataFrame)
assert list(result.columns) == ['currency_code', 'currency_name']
class TestCreateDimDate:
def test_returns_required_columns(self):
df_one = pd.DataFrame(data={'updated_date':dt(2020, 5, 17),'created_date':dt(2021, 5, 13),'not_dat':None},index=[0])
df_two = pd.DataFrame(data={'updated_date':dt(2020, 5, 17),'created_date':dt(2021, 9, 13)},index=[0])
df_three = pd.DataFrame(data={'updated_date':dt(2022, 5, 17),'created_date':dt(2023, 5, 13)},index=[0])
expected_df = pd.DataFrame(data=
[[dt(2020,5,17),2020,5,17,6,'Sunday','May',2],
[dt(2021,5,13),2021,5,13,3,'Thursday','May',2],
[dt(2021,9,13),2021,9,13,0,'Monday','September',3],
[dt(2022,5,17),2022,5,17,1,'Tuesday','May',2],
[dt(2023,5,13),2023,5,13,5,'Saturday','May',2]],
columns=['date_id','year','month','day','day_of_week','day_name','month_name','quarter'])
with patch("src.dataframes.create_fact_payment") as mock_fp:
with patch("src.dataframes.create_fact_purchase_orders") as mock_fpo:
with patch("src.dataframes.create_fact_sales_order") as mock_fso:
mock_fp.return_value = df_one
mock_fpo.return_value = df_two
mock_fso.return_value = df_three
result = create_dim_date({'dum':0})
result.reset_index(inplace=True,drop=True)
assert result.eq(expected_df, axis="columns").all(axis=None)
class TestCreateDimLocation:
def test_returns_correct_columns_lo(self):
dict_df = {'address':pd.DataFrame(data=[['some_time','some_other_time',1,'SE18 9QO']],
columns=['created_at','last_updated','address_id','postal_code'])}
result = create_dim_location(dict_df)
assert list(result.columns) == ['location_id','postal_code']
class TestCreateDimTransaction:
def test_returns_correct_columns_tr(self):
dict_df = {'transaction':pd.DataFrame(data=[['some_time','some_other_time',1,'SE18 9QO']],
columns=['created_at','last_updated','transaction_id','some_other_id'])}
result = create_dim_transaction(dict_df)
assert list(result.columns) == ['transaction_id','some_other_id']
|