diff --git a/notification_test.go b/notification_test.go new file mode 100644 index 0000000..87f0e32 --- /dev/null +++ b/notification_test.go @@ -0,0 +1,59 @@ +package mastodon + +import ( + "context" + "fmt" + "net/http" + "net/http/httptest" + "testing" +) + +func TestGetNotifications(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case "/api/v1/notifications": + fmt.Fprintln(w, `[{"id": 122, "action_taken": false}, {"id": 123, "action_taken": true}]`) + return + case "/api/v1/notifications/123": + fmt.Fprintln(w, `{"id": 123, "action_taken": true}`) + return + case "/api/v1/notifications/clear": + fmt.Fprintln(w, `{}`) + return + } + http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound) + return + })) + defer ts.Close() + + client := NewClient(&Config{ + Server: ts.URL, + ClientID: "foo", + ClientSecret: "bar", + AccessToken: "zoo", + }) + ns, err := client.GetNotifications(context.Background()) + if err != nil { + t.Fatalf("should not be fail: %v", err) + } + if len(ns) != 2 { + t.Fatalf("result should be two: %d", len(ns)) + } + if ns[0].ID != 122 { + t.Fatalf("want %v but %v", 122, ns[0].ID) + } + if ns[1].ID != 123 { + t.Fatalf("want %v but %v", 123, ns[1].ID) + } + n, err := client.GetNotification(context.Background(), 123) + if err != nil { + t.Fatalf("should not be fail: %v", err) + } + if n.ID != 123 { + t.Fatalf("want %v but %v", 123, n.ID) + } + err = client.ClearNotifications(context.Background()) + if err != nil { + t.Fatalf("should not be fail: %v", err) + } +}