aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_fact_sales_order.py
blob: f0796eb0b72f488804a4ad7b765564163d27e30b (plain)
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']
    
git.ajschof.me — hosted by ajschofield — powered by cgit