@@ -46,6 +46,81 @@ module Alchemy
4646 get :index
4747 end
4848
49+ context "when params[:only] is set" do
50+ let ( :pdf_file ) { fixture_file_upload ( "file.pdf" ) }
51+
52+ let! ( :pdf_attachment ) { create ( :alchemy_attachment , name : "PDF" , file : pdf_file ) }
53+
54+ context "to single extension" do
55+ it "should filter attachments by file type from extension" do
56+ attachment
57+ get :index , params : { only : "pdf" }
58+ expect ( assigns ( :attachments ) ) . to contain_exactly ( pdf_attachment )
59+ end
60+ end
61+
62+ context "to multiple extensions" do
63+ let ( :gif_file ) { fixture_file_upload ( "animated.gif" ) }
64+
65+ let! ( :gif_attachment ) { create ( :alchemy_attachment , name : "GIF" , file : gif_file ) }
66+
67+ it "should filter attachments by file type from extension" do
68+ attachment
69+ get :index , params : { only : [ "pdf" , "gif" ] }
70+ expect ( assigns ( :attachments ) ) . to contain_exactly ( pdf_attachment , gif_attachment )
71+ end
72+ end
73+ end
74+
75+ context "when params[:except] is set" do
76+ let ( :pdf_file ) { fixture_file_upload ( "file.pdf" ) }
77+
78+ let! ( :pdf_attachment ) { create ( :alchemy_attachment , name : "PDF" , file : pdf_file ) }
79+
80+ context "to single extension" do
81+ it "should filter attachments by file type from extension" do
82+ get :index , params : { except : "pdf" }
83+ expect ( assigns ( :attachments ) ) . to contain_exactly ( attachment )
84+ end
85+ end
86+
87+ context "to multiple extensions" do
88+ let ( :gif_file ) { fixture_file_upload ( "animated.gif" ) }
89+
90+ let! ( :gif_attachment ) { create ( :alchemy_attachment , name : "GIF" , file : gif_file ) }
91+
92+ it "should filter attachments by file type from extension" do
93+ get :index , params : { except : [ "pdf" , "gif" ] }
94+ expect ( assigns ( :attachments ) ) . to contain_exactly ( attachment )
95+ end
96+ end
97+ end
98+
99+ context "when params[:except] and params[:only] are set" do
100+ let ( :pdf_file ) { fixture_file_upload ( "file.pdf" ) }
101+
102+ let! ( :pdf_attachment ) { create ( :alchemy_attachment , name : "PDF" , file : pdf_file ) }
103+
104+ context "to single extension" do
105+ it "should filter records by file type from extension" do
106+ attachment
107+ get :index , params : { except : "png" , only : "pdf" }
108+ expect ( assigns ( :attachments ) ) . to contain_exactly ( pdf_attachment )
109+ end
110+ end
111+
112+ context "to multiple extensions" do
113+ let ( :gif_file ) { fixture_file_upload ( "animated.gif" ) }
114+
115+ let! ( :gif_attachment ) { create ( :alchemy_attachment , name : "GIF" , file : gif_file ) }
116+
117+ it "should filter records by file type from extension" do
118+ get :index , params : { except : [ "pdf" , "gif" ] }
119+ expect ( assigns ( :attachments ) ) . to contain_exactly ( attachment )
120+ end
121+ end
122+ end
123+
49124 context "when params[:tagged_with] is set" do
50125 it "should filter the records by tags" do
51126 expect ( Attachment ) . to receive ( :tagged_with ) . and_return ( Attachment . all )
0 commit comments