Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
blendb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
23
Issues
23
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
C3SL
blendb
Commits
c0b8b938
Commit
c0b8b938
authored
Aug 30, 2018
by
Rafael Dias
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue
#88
: Refactor struct of tests
Signed-off-by:
Rafael
<
rpd17@inf.ufpr.br
>
parent
ba277989
Pipeline
#17827
passed with stages
in 48 seconds
Changes
33
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
827 additions
and
1061 deletions
+827
-1061
config/ci_dimensions.yaml.example
config/ci_dimensions.yaml.example
+0
-47
config/ci_enumtypes.yaml.example
config/ci_enumtypes.yaml.example
+0
-17
config/ci_metrics.yaml.example
config/ci_metrics.yaml.example
+0
-26
config/ci_metrics_1.yaml.example
config/ci_metrics_1.yaml.example
+0
-26
config/ci_sources.yaml.example
config/ci_sources.yaml.example
+0
-53
config/ci_test.yaml.example
config/ci_test.yaml.example
+43
-48
config/ci_views.yaml.example
config/ci_views.yaml.example
+0
-82
config/market_dimensions.yaml.example
config/market_dimensions.yaml.example
+15
-33
config/market_enum.yaml.example
config/market_enum.yaml.example
+9
-0
config/market_main.yaml.example
config/market_main.yaml.example
+2
-1
config/market_metrics.yaml.example
config/market_metrics.yaml.example
+5
-0
config/market_views.yaml.example
config/market_views.yaml.example
+24
-13
src/adapter/postgres.spec.ts
src/adapter/postgres.spec.ts
+27
-175
src/api/controllers/collect.spec.ts
src/api/controllers/collect.spec.ts
+113
-60
src/api/controllers/collect.ts
src/api/controllers/collect.ts
+16
-16
src/api/controllers/data.spec.ts
src/api/controllers/data.spec.ts
+13
-19
src/api/controllers/engine.spec.ts
src/api/controllers/engine.spec.ts
+4
-5
src/core/engine.spec.ts
src/core/engine.spec.ts
+61
-90
src/util/scenarioHandler.ts
src/util/scenarioHandler.ts
+167
-0
src/util/viewHandler.ts
src/util/viewHandler.ts
+8
-4
test/postgres/fixtures/activeseller.json
test/postgres/fixtures/activeseller.json
+7
-0
test/postgres/fixtures/buyout.json
test/postgres/fixtures/buyout.json
+5
-5
test/postgres/fixtures/client.json
test/postgres/fixtures/client.json
+0
-0
test/postgres/fixtures/distribute.json
test/postgres/fixtures/distribute.json
+7
-0
test/postgres/fixtures/product.json
test/postgres/fixtures/product.json
+0
-0
test/postgres/fixtures/provider.json
test/postgres/fixtures/provider.json
+0
-0
test/postgres/fixtures/sell.json
test/postgres/fixtures/sell.json
+17
-0
test/postgres/fixtures/seller.json
test/postgres/fixtures/seller.json
+17
-0
test/postgres/fixtures/view10.json
test/postgres/fixtures/view10.json
+0
-17
test/postgres/fixtures/view13.json
test/postgres/fixtures/view13.json
+0
-17
test/postgres/fixtures/view16.json
test/postgres/fixtures/view16.json
+0
-7
test/scenario.ts
test/scenario.ts
+266
-300
tslint.json
tslint.json
+1
-0
No files found.
config/ci_dimensions.yaml.example
deleted
100644 → 0
View file @
ba277989
-
name: "dim:2"
dataType: "integer"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:3"
dataType: "string"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:4"
dataType: "string"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:5"
dataType: "boolean"
description: "A dimension of Blendb. Has 2 possible values."
-
name: "dim:6"
dataType: "integer"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:7"
dataType: "integer"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:8"
dataType: "integer"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:9"
dataType: "integer"
parent: "dim:0"
relation: "day"
description: "A dimension of Blendb. Has 30 possible values."
-
name: "dim:10"
dataType: "integer"
parent: "dim:0"
relation: "month"
description: "A dimension of Blendb. Has 12 possible values."
-
name: "dim:11"
dataType: "integer"
parent: "dim:0"
relation: "year"
description: "A dimension of Blendb. Has 1 possible value."
config/ci_enumtypes.yaml.example
deleted
100644 → 0
View file @
ba277989
-
name: "enumtype:1"
values:
- "test_4"
- "test_5"
- "test_6"
- "string"
-
name: "enumtype:2"
values:
- "test_7"
- "test_8"
-
name: "enumtype:3"
values:
- "test_9"
config/ci_metrics.yaml.example
deleted
100644 → 0
View file @
ba277989
-
name: "met:2"
dataType: "integer"
aggregation: "avg"
description: "No meaning, just used for test"
-
name: "met:3"
dataType: "integer"
aggregation: "sum"
description: "No meaning, just used for test"
-
name: "met:4"
dataType: "integer"
aggregation: "sum"
description: "No meaning, just used for test"
-
name: "met:5"
dataType: "integer"
aggregation: "avg"
description: "No meaning, just used for test"
-
name: "met:6"
dataType: "integer"
aggregation: "count"
description: "No meaning, just used for test"
config/ci_metrics_1.yaml.example
deleted
100644 → 0
View file @
ba277989
-
name: "met:7"
dataType: "integer"
aggregation: "count"
description: "No meaning, just used for test"
-
name: "met:8"
dataType: "integer"
aggregation: "sum"
description: "No meaning, just used for test"
-
name: "met:9"
dataType: "integer"
aggregation: "count"
description: "No meaning, just used for test"
-
name: "met:10"
dataType: "integer"
aggregation: "max"
description: "No meaning, just used for test"
-
name: "met:11"
dataType: "integer"
aggregation: "min"
description: "No meaning, just used for test"
config/ci_sources.yaml.example
deleted
100644 → 0
View file @
ba277989
-
name: "source_1"
description: "source with 2 entries"
fields:
-
name: "fields:0"
description: "first entry"
dataType: "enumtype"
enumType: "enumtype:0"
-
name: "fields:1"
description: "second entry"
dataType: "string"
-
name: "source_2"
description: "source with one entry and undefined dataType"
fields:
-
name: "fields:0"
description: "first entry"
dataType: "string"
-
name: "source_3"
description: "source with one entry and without description"
fields:
-
name: "fields:0"
dataType: "string"
-
name: "source_4"
description: "source with all core types from blendb"
fields:
-
name: "fields:0"
description: "first entry"
dataType: "integer"
-
name: "fields:1"
description: "second entry"
dataType: "float"
-
name: "fields:2"
description: "third entry"
dataType: "string"
-
name: "fields:3"
description: "fourth entry"
dataType: "boolean"
-
name: "fields:4"
description: "fifth entry"
dataType: "date"
config/ci_test.yaml.example
View file @
c0b8b938
...
...
@@ -3,76 +3,71 @@
# so this example file in fact is the CI test file
views:
links:
- config/
ci
_views.yaml.example
- config/
market
_views.yaml.example
obj:
-
alias: "
View 0
"
data: "test/postgres/fixtures/
view0
.json"
alias: "
Seller
"
data: "test/postgres/fixtures/
seller
.json"
origin: true
dimensions:
- "dim:0"
- "dim:7"
- "dim:seller:name"
- "dim:seller:sex"
- "dim:seller:cpf"
- "dim:seller:id"
- "dim:seller:status"
metrics:
- "met:
0
"
- "met:
1
"
- "met:
2
"
- "met:
10
"
- "met:
seller:avg:age
"
- "met:
seller:max:age
"
- "met:
seller:min:age
"
- "met:
seller:count:age
"
metrics:
links:
- config/ci_metrics.yaml.example
- config/ci_metrics_1.yaml.example
- config/market_metrics.yaml.example
obj:
-
name: "met:0"
dataType: "integer"
aggregation: "sum"
description: "No meaning, just used for test"
-
name: "met:1"
dataType: "integer"
-
name: "met:seller:avg:age"
dataType: "float"
aggregation: "avg"
description: "
No meaning, just used for test
"
description: "
The seller average age
"
dimensions:
links:
- config/
ci
_dimensions.yaml.example
- config/
market
_dimensions.yaml.example
obj:
-
name: "dim:0"
dataType: "date"
description: "A dimension of Blendb. Has 5 possible values."
-
name: "dim:1"
dataType: "date"
description: "A dimension of Blendb. Has 5 possible values."
name: "dim:seller:name"
dataType: "string"
description: "Name of the seller from market"
enumTypes:
links:
- config/ci_enumtypes
.yaml.example
- config/market_enum
.yaml.example
obj:
-
name: "enumtype:0"
values:
- "male"
- "female"
- "binary"
- "undecided"
- []
sources:
links:
- config/
ci
_sources.yaml.example
- config/
market
_sources.yaml.example
obj:
-
name: "
source_0
"
description: "
source with 3 entries
"
name: "
Seller
"
description: "
Market worker
"
fields:
-
name: "fields:0"
description: "first entry"
dataType: "string"
-
name: "fields:1"
description: "second entry"
name: "name"
description: "Seller name"
dataType: "string"
-
name: "fields:2"
description: "third entry"
name: "age"
description: "Seller age"
dataType: "integer"
-
name: "sex"
description: "Seller sex"
enumType: "enumsex"
dataType: "enumtype"
-
name: "CPF"
description: "Seller CPF"
dataType: "string"
-
name: "id"
description: "Seller id"
dataType: "integer"
config/ci_views.yaml.example
deleted
100644 → 0
View file @
ba277989
-
alias: "View 1"
data: "test/postgres/fixtures/view1.json"
origin: true
dimensions:
- "dim:1"
- "dim:8"
metrics:
- "met:3"
- "met:4"
-
alias: "View 2"
data: "test/postgres/fixtures/view2.json"
origin: true
dimensions:
- "dim:2"
metrics:
- "met:5"
- "met:6"
- "met:11"
-
alias: "View 3"
data: "test/postgres/fixtures/view3.json"
origin: true
dimensions:
- "dim:2"
- "dim:3"
- "dim:4"
-
alias: "View 4"
data: "test/postgres/fixtures/view4.json"
origin: true
dimensions:
- "dim:2"
- "dim:7"
- "dim:8"
-
alias: "View 5"
data: "test/postgres/fixtures/view5.json"
origin: true
dimensions:
- "dim:3"
metrics:
- "met:7"
-
alias: "View 6"
data: "test/postgres/fixtures/view6.json"
origin: true
dimensions:
- "dim:4"
metrics:
- "met:8"
-
alias: "View 7"
data: "test/postgres/fixtures/view7.json"
origin: true
dimensions:
- "dim:4"
- "dim:5"
- "dim:6"
-
alias: "View 8"
data: "test/postgres/fixtures/view8.json"
origin: true
dimensions:
- "dim:5"
- "dim:6"
metrics:
- "met:9"
-
alias: "view 9"
data: "test/postgres/fixtures/view9.json"
origin: false
dimensions:
- "dim:2"
metrics:
- "met:5"
- "met:6"
- "met:7"
clauses:
- "dim:2!=1"
config/market_dimensions.yaml.example
View file @
c0b8b938
-
name: "dim:seller:name"
dataType: "string"
description: "The name of the seller from market"
-
name: "dim:seller:sex"
dataType: "enumtype"
...
...
@@ -8,9 +12,10 @@
dataType: "string"
description: "CPF of the seller from market"
-
name: "dim:seller:id"
dataType: "integer"
description: "id of the seller from market"
name: "dim:seller:status"
dataType: "enumtype"
enumType: "workingStatus"
description: "The status of the seller from market"
-
name: "dim:product:name"
dataType: "string"
...
...
@@ -19,10 +24,6 @@
name: "dim:product:validity"
dataType: "date"
description: "Validity of the product from market"
-
name: "dim:product:id"
dataType: "integer"
description: "id of the product from market"
-
name: "dim:client:name"
dataType: "string"
...
...
@@ -31,24 +32,16 @@
name: "dim:client:cpf"
dataType: "string"
description: "CPF of the client from market"
-
name: "dim:client:id"
dataType: "integer"
description: "id of the client from market"
-
name: "dim:sell:registered"
dataType: "boolean"
description: "Check if the client is registered"
-
name: "dim:sell:product.id"
dataType: "integer"
description: "id of the product from market"
description: "Check if the client is registered"
-
name: "dim:sell
:seller.
id"
name: "dim:sell
er:
id"
dataType: "integer"
description: "id of the seller from market"
-
name: "dim:
sell:client.
id"
name: "dim:
client:
id"
dataType: "integer"
description: "id of the client from market"
-
...
...
@@ -58,28 +51,17 @@
-
name: "dim:buyout:datein"
dataType: "date"
description: "Date of the buyout was realized"
description: "Date of the buyout was realized"
-
name: "dim:buyout:provider.id"
dataType: "integer"
description: "id of the provider from market"
-
name: "dim:buyout:product.id"
name: "dim:product:id"
dataType: "integer"
description: "id of the product from market"
-
name: "dim:provider:name"
dataType: "string"
description: "Name of the provider from market"
description: "Name of the provider from market"
-
name: "dim:provider:id"
dataType: "integer"
description: "id of the provider from market"
-
name: "dim:distribute:provider.id"
dataType: "string"
description: "id of the provider from market"
-
name: "dim:distribute:product.id"
dataType: "string"
description: "id of the product from market"
config/market_enum.yaml.example
View file @
c0b8b938
...
...
@@ -5,4 +5,13 @@
- "female"
- "nonbinary"
- "undecided"
-
name: "workingStatus"
values:
- "active"
- "inactive"
- "vacation"
- "sick leave"
- "maternity leave"
config/market_main.yaml.example
View file @
c0b8b938
...
...
@@ -4,13 +4,14 @@ views:
obj:
-
alias: "Seller"
data: "test/postgres/fixtures/
view10
.json"
data: "test/postgres/fixtures/
seller
.json"
origin: true
dimensions:
- "dim:seller:name"
- "dim:seller:sex"
- "dim:seller:cpf"
- "dim:seller:id"
- "dim:seller:status"
metrics:
- "met:seller:avg:age"
- "met:seller:max:age"
...
...
config/market_metrics.yaml.example
View file @
c0b8b938
-
name: "met:seller:avg:age"
dataType: "float"
aggregation: "avg"
description: "The seller average age"
-
name: "met:seller:max:age"
dataType: "integer"
...
...
config/market_views.yaml.example
View file @
c0b8b938
-
alias: "Product"
data: "test/postgres/fixtures/
view11
.json"
data: "test/postgres/fixtures/
product
.json"
origin: true
dimensions:
- "dim:product:name"
...
...
@@ -15,7 +15,7 @@
- "met:product:min:priceout"
-
alias: "Client"
data: "test/postgres/fixtures/
view12
.json"
data: "test/postgres/fixtures/
client
.json"
origin: true
dimensions:
- "dim:client:name"
...
...
@@ -23,13 +23,13 @@
- "dim:client:id"
-
alias: "Sell"
data: "test/postgres/fixtures/
view13
.json"
data: "test/postgres/fixtures/
sell
.json"
origin: true
dimensions:
- "dim:sell:registered"
- "dim:
sell:product.
id"
- "dim:sell
:seller.
id"
- "dim:
sell:client.
id"
- "dim:
product:
id"
- "dim:sell
er:
id"
- "dim:
client:
id"
- "dim:sell:datein"
metrics:
- "met:sell:sum:quantity"
...
...
@@ -37,27 +37,38 @@
- "met:sell:count:quantity"
-
alias: "Buyout"
data: "test/postgres/fixtures/
view14
.json"
data: "test/postgres/fixtures/
buyout
.json"
origin: true
dimensions:
- "dim:buyout:datein"
- "dim:
buyout:provider.
id"
- "dim:
buyout:product.
id"
- "dim:
provider:
id"
- "dim:
product:
id"
metrics:
- "met:buyout:avg:quantity"
- "met:buyout:max:quantity"
- "met:buyout:min:quantity"
-
alias: "Provider"
data: "test/postgres/fixtures/
view15
.json"
data: "test/postgres/fixtures/
provider
.json"
origin: true
dimensions:
- "dim:provider:name"
- "dim:provider:id"
-
alias: "Distribute"
data: "test/postgres/fixtures/
view16
.json"
data: "test/postgres/fixtures/
distribute
.json"
origin: true
dimensions:
- "dim:distribute:provider.id"
- "dim:distribute:product.id"
- "dim:provider:id"
- "dim:product:id"
-
alias: "ActiveSeller"
data: "test/postgres/fixtures/activeseller.json"
origin: true
dimensions:
- "dim:seller:name"
- "dim:seller:status"
metrics:
- "met:seller:max:age"
clauses:
- "dim:seller:status==active"
src/adapter/postgres.spec.ts
View file @
c0b8b938
This diff is collapsed.
Click to expand it.
src/api/controllers/collect.spec.ts
View file @
c0b8b938
This diff is collapsed.
Click to expand it.
src/api/controllers/collect.ts
View file @
c0b8b938
...
...
@@ -99,15 +99,18 @@ export class CollectCtrl {
},
"
boolean
"
:
function
(
value
:
any
)
{
let
test
:
string
=
value
;
test
=
test
.
toLocaleLowerCase
();
if
(
test
===
"
true
"
||
test
===
"
false
"
){
let
test
=
typeof
(
value
);
if
(
test
===
"
boolean
"
){
return
true
;
}
else
{
return
false
;
}
}
else
{
let
test
:
string
=
value
;
test
=
test
.
toLocaleLowerCase
();
if
(
test
===
"
true
"
||
test
===
"
false
"
){
return
true
;
}
else
{
return
false
;
}
}
}
};
...
...
@@ -126,7 +129,10 @@ export class CollectCtrl {
for
(
let
i
=
0
;
i
<
fields
.
length
;
i
++
){
data
[
i
]
=
req
.
body
[
fields
[
i
].
name
];
if
(
!
data
[
i
]){
// check if the data is empty, however since data may be
// true/false, it must guarantee that it isn't a boolean
// then it'll test if it's empty
if
(
!
(
typeof
(
data
[
i
])
===
"
boolean
"
)
&&
!
data
[
i
]){
throw
new
Error
(
"
The '
"
+
fields
[
i
].
name
+
"
' wasn't informed on json
"
);
}
...
...
@@ -158,13 +164,7 @@ export class CollectCtrl {
"
The value '
"
+
data
[
i
]
+
"
' from '
"
+
fields
[
i
].
name
+
"
' isn't a type
"
+
[
EnumHandler
.
stringfyDataType
(
fields
[
i
].
dataType
)]);
}
}
// undefined DataType
else
{
throw
new
Error
(
"
The value '
"
+
data
[
i
]
+
"
' from '
"
+
fields
[
i
].
name
+
"
' isn't listed on
"
+
fields
[
i
].
enumType
);
}
}
}
}
...
...
src/api/controllers/data.spec.ts
View file @
c0b8b938
...
...
@@ -20,7 +20,6 @@
import
*
as
request
from
"
supertest
"
;
import
{
expect
}
from
"
chai
"
;
import
*
as
server
from
"
../../main
"
;
import
{
dataCtrlScenario
as
tests
}
from
"
../../../test/scenario
"
;
import
{
Query
}
from
"
../../common/query
"
;
...
...
@@ -53,7 +52,8 @@ describe("API data controller", () => {
.
expect
((
res
:
any
)
=>
{
const
message
=
"
Query execution failed:
"
+
"
Could not construct query with the given parameters.
"
;
const
error
=
"
The metric named met:-1 was not found
"
;
const
error
=
"
The metric named met:this:is:just:a:test
"
+
"
was not found
"
;
expect
(
res
.
body
).
to
.
be
.
an
(
"
object
"