func TestCreateDigest(t *testing.T) {
	fakeBus := new(FakeBus)
	fakeBus.On("Send", query.NewNewItemsQuery()).Return(nil)
	resource := newDigestResource(fakeBus, new(FakeMailer))

	digest, err := resource.createDigest()

	assert.NotEmpty(t, digest)
	assert.Nil(t, err)
	fakeBus.AssertExpectations(t)
}
func TestCreateAndSendDigest(t *testing.T) {
	fakeMailer := new(FakeMailer)
	fakeMailer.On("sendMail", "*****@*****.**", "A week digested", nil).Return(nil)
	fakeBus := new(FakeBus)
	fakeBus.On("Send", query.NewNewItemsQuery()).Return(nil)
	resource := newDigestResource(fakeBus, fakeMailer)
	request, _ := http.NewRequest("POST", "/digests", strings.NewReader(``))
	response := NewFakeResponse(t)

	resource.createAndSendDigestHandler(response, request)

	response.AssertStatus(http.StatusOK)
	fakeMailer.AssertExpectations(t)
}
func (resource digestResource) createDigest() ([]byte, error) {
	query := query.NewNewItemsQuery()
	err := resource.bus.Send(query)
	if err != nil {
		return nil, fmt.Errorf("error while sending to bus: %#v\n", err.Error())
	}
	presenter := newDigestPresenter(*query)
	buffer := new(bytes.Buffer)
	err = digestTemplate.Execute(buffer, presenter)
	if err != nil {
		return nil, fmt.Errorf("error while generating reponse body: %#v\n", err.Error())
	}
	return buffer.Bytes(), nil
}
func TestNewDigestPresenter(t *testing.T) {
	feed := domain.NewFeed("http://salut.com")
	feed.ID = "id"
	feed.Title = "Salut"
	query := query.NewNewItemsQuery()
	query.Feeds = []*domain.Feed{feed}
	items := make([]domain.Item, 1)
	query.NewItems[feed.ID] = items

	presenter := newDigestPresenter(*query)

	assert.NotNil(t, presenter)
	assert.Len(t, presenter.Feeds, 1)
	assert.NotEmpty(t, presenter.Feeds[0].Title)
	assert.Len(t, presenter.Feeds[0].Entries, 1)
}