Skip to content

Commit 099b1ef

Browse files
committed
update
1 parent 9c65f95 commit 099b1ef

File tree

2 files changed

+132
-137
lines changed

2 files changed

+132
-137
lines changed

.github/workflows/test.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ jobs:
4444
run: |
4545
chmod +x ./tests/initial_setup.sh
4646
./tests/initial_setup.sh -v 0.45.2.1
47-
# - name: Test with pytest
48-
# run: |
49-
# pytest
50-
# - name: Generate Report
51-
# run: |
52-
# pip install coverage
53-
# coverage run -m unittest
54-
# - name: Upload Coverage to Codecov
55-
# uses: codecov/codecov-action@v1
47+
- name: Test with pytest
48+
run: |
49+
pytest
50+
- name: Generate Report
51+
run: |
52+
pip install coverage
53+
coverage run -m unittest
54+
- name: Upload Coverage to Codecov
55+
uses: codecov/codecov-action@v1

tests/initial_setup.sh

Lines changed: 123 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ then
1818
exit 1
1919
fi
2020

21-
echo "downloading metabase jar ..."
22-
wget https://downloads.metabase.com/v$MB_VERSION/metabase.jar
23-
echo "starting metabase jar locally ..."
21+
# downloading metabase jar
22+
wget -q https://downloads.metabase.com/v$MB_VERSION/metabase.jar
23+
24+
# starting metabase jar locally
2425
java -jar metabase.jar > logs 2>&1 &
2526

26-
echo "waiting 60 seconds for the initialization to complete ..."
27+
# waiting 60 seconds for the initialization to complete
2728
sleep 60
2829

2930
# checking whether the metabase initialization has completed. If not, wait another 60 seconds
@@ -51,128 +52,122 @@ then
5152
exit 1
5253
fi
5354

54-
ls -l
55-
cp tests/data/test_db.sqlite plugins
5655

57-
# echo "getting the seup token ..."
58-
# setup_token=$(curl -X GET http://localhost:3000/api/session/properties | perl -pe 's/.*"setup-token":"(.*?)".*/\1/')
59-
# echo "initial setup and getting session_id ..."
60-
# session_id=$(curl -X POST -H "Content-Type: application/json" -d '{ "token": "'$setup_token'", "user": {"first_name": "abc", "last_name": "xyz", "email": "abc.xyz@gmail.com", "password": "xzy12345"},"prefs": {"allow_tracking": true, "site_name": "test_site"}}' http://localhost:3000/api/setup | perl -pe 's/^.......(.*)..$/\1/')
61-
# echo $session_id
62-
63-
# echo "creaing base collections which will be used during the test ..."
64-
# curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection", "color":"#509EE3"}' http://localhost:3000/api/collection # id of the created collection is 2 because id 1 is reserved for the personal collection of admin
65-
# curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection_dup", "parent_id":2, "color":"#509EE3"}' http://localhost:3000/api/collection # collection_id: 3
66-
# curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection_dup", "parent_id":2, "color":"#509EE3"}' http://localhost:3000/api/collection # collection_id: 4
67-
68-
# echo "downloading the test_db (SQLite)" # for editing the SQLite db: https://sqliteviewer.flowsoft7.com/
69-
# wget -P plugins/ https://github.com/vvaezian/metabase_api_python/raw/master/tests/data/test_db.sqlite
70-
71-
# echo "Connecting to test_db ..."
72-
# curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"engine":"sqlite","name":"test_db","details":{"db":"plugins/test_db.sqlite","advanced-options":false},"is_full_sync":true}' http://localhost:3000/api/database # id of the created db connection is 2 because 1 is used for sample database
73-
74-
# # echo "creating base cards which will be used during the test ..."
75-
# json='{
76-
# "name": "test_card",
77-
# "display": "table",
78-
# "dataset_query": {
79-
# "database": 2,
80-
# "query": { "source-table": 9 },
81-
# "type": "query"
82-
# },
83-
# "visualization_settings": {},
84-
# "collection_id": 2
85-
# }'
86-
# echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
87-
88-
# json='{
89-
# "name":"test_card_2",
90-
# "dataset_query":{
91-
# "type":"native",
92-
# "native":{
93-
# "query":"select *\nfrom test_table\nwhere 1 = 1 \n[[ and {{test_filter}} ]]\n",
94-
# "template-tags":{
95-
# "test_filter":{
96-
# "name":"test_filter",
97-
# "display-name":"Test filter",
98-
# "type":"dimension",
99-
# "dimension":["field",72,null],
100-
# "widget-type":"string/=",
101-
# "default":null,
102-
# "id":"810912da-ead5-c87e-de32-6dc5723b9067"
103-
# }
104-
# }
105-
# }
106-
# ,"database":2
107-
# },
108-
# "display":"table",
109-
# "visualization_settings":{},
110-
# "parameters":[{
111-
# "type":"string/=",
112-
# "target":["dimension",["template-tag","test_filter"]],
113-
# "name":"Test filter",
114-
# "slug":"test_filter",
115-
# "default":null,
116-
# "id":"810912da-ead5-c87e-de32-6dc5723b9067"
117-
# }],
118-
# "collection_id":2
119-
# }'
120-
# echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
121-
122-
# json='{
123-
# "name":"test_card_3",
124-
# "dataset_query":{
125-
# "type":"query",
126-
# "query":{
127-
# "source-table":9,
128-
# "filter":["=",["field",72,null],"row1 cell1","row3 cell1"]},
129-
# "database":2
130-
# },
131-
# "display":"table",
132-
# "visualization_settings":{},
133-
# "collection_id":2
134-
# }'
135-
# echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
136-
137-
# json='{
138-
# "name":"test_card_4",
139-
# "dataset":false,
140-
# "dataset_query":{
141-
# "database":2,
142-
# "query":{
143-
# "source-table":9,
144-
# "aggregation":[["avg",["field",73,null]]],
145-
# "breakout":[["field",72,null]],
146-
# "order-by":[["desc",["aggregation",0,null]]]
147-
# },
148-
# "type":"query"
149-
# },
150-
# "display":"bar",
151-
# "visualization_settings":{"table.pivot":false,"graph.dimensions":["col1"],"graph.metrics":["avg"]},
152-
# "collection_id":2
153-
# }'
154-
# echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
155-
156-
# # create a test dashboard
157-
# curl -X POST http://localhost:3000/api/dashboard -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"collection_id":2,"name":"test_dashboard"}'
158-
159-
# # add the test_card to the dashboard
160-
# curl -X POST http://localhost:3000/api/dashboard/1/cards -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"cardId":1}'
161-
# json='{
162-
# "cards":[{
163-
# "card_id":1,
164-
# "row":0,
165-
# "col":0,
166-
# "size_x":4,
167-
# "size_y":5,
168-
# "series":[],
169-
# "visualization_settings":{},
170-
# "parameter_mappings":[]
171-
# }]
172-
# }'
173-
# echo "$json" | curl -X PUT http://localhost:3000/api/dashboard/1/cards -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
174-
175-
# # diable friendly table and field names
176-
# curl -X PUT http://localhost:3000/api/setting/humanization-strategy -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"value":"none"}'
177-
178-
##session_id='69afe488-8037-47ec-b437-c6136d6d32c8'
56+
# getting the seup token
57+
setup_token=$(curl -X GET http://localhost:3000/api/session/properties | perl -pe 's/.*"setup-token":"(.*?)".*/\1/')
58+
# initial setup and getting the session_id
59+
session_id=$(curl -X POST -H "Content-Type: application/json" -d '{ "token": "'$setup_token'", "user": {"first_name": "abc", "last_name": "xyz", "email": "abc.xyz@gmail.com", "password": "xzy12345"},"prefs": {"allow_tracking": true, "site_name": "test_site"}}' http://localhost:3000/api/setup | perl -pe 's/^.......(.*)..$/\1/')
60+
echo $session_id
61+
62+
# copying the SQLite test db to metabase plugins directory (for editing the SQLite db you can use: https://sqliteviewer.flowsoft7.com/)
63+
cp tests/data/test_db.sqlite plugins
64+
# adding test_db to Metabase as a new database
65+
curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"engine":"sqlite","name":"test_db","details":{"db":"plugins/test_db.sqlite","advanced-options":false},"is_full_sync":true}' http://localhost:3000/api/database # id of the created db connection is 2 because 1 is used for sample database
66+
67+
# creaing base collections which will be used during the test
68+
curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection", "color":"#509EE3"}' http://localhost:3000/api/collection # id of the created collection is 2 because id 1 is reserved for the personal collection of admin
69+
curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection_dup", "parent_id":2, "color":"#509EE3"}' http://localhost:3000/api/collection # collection_id: 3
70+
curl -X POST -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"name":"test_collection_dup", "parent_id":2, "color":"#509EE3"}' http://localhost:3000/api/collection # collection_id: 4
71+
72+
# creating base cards which will be used during the test
73+
json='{
74+
"name": "test_card",
75+
"display": "table",
76+
"dataset_query": {
77+
"database": 2,
78+
"query": { "source-table": 9 },
79+
"type": "query"
80+
},
81+
"visualization_settings": {},
82+
"collection_id": 2
83+
}'
84+
echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
85+
86+
json='{
87+
"name":"test_card_2",
88+
"dataset_query":{
89+
"type":"native",
90+
"native":{
91+
"query":"select *\nfrom test_table\nwhere 1 = 1 \n[[ and {{test_filter}} ]]\n",
92+
"template-tags":{
93+
"test_filter":{
94+
"name":"test_filter",
95+
"display-name":"Test filter",
96+
"type":"dimension",
97+
"dimension":["field",72,null],
98+
"widget-type":"string/=",
99+
"default":null,
100+
"id":"810912da-ead5-c87e-de32-6dc5723b9067"
101+
}
102+
}
103+
}
104+
,"database":2
105+
},
106+
"display":"table",
107+
"visualization_settings":{},
108+
"parameters":[{
109+
"type":"string/=",
110+
"target":["dimension",["template-tag","test_filter"]],
111+
"name":"Test filter",
112+
"slug":"test_filter",
113+
"default":null,
114+
"id":"810912da-ead5-c87e-de32-6dc5723b9067"
115+
}],
116+
"collection_id":2
117+
}'
118+
echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
119+
120+
json='{
121+
"name":"test_card_3",
122+
"dataset_query":{
123+
"type":"query",
124+
"query":{
125+
"source-table":9,
126+
"filter":["=",["field",72,null],"row1 cell1","row3 cell1"]},
127+
"database":2
128+
},
129+
"display":"table",
130+
"visualization_settings":{},
131+
"collection_id":2
132+
}'
133+
echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
134+
135+
json='{
136+
"name":"test_card_4",
137+
"dataset":false,
138+
"dataset_query":{
139+
"database":2,
140+
"query":{
141+
"source-table":9,
142+
"aggregation":[["avg",["field",73,null]]],
143+
"breakout":[["field",72,null]],
144+
"order-by":[["desc",["aggregation",0,null]]]
145+
},
146+
"type":"query"
147+
},
148+
"display":"bar",
149+
"visualization_settings":{"table.pivot":false,"graph.dimensions":["col1"],"graph.metrics":["avg"]},
150+
"collection_id":2
151+
}'
152+
echo "$json" | curl -X POST http://localhost:3000/api/card -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
153+
154+
# create a test dashboard
155+
curl -X POST http://localhost:3000/api/dashboard -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"collection_id":2,"name":"test_dashboard"}'
156+
# add the test_card to the dashboard
157+
curl -X POST http://localhost:3000/api/dashboard/1/cards -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"cardId":1}'
158+
json='{
159+
"cards":[{
160+
"card_id":1,
161+
"row":0,
162+
"col":0,
163+
"size_x":4,
164+
"size_y":5,
165+
"series":[],
166+
"visualization_settings":{},
167+
"parameter_mappings":[]
168+
}]
169+
}'
170+
echo "$json" | curl -X PUT http://localhost:3000/api/dashboard/1/cards -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d @-
171+
172+
# diable friendly table and field names
173+
curl -X PUT http://localhost:3000/api/setting/humanization-strategy -H "Content-Type: application/json" -H "X-Metabase-Session:$session_id" -d '{"value":"none"}'

0 commit comments

Comments
 (0)