Closed durvalcarvalho closed 2 years ago
Faça uma requisição para o endpoint /api/v1/organizations/ID1/products/
enviando os campos name
e description
e depois consulte o endpoint /api/v1/organizations/ID1/products/ID2/current/pre-config/
onde ID1 é o identificador de uma organização e ID2 é o identificador do produto recém criado.
Exemplo:
# Criação de um produto
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "morpheus-dream",
"description": "Sistema de geração de filmes aleatórios"
}'
# Obtençao da pré-configuração do produto recem criado
curl --location --request GET 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/current/pre-config/'
Crie uma nova pré-configuração no endpoint /api/v1/organizations/ID1/products/ID2/create/pre-config/
e depois faça outra requisição para o endpoint /api/v1/organizations/ID1/products/ID2/current/pre-config/
, onde ID1 é o identificador de uma organização e ID2 é o identificador de um produto.
Exemplo:
# Pré-configuração válida
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Nova pre-config da release V13.13.13",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 60,
"subcharacteristics": [
{
"key": "testing_status",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
},
{
"key": "maintainability",
"weight": 40,
"subcharacteristics": [
{
"key": "modifiability",
"weight": 100,
"measures": [
{
"key": "non_complex_file_density",
"weight": 33
},
{
"key": "commented_file_density",
"weight": 33
},
{
"key": "duplication_absense",
"weight": 34
}
]
}
]
}
]
}
}'
# Obtençao da pré-configuração vigente do produto em questão
curl --location --request GET 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/current/pre-config/'
Faça uma requisição para o endpoint /api/v1/organizations/ID1/products/ID2/current/pre-config/
, onde ID1 é o identificador de uma organização e ID2 é o identificador de um produto.
Exemplo:
# Obtençao da pré-configuração vigente do produto em questão
curl --location --request GET 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/current/pre-config/'
Tente cria uma requisição inválida utilizando o endpoint /api/v1/organizations/ID1/products/ID2/create/pre-config/
, onde ID1 é o identificador de uma organização e ID2 é o identificador de um produto.
É esperado que seja retornado uma resposta indicando o problema na requisição e que não seja criado nenhuma nova pré-configuração.
Exemplo:
# Criação de uma pré-configuração inválida: formato inválido
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Pré-config inválida",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 60,
"subcharacteristics": []
}
]
}
}'
# Criação de uma pré-configuração inválida: characteristics inválida
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Pré-config inválida",
"data": {
"characteristics": [
{
"key": "fake-characteristics",
"weight": 60,
"subcharacteristics": [
{
"key": "testing_status",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
}
]
}
}'
# Criação de uma pré-configuração inválida: subcharacteristics modifiability associada com a characteristics reliability
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Pré-config inválida",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 60,
"subcharacteristics": [
{
"key": "modifiability",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
}
]
}
}'
Tente cria uma requisição inválida utilizando o endpoint /api/v1/organizations/ID1/products/ID2/create/pre-config/
, onde ID1 é o identificador de uma organização e ID2 é o identificador de um produto.
É esperado que somente pré-configuração em que os pesos do mesmo nível da árvore é 100 sejam aceitas.
Exemplo:
# Criação de uma pré-configuração válida
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Nova pre-config da release V5.1.0",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 60,
"subcharacteristics": [
{
"key": "testing_status",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
},
{
"key": "maintainability",
"weight": 40,
"subcharacteristics": [
{
"key": "modifiability",
"weight": 100,
"measures": [
{
"key": "non_complex_file_density",
"weight": 33
},
{
"key": "commented_file_density",
"weight": 33
},
{
"key": "duplication_absense",
"weight": 34
}
]
}
]
}
]
}
}'
# Criação de uma pré-configuração inválida: a somatória dos pesos das characteristics não sáo igual a 100
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Nova pre-config da release V5.1.0",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 10,
"subcharacteristics": [
{
"key": "testing_status",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
},
{
"key": "maintainability",
"weight": 40,
"subcharacteristics": [
{
"key": "modifiability",
"weight": 100,
"measures": [
{
"key": "non_complex_file_density",
"weight": 33
},
{
"key": "commented_file_density",
"weight": 33
},
{
"key": "duplication_absense",
"weight": 34
}
]
}
]
}
]
}
}'
Tente cria uma requisição inválida utilizando o endpoint /api/v1/organizations/ID1/products/ID2/create/pre-config/
, onde ID1 é o identificador de uma organização e ID2 é o identificador de um produto.
# Criação de uma pré-configuração inválida: subcharacteristics modifiability associada com a characteristics reliability
curl --location --request POST 'https://measuresoftgram-service.herokuapp.com/api/v1/organizations/4/products/5/create/pre-config/' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Pré-config inválida",
"data": {
"characteristics": [
{
"key": "reliability",
"weight": 60,
"subcharacteristics": [
{
"key": "modifiability",
"weight": 100,
"measures": [
{
"key": "passed_tests",
"weight": 33
},
{
"key": "test_builds",
"weight": 33
},
{
"key": "test_coverage",
"weight": 34
}
]
}
]
}
]
}
}'
Descrição
Eu como Miguel, gostaria de criar pré-configurações de produtos via API, pois dessa maneira eu poderia integrar o sistema do MeasureSoftGram com o sistema já existente que utilizam na organização que trabalho, permitindo assim que os usuários desse sistema atual consigam utilizar o MeasureSoftGram sem precisar abrir outro site.
Critérios de Aceitação:
Observações
Para testar esses critérios de aceitação foi sugerido situações de teste neste comentário.