Skip to content
This repository has been archived by the owner on Nov 2, 2021. It is now read-only.

Add tests and change query param order for simulations #39

Merged
merged 1 commit into from
Apr 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const (
// for common operations. If the operation needed is not found in Client, use the "genclient" package using this client
// as an example of how to utilize the genclient. PRs are welcome if more functionality is wanted in this client package.
type Client interface {
Simulations(organizationID int32, status []string, sort []string, limit, offset int32) ([]*models.Simulation, error)
Simulations(organizationID int32, status []string, sort []string, offset, limit int32) ([]*models.Simulation, error)
StartSimulation(simulationID int32) error
ThermalSimulation(simulationID int32) (*models.ThermalSimulation, error)
SingleBeadSimulation(simulationID int32) (*models.SingleBeadSimulation, error)
Expand Down Expand Up @@ -212,7 +212,7 @@ func (c *client) PostLog(simulationID int32, message string) error {
return c.PostLogWithTime(simulationID, time.Now().UTC(), message)
}

func (c *client) Simulations(organizationID int32, status []string, sort []string, limit, offset int32) ([]*models.Simulation, error) {
func (c *client) Simulations(organizationID int32, status []string, sort []string, offset, limit int32) ([]*models.Simulation, error) {
token, err := c.tokenFetcher.Token(c.audience)
if err != nil {
return nil, err
Expand Down
103 changes: 103 additions & 0 deletions client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -611,3 +611,106 @@ func TestAssumedStrainSimulationWhenSuccessfulExpectsAssumedStrainSimulationRetu
assert.Equal(t, assumedStrainSimulationToReturn.ID, assumedStrainSimulation.ID, "Expected IDs to match")
assert.EqualValues(t, assumedStrainSimulationToReturn.ElasticModulus, assumedStrainSimulation.ElasticModulus, "Expected ElasticModulus values to match")
}

func TestSimulationsWhenNilValuesExpectsSuccess(t *testing.T) {
// arrange
var organizationID int32 = 10
offset := 2
limit := 10

// Token
mockTokenFetcher := &mocks.TokenFetcher{}
mockTokenFetcher.On("Token", audience).Return("Token", nil)

// Simulation
simulationsToReturn := []models.Simulation{
models.Simulation{
ID: 1,
},
models.Simulation{
ID: 2,
},
}

simulationsHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
assert.NotEmpty(t, r.Header.Get("Authorization"), "Authorization header should not be empty")
assert.Equal(t, strconv.Itoa(offset), r.URL.Query().Get("offset"), "Expected offset to be passed as query param")
assert.Equal(t, strconv.Itoa(limit), r.URL.Query().Get("limit"), "Expected limit to be passed as query param")
bytes, err := json.Marshal(simulationsToReturn)
if err != nil {
t.Error("Failed to marshal simulations")
}
w.Write(bytes)
})

// Setup routes
r := mux.NewRouter()
simulationEndpoint := "/" + SimulationAPIBasePath + "/simulations"
r.HandleFunc(simulationEndpoint, simulationsHandler)
testServer := httptest.NewServer(r)
defer testServer.Close()
simulationService := New(mockTokenFetcher, testServer.URL, audience)

// act
simulations, err := simulationService.Simulations(organizationID, nil, nil, int32(offset), int32(limit))

// assert
mockTokenFetcher.AssertExpectations(t)
assert.Nil(t, err, "Expected no error returned")
assert.Len(t, simulations, 2, "Expected 2 simulations returned.")
}

func TestSimulationsWhenNonNilValuesExpectsSuccess(t *testing.T) {
// arrange
var organizationID int32 = 10
offset := 2
limit := 10
sort := "field1:asc"
status := models.SimulationStatusInProgress

// Token
mockTokenFetcher := &mocks.TokenFetcher{}
mockTokenFetcher.On("Token", audience).Return("Token", nil)

// Simulation
simulationsToReturn := []models.Simulation{
models.Simulation{
ID: 1,
},
models.Simulation{
ID: 2,
},
}

simulationsHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
assert.NotEmpty(t, r.Header.Get("Authorization"), "Authorization header should not be empty")
assert.Equal(t, strconv.Itoa(offset), r.URL.Query().Get("offset"), "Expected offset to be passed as query param")
assert.Equal(t, strconv.Itoa(limit), r.URL.Query().Get("limit"), "Expected limit to be passed as query param")
assert.Equal(t, status, r.URL.Query().Get("status"), "Expected status to be passed as query param")
assert.Equal(t, sort, r.URL.Query().Get("sort"), "Expected sort to be passed as query param")
bytes, err := json.Marshal(simulationsToReturn)
if err != nil {
t.Error("Failed to marshal simulations")
}
w.Write(bytes)
})

// Setup routes
r := mux.NewRouter()
simulationEndpoint := "/" + SimulationAPIBasePath + "/simulations"
r.HandleFunc(simulationEndpoint, simulationsHandler)
testServer := httptest.NewServer(r)
defer testServer.Close()
simulationService := New(mockTokenFetcher, testServer.URL, audience)

// act
simulations, err := simulationService.Simulations(organizationID, []string{status}, []string{sort},
int32(offset), int32(limit))

// assert
mockTokenFetcher.AssertExpectations(t)
assert.Nil(t, err, "Expected no error returned")
assert.Len(t, simulations, 2, "Expected 2 simulations returned.")
}
2 changes: 1 addition & 1 deletion version.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION_TAG=0.3.1
VERSION_TAG=0.3.2