spec/spec_helper.rb in grape-app-0.8.0 vs spec/spec_helper.rb in grape-app-0.8.1
- old
+ new
@@ -1,3 +1,60 @@
ENV['RACK_ENV'] ||= 'test'
require 'grape-app'
require 'rack/test'
+
+class Article
+ include Virtus.model
+
+ class Scope
+ include Enumerable
+
+ def maximum(*)
+ map(&:updated_at).max
+ end
+
+ def each
+ yield Article.new(id: 1, title: 'Welcome', updated_at: Time.at(1515151510).utc)
+ yield Article.new(id: 2, title: 'Bye', updated_at: Time.at(1515151520).utc)
+ end
+ end
+
+ def self.all
+ Scope.new
+ end
+
+ attribute :id
+ attribute :title
+ attribute :updated_at
+
+ def to_param
+ id.to_s
+ end
+end
+
+class TestAPI < Grape::API::Instance
+ format :json
+
+ helpers Grape::App::Helpers::Caching
+ helpers Grape::App::Helpers::Params
+
+ get '/articles' do
+ scope = Article.all
+ fresh_when(scope, public: true)
+ scope.map(&:to_hash)
+ end
+
+ get '/articles/:id' do
+ article = Article.all.first
+ article.to_hash if stale?(article, stale_if_error: 5, extras: { a: 1, b: 2 })
+ end
+
+ params do
+ requires :title
+ optional :fresh
+ end
+ post '/articles' do
+ attrs = { id: 9, updated_at: Time.at(1515151515).utc }
+ attrs.update(declared_params)
+ Article.new(attrs).to_hash
+ end
+end