Как написать rspec для фильтрации сообщений на основе указанного диапазона дат - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть простое приложение для блога, где пользователь может фильтровать сообщение по диапазону дат (start_date & end_date). Я использовал вызов AJAX для отображения сообщения на странице индекса. Как только пользователь задает диапазон дат, используя два средства выбора даты, и нажимает кнопку «Отправить», выполняется вызов AJAX и отображаются отфильтрованные сообщения. Нет проблем в разработке, но в случае тестирования я не знаю, как действовать дальше. Но моя цель - проверить, соответствуют ли сообщения, отображаемые на странице индекса, указанному диапазону дат. Я включил действие datefilter, определенное в контроллерах почты:

def dateFilter
    if (params[:start_date].present? )&& (params[:end_date].present?)
      if Time.parse(params[:start_date])<=Time.parse(params[:end_date])&& (Time.parse(params[:start_date])<= Date.today)&& (Time.parse(params[:end_date])<= Date.today)
        @start_date= params[:start_date].to_date.beginning_of_day
        @end_date=params[:end_date].to_date.end_of_day
      else
        @error = true
      end
    else
      @start_date= Date.yesterday.beginning_of_day
      @end_date=Date.today.end_of_day
    end
    @posts= Post.date_filter(@start_date,@end_date)
  end
На странице индекса я использовал указатель даты следующим образом:

 <%= form_tag({:controller => 'posts', :action => 'dateFilter'},remote: true) do %>
    <%=  date_field_tag 'start_date' %>
    <%=  date_field_tag 'end_date' %>
    <%= submit_tag 'Submit' %>
    <% end %>
  <% end %>

когда выполняется вызов AJAX, он отображает сообщения в виде файла js datefilter.js.erb

<% if @error==true %>
alert("enter correct date format");
<% elsif @posts.blank? %>
alert("No posts in the given date");
<%else %>
$('.post_div').html('<%= j render @posts %>')
<% end %>
$('#page').hide()

Помогите мне написать rspec для вышеуказанного сценария

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете создать несколько сообщений, используя действие перед заданием с указанными датами, и вызвать действие контроллера с диапазоном дат, который, как вы знаете, имеет указанное количество сообщений, и проверить количество ожидаемых сообщений в ответе

Например

@post1 = FactoryBot.create(:post, start_date: DATE) 
@post2 = FactoryBot.create(:post, start_date: DATE) //Using Factory

let(:data) = {
start_date: Date,
end_date: Date}

get:CONTROLLER_ACTION params: data 

Тогда ожидайте ответ согласно вашему требованию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...