Skip to content

Commit

Permalink
Added /location/ endpoints and unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mtslzr committed Jun 22, 2019
1 parent 6c4e6f2 commit 5033a60
Show file tree
Hide file tree
Showing 3 changed files with 183 additions and 6 deletions.
78 changes: 72 additions & 6 deletions README.md
Expand Up @@ -19,7 +19,6 @@ Wrapper for [Poke API](https://pokeapi.co), written in Go.
- [Utility](#Utility)
- [Not Implemented](#Not-Implemented)
- [Items](#Items-1)
- [Locations](#Locations-1)
- [Moves](#Moves-1)
- [Documentation](#Documentation)

Expand Down Expand Up @@ -319,6 +318,78 @@ import pokeapi "github.com/mtslzr/pokeapi-go"

### Locations

<details>
<summary>Locations</summary>

#### Get Locations

```go
l := pokeapi.Resource("location")
```

#### Get Location

*Must pass an ID (e.g. "1") or name (e.g. "canalave-city").*

```go
l := pokeapi.Location("canalave-city")
```
</details>

<details>
<summary>Location Areas</summary>

#### Get Location Areas

```go
l := pokeapi.Resource("location-area")
```

#### Get Location Area

*Must pass an ID (e.g. "1") or name (e.g. "canalave-city-area").*

```go
l := pokeapi.LocationArea("canalave-city-area")
```
</details>

<details>
<summary>Pal Park Areas</summary>

#### Get Pal Park Areas

```go
l := pokeapi.Resource("pal-park-area")
```

#### Get Pal Park Area

*Must pass an ID (e.g. "1") or name (e.g. "forest").*

```go
l := pokeapi.PalParkArea("forest")
```
</details>

<details>
<summary>Regions</summary>

#### Get Regions

```go
l := pokeapi.Resource("region")
```

#### Get Region

*Must pass an ID (e.g. "1") or name (e.g. "kanto").*

```go
l := pokeapi.Region("kanto")
```
</details>

### Machines

<details>
Expand Down Expand Up @@ -374,11 +445,6 @@ Current progress on remaining endpoints. **Bold** are partially implemented.
- [ ] GET /item-category/{id or name}/
- [ ] GET /item-fling-effect/{id or name}/
- [ ] GET /item-pocket/{id or name}/
### Locations
- [ ] GET /location/{id or name}/
- [ ] GET /location-area/{id or name}/
- [ ] GET /pal-park-area/{id or name}/
- [ ] GET /region/{id or name}/
### Moves
- [ ] GET /move/{id or name}/
- [ ] GET /move-ailment/{id or name}/
Expand Down
31 changes: 31 additions & 0 deletions locations.go
@@ -0,0 +1,31 @@
package pokeapi

import (
"fmt"

"github.com/mtslzr/pokeapi-go/structs"
)

// Location returns a single location (by name or ID).
func Location(id string) (result structs.Location, err error) {
err = do(fmt.Sprintf("location/%s", id), &result)
return result, err
}

// LocationArea returns a single location area (by name or ID).
func LocationArea(id string) (result structs.LocationArea, err error) {
err = do(fmt.Sprintf("location-area/%s", id), &result)
return result, err
}

// PalParkArea returns a single Pal Park area (by name or ID).
func PalParkArea(id string) (result structs.PalParkArea, err error) {
err = do(fmt.Sprintf("pal-park-area/%s", id), &result)
return result, err
}

// Region returns a single region (by name or ID).
func Region(id string) (result structs.Region, err error) {
err = do(fmt.Sprintf("region/%s", id), &result)
return result, err
}
80 changes: 80 additions & 0 deletions tests/locations_test.go
@@ -0,0 +1,80 @@
package tests

import (
"testing"

pokeapi "github.com/mtslzr/pokeapi-go"
"github.com/stretchr/testify/assert"
)

func TestLocation(t *testing.T) {
result, _ := pokeapi.Location("1")
assert.Equal(t, "canalave-city", result.Name,
"Expect to receive Canalave City.")
}

func TestLocationByName(t *testing.T) {
result, _ := pokeapi.Location("canalave-city")
assert.Equal(t, "canalave-city", result.Name,
"Expect to receive Canalave City.")
}

func TestLocationFail(t *testing.T) {
result, _ := pokeapi.Location("asdf")
assert.Equal(t, "", result.Name,
"Expect to receive an empty result.")
}

func TestLocationArea(t *testing.T) {
result, _ := pokeapi.LocationArea("1")
assert.Equal(t, "canalave-city-area", result.Name,
"Expect to receive Canalave City area.")
}

func TestLocationAreaByName(t *testing.T) {
result, _ := pokeapi.LocationArea("canalave-city-area")
assert.Equal(t, "canalave-city-area", result.Name,
"Expect to receive Canalave City area.")
}

func TestLocationAreaFail(t *testing.T) {
result, _ := pokeapi.LocationArea("asdf")
assert.Equal(t, "", result.Name,
"Expect to receive an empty result.")
}

func TestPalParkArea(t *testing.T) {
result, _ := pokeapi.PalParkArea("1")
assert.Equal(t, "forest", result.Name,
"Expect to receive Forest.")
}

func TestPalParkAreaByName(t *testing.T) {
result, _ := pokeapi.PalParkArea("forest")
assert.Equal(t, "forest", result.Name,
"Expect to receive Forest.")
}

func TestPalParkAreaFail(t *testing.T) {
result, _ := pokeapi.PalParkArea("asdf")
assert.Equal(t, "", result.Name,
"Expect to receive an empty result.")
}

func TestRegion(t *testing.T) {
result, _ := pokeapi.Region("1")
assert.Equal(t, "kanto", result.Name,
"Expect to receive Kanto.")
}

func TestRegionByName(t *testing.T) {
result, _ := pokeapi.Region("kanto")
assert.Equal(t, "kanto", result.Name,
"Expect to receive Kanto.")
}

func TestRegionFail(t *testing.T) {
result, _ := pokeapi.Region("asdf")
assert.Equal(t, "", result.Name,
"Expect to receive an empty result.")
}

0 comments on commit 5033a60

Please sign in to comment.