-
Notifications
You must be signed in to change notification settings - Fork 78
/
tests.sql
146 lines (110 loc) · 4.44 KB
/
tests.sql
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
{{
config(
tags=['unit-test']
)
}}
{% call dbt_unit_testing.test('customers', 'should show customer_id without orders') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select 1 as customer_id, '' as first_name, '' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select null::numeric as customer_id, null::numeric as order_id, null as order_date where false
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select null::numeric as order_id, null::numeric as amount where false
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as customer_id
{% endcall %}
{% endcall %}
UNION ALL
{% call dbt_unit_testing.test('customers', 'should show customer name') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select null::Numeric as customer_id, 'John' as first_name, 'Doe' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select null::numeric as customer_id, null::numeric as order_id, null as order_date where false
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select null::numeric as order_id, null::numeric as amount where false
{% endcall %}
{% call dbt_unit_testing.expect() %}
select null::Numeric as customer_id, 'John' as first_name, 'Doe' as last_name
{% endcall %}
{% endcall %}
UNION ALL
{% call dbt_unit_testing.test('customers', 'should sum order values to calculate customer_lifetime_value') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select 1 as customer_id, '' as first_name, '' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select 1001 as order_id, 1 as customer_id, null as order_date
UNION ALL
select 1002 as order_id, 1 as customer_id, null as order_date
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select 1001 as order_id, 10 as amount
UNION ALL
select 1002 as order_id, 10 as amount
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as customer_id, 20 as customer_lifetime_value
{% endcall %}
{% endcall %}
UNION ALL
{% call dbt_unit_testing.test('customers', 'should calculate the number of orders') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select 1 as customer_id, '' as first_name, '' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select 1001 as order_id, 1 as customer_id, null as order_date
UNION ALL
select 1002 as order_id, 1 as customer_id, null as order_date
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select 1001 as order_id, 0 as amount
UNION ALL
select 1002 as order_id, 0 as amount
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as customer_id, 2 as number_of_orders
{% endcall %}
{% endcall %}
UNION ALL
{% call dbt_unit_testing.test('customers', 'should calculate most recent order') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select 1 as customer_id, '' as first_name, '' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select 1001 as order_id, 1 as customer_id, '2020-10-01'::Timestamp as order_date
UNION ALL
select 1002 as order_id, 1 as customer_id, '2021-01-02'::Timestamp as order_date
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select 1001 as order_id, 0 as amount
UNION ALL
select 1002 as order_id, 0 as amount
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as customer_id, '2021-01-02'::Timestamp as most_recent_order
{% endcall %}
{% endcall %}
UNION ALL
{% call dbt_unit_testing.test('customers', 'should calculate first order') %}
{% call dbt_unit_testing.mock_ref ('stg_customers') %}
select 1 as customer_id, '' as first_name, '' as last_name
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_orders') %}
select 1001 as order_id, 1 as customer_id, '2020-10-01'::Timestamp as order_date
UNION ALL
select 1002 as order_id, 1 as customer_id, '2021-01-02'::Timestamp as order_date
{% endcall %}
{% call dbt_unit_testing.mock_ref ('stg_payments') %}
select 1001 as order_id, 0 as amount
UNION ALL
select 1002 as order_id, 0 as amount
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as customer_id, '2020-10-01'::Timestamp as first_order
{% endcall %}
{% endcall %}