|
@@ -0,0 +1,47 @@
|
|
|
+package infrastructure
|
|
|
+
|
|
|
+import (
|
|
|
+ "code.osinet.fr/fgm/kurz/domain"
|
|
|
+ "testing"
|
|
|
+ )
|
|
|
+
|
|
|
+const example_valid_http_url = "https://example.com"
|
|
|
+
|
|
|
+func TestEmptyRepo(test *testing.T) {
|
|
|
+
|
|
|
+ domain.RegisterRepositories(
|
|
|
+ MemoryShortURLRepository{},
|
|
|
+ MemoryTargetURLRepository{},
|
|
|
+ )
|
|
|
+
|
|
|
+ _, err := domain.GetTargetURL("whatever")
|
|
|
+ if err == nil {
|
|
|
+ test.Error("Empty repository should not find a target for any URL")
|
|
|
+ }
|
|
|
+
|
|
|
+ s1, isNew, err := domain.GetShortURL(example_valid_http_url)
|
|
|
+ if err != nil {
|
|
|
+ test.Error("Creating a short URL for a valid URL should not fail")
|
|
|
+ }
|
|
|
+ if !isNew {
|
|
|
+ test.Error("The first short URL in an empty repository should be new")
|
|
|
+ }
|
|
|
+ s2, isNew, err := domain.GetShortURL(example_valid_http_url)
|
|
|
+ if err != nil {
|
|
|
+ test.Error("Creating a short URL for a valid URL should not fail")
|
|
|
+ }
|
|
|
+ if isNew {
|
|
|
+ test.Error("The second short URL for an already shortened URL should not be new")
|
|
|
+ }
|
|
|
+ if s1 != s2 {
|
|
|
+ test.Error("The second short URL for an already shortened URL should be the same as the first one")
|
|
|
+ }
|
|
|
+
|
|
|
+ t, err := domain.GetTargetURL(s1)
|
|
|
+ if err != nil {
|
|
|
+ test.Error("Repository should find a target for an existing short URL")
|
|
|
+ }
|
|
|
+ if t != example_valid_http_url {
|
|
|
+ test.Error("Target URL for a short URL should match the target it was created for")
|
|
|
+ }
|
|
|
+}
|