Skip to content

Commit

Permalink
feat(#1660): Add RepositoryStatistics class and corresponding test
Browse files Browse the repository at this point in the history
  • Loading branch information
volodya-lombrozo committed Aug 4, 2023
1 parent 023ee04 commit de7350d
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
53 changes: 53 additions & 0 deletions src/main/java/com/jcabi/github/RepositoryStatistics.java
@@ -0,0 +1,53 @@
package com.jcabi.github;

import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
import javax.json.JsonObject;
import javax.json.JsonValue;
import org.cactoos.map.MapEntry;
import org.cactoos.map.MapOf;

public class RepositoryStatistics {
private final Repo repo;

public RepositoryStatistics(final Repo repo) {
this.repo = repo;
}

Map<String, Object> toMap() throws IOException {
final JsonObject json = repo.json();
return new MapOf<>(
Arrays.stream(KEY.values()).map(key -> key.toEntry(json)).collect(Collectors.toList())
);
}

private enum KEY {
LANGUAGE("language"),
FORKS_COUNT("forks_count"),
STARGAZERS_COUNT("stargazers_count"),
WATCHERS_COUNT("watchers_count"),
SIZE("size"),
OPEN_ISSUES_COUNT("open_issues_count"),
CREATED_AT("created_at"),
UPDATED_AT("updated_at");

private final String key;

KEY(final String key) {
this.key = key;
}

private MapEntry<String, Object> toEntry(final JsonObject object) {
final String k = this.getKey();
final JsonValue value = object.get(k);
return new MapEntry<>(k, value.toString());
}

public String getKey() {
return key;
}
}
}

32 changes: 32 additions & 0 deletions src/test/java/com/jcabi/github/RepositoryStatisticsTest.java
@@ -0,0 +1,32 @@
package com.jcabi.github;

import java.io.IOException;
import java.util.Map;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Test;

/**
* Test case for {@link RepositoryStatistics}.
*
*/
public class RepositoryStatisticsTest {

@Test
public void gathersBasicStatisticsFromRepo() throws IOException {
MatcherAssert.assertThat(
"We expect to have basic statistics from repo",
new RepositoryStatistics(null).toMap(),
Matchers.allOf(
Matchers.hasKey("language"),
Matchers.hasKey("forks_count"),
Matchers.hasKey("stargazers_count"),
Matchers.hasKey("watchers_count"),
Matchers.hasKey("size"),
Matchers.hasKey("open_issues_count"),
Matchers.hasKey("created_at"),
Matchers.hasKey("updated_at")
)
);
}
}

0 comments on commit de7350d

Please sign in to comment.