+
+
+
+
Acebook
+
+
+
+
+
+
+
+
+
+
Signed in as
-
+
+
+
+
+
+
Posts
+
+ -
+
+
![Profile]()
+
+
+
+
+
+
![Post image]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html
new file mode 100644
index 000000000..e3092066d
--- /dev/null
+++ b/src/main/resources/templates/profile.html
@@ -0,0 +1,71 @@
+
+
+
+
+
Profile
+
+
+
+
+
+
+
+
+
+
+
+
![Profile Picture]()
+
+
+
Username
+
+
+
+
+
Bio
+
This is the user's bio.
+
+
+
+
+
+
+
+
+
Posts
+
+
+
+
![Profile Picture]()
+
+
+
Username
+
+
+
Post content here
+
+
![Post Image]()
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/users/new.html b/src/main/resources/templates/users/new.html
index 2d763f396..36444f357 100644
--- a/src/main/resources/templates/users/new.html
+++ b/src/main/resources/templates/users/new.html
@@ -1,15 +1,26 @@
-
-
-
-
-
Signup
-
-
-
-
-
\ No newline at end of file
+
+
+
+
Signup
+
+
+
+
+
+
+
+
+
+ Signup
+
+
+
+
+
+
diff --git a/src/test/java/SignUpTest.java b/src/test/java/SignUpTest.java
index b0e16955b..cb85c8eae 100644
--- a/src/test/java/SignUpTest.java
+++ b/src/test/java/SignUpTest.java
@@ -8,7 +8,6 @@
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
diff --git a/src/test/java/com/makersacademy/acebook/model/CommentTest.java b/src/test/java/com/makersacademy/acebook/model/CommentTest.java
new file mode 100644
index 000000000..10d05a350
--- /dev/null
+++ b/src/test/java/com/makersacademy/acebook/model/CommentTest.java
@@ -0,0 +1,42 @@
+package com.makersacademy.acebook.model;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
+
+public class CommentTest {
+
+ private Comment comment;
+ private Post post;
+ private User user;
+
+ @BeforeEach
+ public void setup() {
+ // Mock User
+ user = mock(User.class);
+ user.setUsername("testuser");
+
+ // Create Post
+ post = new Post("Test post content", user);
+
+ // Create Comment
+ comment = new Comment("Test comment content", post, user);
+ }
+
+ @Test
+ public void testCommentContent() {
+ assertEquals("Test comment content", comment.getContent());
+ }
+
+ @Test
+ public void testCommentPost() {
+ assertEquals(post, comment.getPost());
+ }
+
+ @Test
+ public void testCommentUser() {
+ assertEquals(user, comment.getUser());
+ }
+}
diff --git a/src/test/java/com/makersacademy/acebook/model/LikeTest.java b/src/test/java/com/makersacademy/acebook/model/LikeTest.java
new file mode 100644
index 000000000..3e70b682f
--- /dev/null
+++ b/src/test/java/com/makersacademy/acebook/model/LikeTest.java
@@ -0,0 +1,44 @@
+package com.makersacademy.acebook.model;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.time.LocalDateTime;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
+
+public class LikeTest {
+
+ private Like like;
+ private User user;
+ private Post post;
+
+ @BeforeEach
+ public void setup() {
+ // Mock User
+ user = mock(User.class);
+
+ // Create Post
+ post = new Post("Test post content", user);
+
+ // Create Like
+ like = new Like(user, post);
+ }
+
+ @Test
+ public void testLikeUser() {
+ assertEquals(user, like.getUser());
+ }
+
+ @Test
+ public void testLikePost() {
+ assertEquals(post, like.getPost());
+ }
+
+ @Test
+ public void testLikeCreatedAt() {
+ // Check if the createdAt field is not null
+ assertEquals(LocalDateTime.now().getDayOfYear(), like.getCreatedAt().getDayOfYear());
+ }
+}
diff --git a/src/test/java/com/makersacademy/acebook/model/PostTest.java b/src/test/java/com/makersacademy/acebook/model/PostTest.java
index 732aafc6e..2e5d4b91c 100644
--- a/src/test/java/com/makersacademy/acebook/model/PostTest.java
+++ b/src/test/java/com/makersacademy/acebook/model/PostTest.java
@@ -1,17 +1,64 @@
package com.makersacademy.acebook.model;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;
-
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class PostTest {
- private Post post = new Post("hello");
+ private User user;
+ private Post postWithImage;
+ private Post postWithoutImage;
+
+ @Before
+ public void setUp(){
+ user = mock(User.class);
+ when(user.getUsername()).thenReturn("testuser");
+ postWithoutImage = new Post("hello", user);
+ postWithImage = new Post("hello with image", user, "http://image.url/test.jpg");
+ }
@Test
public void postHasContent() {
- assertThat(post.getContent(), containsString("hello"));
+ assertThat(postWithoutImage.getContent(), containsString("hello"));
+ }
+
+ @Test
+ public void postHasUser() {
+ assertEquals("testuser", postWithoutImage.getUser().getUsername());
+ }
+
+ @Test
+ public void postWithImageHasContent() {
+ assertThat(postWithImage.getContent(), containsString("hello with image"));
+ }
+
+ @Test
+ public void postWithImageHasUser() {
+ assertEquals("testuser", postWithImage.getUser().getUsername());
+ }
+
+ @Test
+ public void postWithImageHasImageUrl() {
+ assertEquals("http://image.url/test.jpg", postWithImage.getImageUrl());
+ }
+
+ @Test
+ public void postWithoutImageDoesNotHaveImageUrl() {
+ assertNull(postWithoutImage.getImageUrl());
}
-}
+ @Test
+ public void postHasCreatedAtTimestampWhenCreated() {
+ Post newPost = new Post("timestamped post", user);
+ assertNotNull(newPost.getCreatedAt());
+ assertTrue(ChronoUnit.SECONDS.between(newPost.getCreatedAt(), LocalDateTime.now()) < 1);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/makersacademy/acebook/service/PostServiceIntegrationTest.java b/src/test/java/com/makersacademy/acebook/service/PostServiceIntegrationTest.java
new file mode 100644
index 000000000..1ba95fc61
--- /dev/null
+++ b/src/test/java/com/makersacademy/acebook/service/PostServiceIntegrationTest.java
@@ -0,0 +1,71 @@
+package com.makersacademy.acebook.service;
+
+import com.makersacademy.acebook.model.Post;
+import com.makersacademy.acebook.model.User;
+import com.makersacademy.acebook.repository.PostRepository;
+import com.makersacademy.acebook.repository.UserRepository;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.time.LocalDateTime;
+import java.util.Iterator;
+import java.util.List;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@DataJpaTest
+@Import(PostService.class)
+@ActiveProfiles("test")
+public class PostServiceIntegrationTest {
+
+ @Autowired
+ private PostRepository postRepository;
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @Autowired
+ private PostService postService;
+
+ private User user;
+
+ @Before
+ public void setUp() {
+ user = new User();
+ user.setUsername("testuser");
+ userRepository.save(user);
+
+ Post post1 = new Post("First post", user);
+ post1.setCreatedAt(LocalDateTime.now().minusDays(1));
+ postRepository.save(post1);
+
+ Post post2 = new Post("Second post", user);
+ post2.setCreatedAt(LocalDateTime.now());
+ postRepository.save(post2);
+
+ Post post3 = new Post("Third post", user);
+ post3.setCreatedAt(LocalDateTime.now().minusHours(1));
+ postRepository.save(post3);
+ }
+
+ @Test
+ public void getAllPostsFromNewestToOldestShouldReturnPostsInDescendingOrderOfCreation() {
+ Iterable
postsIterable = postService.getAllPostsFromNewestToOldest();
+ List posts = (List) postsIterable;
+
+ Assert.assertEquals(3, posts.size());
+
+ Iterator iterator = posts.iterator();
+ Assert.assertEquals("Second post", iterator.next().getContent());
+ Assert.assertEquals("Third post", iterator.next().getContent());
+ Assert.assertEquals("First post", iterator.next().getContent());
+ }
+}
\ No newline at end of file
Comments
++-
+
+
+
+
+
+
+