| package main |
| |
| import ( |
| "fmt" |
| "testing" |
| |
| "github.com/google/go-cmp/cmp" |
| ) |
| |
| var ( |
| noEventGroup = &Group{Name: "no event group"} |
| upcomingEventGroup = &Group{ |
| Name: "Upcoming Event Group", |
| Timezone: "Europe/Oslo", |
| NextEvent: &Event{ |
| ID: "12345", |
| Name: "Upcoming Event", |
| Time: 1262976000000, |
| }, |
| } |
| fakeGroups = map[string]*Group{ |
| "noEvent": noEventGroup, |
| "ueg": upcomingEventGroup, |
| } |
| ) |
| |
| type fakeClient struct{} |
| |
| func (f fakeClient) getGroupsSummary() (*GroupsSummary, error) { |
| return &GroupsSummary{Chapters: []*Chapter{ |
| {URLName: "noEvent"}, |
| { |
| URLName: "ueg", |
| Description: "We host our own events\n", |
| }, |
| }}, nil |
| } |
| |
| func (f fakeClient) getGroup(urlName string) (*Group, error) { |
| g, ok := fakeGroups[urlName] |
| if !ok { |
| return nil, fmt.Errorf("no group %q", urlName) |
| } |
| return g, nil |
| } |
| |
| func TestGetUpcomingEvents(t *testing.T) { |
| want := &UpcomingEvents{All: []EventData{ |
| { |
| Name: "Upcoming Event", |
| ID: "12345", |
| Description: "We host our own events<br/>\n", |
| LocalDate: "Jan 8, 2010", |
| LocalTime: "2010-01-08T19:40:00+01:00", |
| URL: "https://www.meetup.com/ueg/events/12345", |
| }, |
| }} |
| f := fakeClient{} |
| got, err := getUpcomingEvents(f) |
| if err != nil { |
| t.Fatalf("getUpcomingEvents(%v) error = %v, wanted no error", f, err) |
| } |
| if diff := cmp.Diff(want, got); diff != "" { |
| t.Errorf("getUpcomingEvents(%v) mismatch (-want +got):\n%s", f, diff) |
| } |
| } |