# frozen_string_literal: true require_relative '../../plugin_helper' describe CustomWizard::SubmissionSerializer do fab!(:user) { Fabricate(:user) } let(:template_json) { JSON.parse(File.open( "#{Rails.root}/plugins/discourse-custom-wizard/spec/fixtures/wizard.json" ).read) } before do CustomWizard::Template.save(template_json, skip_jobs: true) wizard = CustomWizard::Wizard.create(template_json["id"], user) CustomWizard::Submission.new(wizard, step_1_field_1: "I am user submission", submitted_at: Time.now.iso8601 ).save @list = CustomWizard::Submission.list(wizard, page: 0) end it 'should return submission attributes' do json_array = ActiveModel::ArraySerializer.new( @list.submissions, each_serializer: described_class ).as_json expect(json_array.length).to eq(1) expect(json_array[0][:id].present?).to eq(true) expect(json_array[0][:user].present?).to eq(true) expect(json_array[0][:submitted_at].present?).to eq(true) end it "should return field values, types and labels" do json_array = ActiveModel::ArraySerializer.new( @list.submissions, each_serializer: described_class ).as_json expect(json_array.length).to eq(1) expect(json_array[0][:fields].as_json).to eq({ "step_1_field_1": { "value": "I am user submission", "type": "text", "label": "Text" } }.as_json) end end