# encoding: utf-8 require 'spec_helper' Predicates = Prismic::Predicates describe 'predicates' do before do @api = Prismic.api('https://micro.prismic.io/api', nil) @master_ref = @api.master_ref @link_resolver = Prismic.link_resolver('master'){|doc_link| "http://localhost/#{doc_link.id}" } end describe 'at predicate' do it 'as an array serializes well' do form = @api.form('everything').query(['at', 'document.id', 'UrjI1gEAALOCeO5i']) form.data['q'].should == ['[[:d = at(document.id, "UrjI1gEAALOCeO5i")]]'] end it 'with helper serializes well' do form = @api.form('everything').query(Predicates.at('document.id', 'UrjI1gEAALOCeO5i')) form.data['q'].should == ['[[:d = at(document.id, "UrjI1gEAALOCeO5i")]]'] end end describe 'not predicate' do it 'as an array serializes well' do form = @api.form('everything').query(['not', 'document.id', 'UrjI1gEAALOCeO5i']) form.data['q'].should == ['[[:d = not(document.id, "UrjI1gEAALOCeO5i")]]'] end it 'with helper serializes well' do form = @api.form('everything').query(Predicates.not('document.id', 'UrjI1gEAALOCeO5i')) form.data['q'].should == ['[[:d = not(document.id, "UrjI1gEAALOCeO5i")]]'] end end describe 'any predicate' do it 'with helper serializes well' do form = @api.form('everything').query(Predicates.any('document.type', ['article', 'blog-post'])) form.data['q'].should == ['[[:d = any(document.type, ["article", "blog-post"])]]'] end end describe 'fulltext predicate' do it 'with helper serializes well' do form = @api.form('everything').query(Predicates.fulltext('document.type', ['article', 'blog-post'])) form.data['q'].should == ['[[:d = fulltext(document.type, ["article", "blog-post"])]]'] end end describe 'similar predicate' do it 'as an array serializes well' do form = @api.form('everything').query(['similar', 'idOfSomeDocument', 10]) form.data['q'].should == ['[[:d = similar("idOfSomeDocument", 10)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query(Predicates.similar('idOfSomeDocument', 10)) form.data['q'].should == ['[[:d = similar("idOfSomeDocument", 10)]]'] end end describe 'has predicate' do it 'as an array serializes well' do form = @api.form('everything').query(['has', 'my.blog-post.author']) form.data['q'].should == ['[[:d = has(my.blog-post.author)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query(Predicates.has('my.blog-post.author')) form.data['q'].should == ['[[:d = has(my.blog-post.author)]]'] end end describe 'missing predicate' do it 'as an array serializes well' do form = @api.form('everything').query(['missing', 'my.blog-post.author']) form.data['q'].should == ['[[:d = missing(my.blog-post.author)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query(Predicates.missing('my.blog-post.author')) form.data['q'].should == ['[[:d = missing(my.blog-post.author)]]'] end end describe 'multiple predicates' do it 'as an array serializes well' do form = @api.form('everything').query( ['date.month-after', 'my.blog-post.publication-date', 4], ['date.month-before', 'my.blog-post.publication-date', 'December'] ) form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, 4)][:d = date.month-before(my.blog-post.publication-date, "December")]]'] end it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month_after('my.blog-post.publication-date', 4), Predicates.month_before('my.blog-post.publication-date', 'December') ) form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, 4)][:d = date.month-before(my.blog-post.publication-date, "December")]]'] end end describe 'number GT' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.gt('my.blog-post.publication-date', 4) ) form.data['q'].should == ['[[:d = number.gt(my.blog-post.publication-date, 4)]]'] end end describe 'number LT' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.lt('my.blog-post.publication-date', 4) ) form.data['q'].should == ['[[:d = number.lt(my.blog-post.publication-date, 4)]]'] end end describe 'number in range' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.in_range('my.product.price', 2, 4.5) ) form.data['q'].should == ['[[:d = number.inRange(my.product.price, 2, 4.5)]]'] end end describe 'date is before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.date_before('my.blog-post.publication-date', Date.parse('2016-03-02') ) ) form.data['q'].should == ["[[:d = date.before(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000})]]"] end end describe 'date is after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.date_after('my.blog-post.publication-date', Date.parse('2016-03-02') ) ) form.data['q'].should == ["[[:d = date.after(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000})]]"] end end describe 'date is between' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.date_between('my.blog-post.publication-date', Date.parse('2016-03-02'), Date.parse('2016-03-04') ) ) form.data['q'].should == ["[[:d = date.between(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000}, #{Date.parse('2016-03-04').to_time.to_i * 1000})]]"] end end describe 'day of month' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_month('my.blog-post.publication-date', 10) ) form.data['q'].should == ['[[:d = date.day-of-month(my.blog-post.publication-date, 10)]]'] end end describe 'day of month after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_month_after('my.blog-post.publication-date', 10) ) form.data['q'].should == ['[[:d = date.day-of-month-after(my.blog-post.publication-date, 10)]]'] end end describe 'day of month before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_month_before('my.blog-post.publication-date', 10) ) form.data['q'].should == ['[[:d = date.day-of-month-before(my.blog-post.publication-date, 10)]]'] end end describe 'day of week' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_week('my.blog-post.publication-date', 7) ) form.data['q'].should == ['[[:d = date.day-of-week(my.blog-post.publication-date, 7)]]'] end end describe 'day of week after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_week_after('my.blog-post.publication-date', 7) ) form.data['q'].should == ['[[:d = date.day-of-week-after(my.blog-post.publication-date, 7)]]'] end end describe 'day of week before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.day_of_week_before('my.blog-post.publication-date', 7) ) form.data['q'].should == ['[[:d = date.day-of-week-before(my.blog-post.publication-date, 7)]]'] end end describe 'month' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month('my.blog-post.publication-date', 5) ) form.data['q'].should == ['[[:d = date.month(my.blog-post.publication-date, 5)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month('my.blog-post.publication-date', 'May') ) form.data['q'].should == ['[[:d = date.month(my.blog-post.publication-date, "May")]]'] end end describe 'month after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month_after('my.blog-post.publication-date', 4) ) form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, 4)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month_after('my.blog-post.publication-date', 'April') ) form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, "April")]]'] end end describe 'month before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month_before('my.blog-post.publication-date', 12) ) form.data['q'].should == ['[[:d = date.month-before(my.blog-post.publication-date, 12)]]'] end it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.month_before('my.blog-post.publication-date', 'December') ) form.data['q'].should == ['[[:d = date.month-before(my.blog-post.publication-date, "December")]]'] end end describe 'year' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.year('my.blog-post.publication-date', 2013) ) form.data['q'].should == ['[[:d = date.year(my.blog-post.publication-date, 2013)]]'] end end describe 'year before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.year_before('my.blog-post.publication-date', 2013) ) form.data['q'].should == ['[[:d = date.year-before(my.blog-post.publication-date, 2013)]]'] end end describe 'year after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.year_after('my.blog-post.publication-date', 2011) ) form.data['q'].should == ['[[:d = date.year-after(my.blog-post.publication-date, 2011)]]'] end end describe 'hour' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.hour('my.blog-post.publication-date', 2) ) form.data['q'].should == ['[[:d = date.hour(my.blog-post.publication-date, 2)]]'] end end describe 'hour before' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.hour_before('my.blog-post.publication-date', 12) ) form.data['q'].should == ['[[:d = date.hour-before(my.blog-post.publication-date, 12)]]'] end end describe 'hour after' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.hour_after('my.blog-post.publication-date', 17) ) form.data['q'].should == ['[[:d = date.hour-after(my.blog-post.publication-date, 17)]]'] end end describe 'geopoint near' do it 'with helpers serializes well' do form = @api.form('everything').query( Predicates.near('my.store.coordinates', 40.689757, -74.0451453, 15) ) form.data['q'].should == ['[[:d = geopoint.near(my.store.coordinates, 40.689757, -74.0451453, 15)]]'] end end end