diff --git a/spec/controllers/asset_types_spec.cr b/spec/controllers/asset_types_spec.cr index ff906699..e5ef7aff 100644 --- a/spec/controllers/asset_types_spec.cr +++ b/spec/controllers/asset_types_spec.cr @@ -5,7 +5,19 @@ module PlaceOS::Api Spec.test_404(AssetTypes.base_route, model_name: Model::AssetType.table_name, headers: Spec::Authentication.headers, clz: Int64) describe "index", tags: "search" do - it "should return json when get request is invoked" do + it "should return an empty array when no matching asset types found" do + PlaceOS::Model::Asset.clear + PlaceOS::Model::AssetType.clear + params = HTTP::Params.encode({"zone_id" => "unknown-zone"}) + path = "#{AssetTypes.base_route}?#{params}" + result = client.get(path, headers: Spec::Authentication.headers) + result.status_code.should eq(200) + body = JSON.parse(result.body) + body.as_a?.should_not be_nil + body.as_a.size.should be >= 0 + end + + it "should return json when get request is invoked for matching asset-types" do PlaceOS::Model::Asset.clear PlaceOS::Model::AssetType.clear asset = PlaceOS::Model::Generator.asset.save! diff --git a/src/placeos-rest-api/controllers/asset_types.cr b/src/placeos-rest-api/controllers/asset_types.cr index dfb644a1..db25682a 100644 --- a/src/placeos-rest-api/controllers/asset_types.cr +++ b/src/placeos-rest-api/controllers/asset_types.cr @@ -102,9 +102,9 @@ module PlaceOS::Api SQL result = PgORM::Database.connection do |db| - db.query_one sql, &.read(JSON::PullParser).read_raw + db.query_one sql, &.read(JSON::PullParser?).try &.read_raw end - render json: result + render json: result || "[]" end # show the selected asset type