master
1require "rails_helper"
2
3describe Creation::Repository do
4 describe "#tagged" do
5 let(:user) { create(:user) }
6 let(:tag) { "cake" }
7 let(:tagged_cake) { create(:creation, photos_count: 1) }
8 let(:untagged_cake) { create(:creation) }
9
10 before :each do
11 user.tag(tagged_cake, with: tag, on: :tags)
12 end
13
14 it "returns each cake that is tagged" do
15 expect(subject.tagged(tag)).to include(tagged_cake)
16 end
17
18 it "does not return cakes that are not tagged" do
19 expect(subject.tagged(tag)).to_not include(untagged_cake)
20 end
21 end
22
23 describe "#published" do
24 let!(:user){ create(:user) }
25 let!(:published_cake){ create(:creation, user: user) }
26
27 before :each do
28 published_cake.photos.create(image: "example.png", image_processing: nil)
29 end
30
31 let(:results) { subject.published }
32
33 it "returns cakes that do not have photos that are processing" do
34 expect(results.count).to eql(1)
35 expect(results).to match_array([published_cake])
36 end
37 end
38
39 describe "#search" do
40 let(:cake) { create(:creation, name: "Cake") }
41 let(:cup_cake) { create(:creation, name: "Cup Cake") }
42
43 it "returns cakes with a matching name" do
44 expect(subject.search("cake")).to match_array([cake])
45 end
46 end
47
48 context "#search_with" do
49 let(:cake_category) { create(:category) }
50 let(:cookie_category) { create(:category) }
51 let!(:cake) { create(:cake, name: "cake", category: cake_category) }
52 let!(:cookie) { create(:cake, name: "cookie", category: cookie_category) }
53
54 before :each do
55 cake.photos << create(:photo)
56 cookie.photos << create(:photo)
57 end
58
59 it "returns all cakes in a specific category" do
60 cakes = subject.search_with(category: cake_category.slug)
61 expect(cakes).to match_array([cake])
62 end
63
64 it "returns all cakes that match the search query" do
65 cakes = subject.search_with(q: cake.name[0..6])
66 expect(cakes).to match_array([cake])
67 end
68 end
69end