Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions spec/features/comments_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'rails_helper'

describe 'Posts spec' do
let(:comments_page) { CommentsPage.new }
let(:new_comment_page) { NewCommentPage.new }
let(:comment_page) {CommentPage.new}

# Тест проверяет переход на страницу создания комментария по уникальному заголовку
it 'should move to new comment page' do
comments_page.load
click_link 'New Comment'
expect(find('h1')).to have_content('New Comment')
end

# Тест проверяет сообщение после успешного создания комментария
it 'should create new comment and check the message' do
post = create :post
new_comment_page.load
new_comment_page.post_id_field.set post.id
new_comment_page.body_field.set 'Post body'
new_comment_page.create_comment_button.click
expect(comment_page.notice).to have_content('Comment was successfully created.')
end
end
115 changes: 112 additions & 3 deletions spec/features/posts_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,120 @@
require 'rails_helper'

describe 'Posts spec' do
let(:posts_page) { PostPage.new }
let(:post) { create :post }
let(:posts_page) { PostsPage.new }
let(:new_post_page) { NewPostPage.new }
let(:post_page) { PostPage.new }
let(:edit_post_page) { EditPostPage.new }
# let(:post) { create :post }

it 'Reset password for enabled user' do
it 'Open posts list' do
posts_page.load
expect(posts_page).to have_header
end

# Тест проверяет переход на страницу создания поста по уникальному заголовку
it 'Open new post page' do
posts_page.load
click_link 'New Post'
expect(find('h1')).to have_content('New Post')
end

# Тест проверяет наличие сообщения после успешного создания поста
it 'Create new post and check notice' do
new_post_page.load
new_post_page.title_field.set 'Post title'
new_post_page.body_field.set 'Post body'
new_post_page.create_post_button.click
expect(post_page.notice).to have_content('Post was successfully created.')
end

# Тест проверяет что верно сохраняются данные введенные при создании поста
it 'Create new post and check entered data' do
new_post_page.load
new_post_page.title_field.set 'Title1'
new_post_page.body_field.set 'Body1'
new_post_page.create_post_button.click
expect(find(:xpath, ".//p[2]")).to have_content('Title1')
expect(find(:xpath, ".//p[3]")).to have_content('Body1')
end

# Негативный тест. Проверяет что пост без заголовка не создается. Ожидаемо падает
it 'Should not create post without Title' do
new_post_page.load
new_post_page.title_field.set ''
new_post_page.body_field.set 'Post body'
new_post_page.create_post_button.click
expect(posts_page.notice).to have_no_content('Post was successfully created.')
end

# Тест проверяет что по клику на  Show  выполняется переход на страничку верного поста
it 'should check Show link redirect to correct address' do
post = create :post, title: 'test_title'
posts_page.load
click_link 'Show'
expect(page.current_path).to eq("/posts/#{post.id}")
end

# Проверяет что выводятся все созданные посты
it 'should check count of elements on posts page' do
10.times { create :post }
posts_page.load
expect(page).to have_xpath(".//tbody/tr", :count =>10)
end

# Тест проверяет что после удаления пост не выводится в списке.
# Тест падает, так как посты не удаляются и окно с алертом не появляется
it 'should delete post' do
post = create :post, title: 'test_title'
posts_page.load
click_link 'Destroy'
page.driver.browser.switch_to.alert.accept
expect(page).to have_xpath(".//tbody/tr", :count =>0)
end

# Тест проверяет что после удаления появляется сообщение.
# Тест падает, так как посты не удаляются и окно с алертом не появляется
it 'should delete post' do
post = create :post, title: 'test_title'
posts_page.load
click_link 'Destroy'
page.driver.browser.switch_to.alert.accept
expect(posts_page.notice).to have_content('Post was successfully destroyed.')
end

# Тест проверяет что отмене удаления пост не удаляется и выводится в списке.
# Тест падает, так как окно с алертом не появляется
it 'should cancel deleting post' do
post = create :post, title: 'test_title'
posts_page.load
click_link 'Destroy'
page.driver.browser.switch_to.alert.dismiss
expect(page).to have_xpath(".//tbody/tr", :count =>1)
end

# Проверяет сообщение после успешного редактирования
it 'should check message after editing' do
post = create :post, title: 'test title'
visit("/posts/#{post.id}/edit")
edit_post_page.update_post_button.click
expect(post_page.notice).to have_content('Post was successfully updated.')
end

# Проверяет что заголовок изменился после редактирования
it 'should check saving title after editing' do
post = create :post, title: 'test title'
visit("/posts/#{post.id}/edit")
edit_post_page.title_field.set 'Updated Title'
edit_post_page.update_post_button.click
expect(find(:xpath, ".//p[2]")).to have_content('Updated Title')
end

# Проверяет что тело изменилось после редактирования
it 'should check saving body after editing' do
post = create :post, title: 'test title', body: 'qwerty'
visit("/posts/#{post.id}/edit")
edit_post_page.body_field.set 'Asdfg'
edit_post_page.update_post_button.click
expect(find(:xpath, ".//p[3]")).to have_content('Asdfg')
end
end
6 changes: 6 additions & 0 deletions spec/support/page_objects/comment_page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class CommentPage < BasePage
set_url routes.comment_path

element :header, '.header'
element :notice, '#notice'
end
6 changes: 6 additions & 0 deletions spec/support/page_objects/comments_page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class CommentsPage < BasePage
set_url routes.comments_path

element :header, '.header'
element :notice, '#notice'
end
7 changes: 7 additions & 0 deletions spec/support/page_objects/edit_post_page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class EditPostPage < BasePage
set_url routes.edit_post_path

element :title_field, '#post_title'
element :body_field, '#post_body'
element :update_post_button, 'input[type=submit]'
end
7 changes: 7 additions & 0 deletions spec/support/page_objects/new_comment_page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class NewCommentPage < BasePage
set_url routes.new_comment_path

element :post_id_field, '#comment_post_id'
element :body_field, '#comment_body'
element :create_comment_button, 'input[type=submit]'
end
7 changes: 7 additions & 0 deletions spec/support/page_objects/new_post_page.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class NewPostPage < BasePage
set_url routes.new_post_path

element :title_field, '#post_title'
element :body_field, '#post_body'
element :create_post_button, 'input[type=submit]'
end
1 change: 1 addition & 0 deletions spec/support/page_objects/post_page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ class PostPage < BasePage
set_url routes.post_path

element :header, '.header'
element :notice, '#notice'
end
1 change: 1 addition & 0 deletions spec/support/page_objects/posts_page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ class PostsPage < BasePage
set_url routes.posts_path

element :header, '.header'
element :notice, '#notice'
end