require "#{File.dirname(__FILE__)}/spec_helper" describe "scenario and outline filters (with)" do it_behaves_like 'a name filterable target set', 'scenarios', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter", :expected_results => {'name1' => [{"name" => "name1"}]}}, :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/name_filter", :expected_results => {/name/ => [{"name" => "name1"}, {"name" => "name2"}, {"name" => "name3"}], /name1/ => [{"name" => "name1"}]}} } it_behaves_like 'a tag filterable target set', 'scenarios', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tags", :expected_results => {'@one' => [{'name' => 'Next'}, {'name' => 'Another'}]}}, :multiple_tags => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tags2", :expected_results => {['@one', '@five'] => [{'name' => 'Next'}]}}, :tc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tag_count", :expected_results => {0 => [], 1 => [], 2 => [{"name" => "1 tag"}], 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}], 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}], 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}}, :tc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tag_count", :expected_results => {0 => [], 1 => [{"name" => "1 tag"}], 2 => [{"name" => "1 tag"}, {"name" => "2 tags"}], 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}], 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}}, :tc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tag_count", :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 1 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 2 => [{"name" => "3 tags"}, {"name" => "4 tags"}], 3 => [{"name" => "4 tags"}], 4 => []}}, :tc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/tag_count", :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 1 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 2 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 3 => [{"name" => "3 tags"}, {"name" => "4 tags"}], 4 => [{"name" => "4 tags"}], 5 => []}} } it_behaves_like 'a tag filterable target set', 'outlines', {:single_tag => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tags", :expected_results => {'@one' => [{'name' => 'Next'}, {'name' => 'Another'}]}}, :multiple_tags => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tags2", :expected_results => {['@one', '@five'] => [{'name' => 'Next'}]}}, :tc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tag_count", :expected_results => {0 => [], 1 => [], 2 => [{"name" => "1 tag"}], 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}], 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}], 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}}, :tc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tag_count", :expected_results => {0 => [], 1 => [{"name" => "1 tag"}], 2 => [{"name" => "1 tag"}, {"name" => "2 tags"}], 3 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}], 4 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 5 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}]}}, :tc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tag_count", :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 1 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 2 => [{"name" => "3 tags"}, {"name" => "4 tags"}], 3 => [{"name" => "4 tags"}], 4 => []}}, :tc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/filters/tag_count", :expected_results => {0 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 1 => [{"name" => "1 tag"}, {"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 2 => [{"name" => "2 tags"}, {"name" => "3 tags"}, {"name" => "4 tags"}], 3 => [{"name" => "3 tags"}, {"name" => "4 tags"}], 4 => [{"name" => "4 tags"}], 5 => []}} } it_behaves_like 'a line count filterable target set', 'scenarios', {:lc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_count", :expected_results => {0 => [], 1 => [], 2 => [{"name" => "1 line"}], 3 => [{"name" => "1 line"}, {"name" => "2 lines"}], 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}], 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}}, :lc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_count", :expected_results => {0 => [], 1 => [{"name" => "1 line"}], 2 => [{"name" => "1 line"}, {"name" => "2 lines"}], 3 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}], 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}}, :lc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_count", :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 1 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 2 => [{"name" => "3 lines"}, {"name" => "4 lines"}], 3 => [{"name" => "4 lines"}], 4 => []}}, :lc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_count", :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 1 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 2 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 3 => [{"name" => "3 lines"}, {"name" => "4 lines"}], 4 => [{"name" => "4 lines"}], 5 => []}}} it_behaves_like 'a line filterable target set', 'scenarios', {:exact_line => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_filter", :expected_results => {'all match' => [{"name" => "sc1"}, {"name" => "sc2"}], 'green eggs and ham' => [{"name" => "sc1"}], 'no match' => []}}, :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scenario/line_filter", :expected_results => {/all/ => [{"name" => "sc1"}, {"name" => "sc2"}], /green/ => [{"name" => "sc1"}], /will not be found/ => []}}} it 'should filter by multiple filters' do gs = CQL::Repository.new("#{@feature_fixtures_directory}/scenario/tag_count") result = gs.query do select name from scenarios with tc gt 1 with tc lt 3 end expect(result).to eq([{"name" => "2 tags"}]) end it 'should filter by multiple filters' do gs = CQL::Repository.new("#{@feature_fixtures_directory}/scen_outlines/filters/tag_count") result = gs.query do select name from outlines with tc gt 1 with tc lt 3 end expect(result).to eq([{"name" => "2 tags"}]) end it_behaves_like 'a line count filterable target set', 'outlines', {:lc_lt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count", :expected_results => {0 => [], 1 => [], 2 => [{"name" => "1 line"}], 3 => [{"name" => "1 line"}, {"name" => "2 lines"}], 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}], 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}}, :lc_lte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count", :expected_results => {0 => [], 1 => [{"name" => "1 line"}], 2 => [{"name" => "1 line"}, {"name" => "2 lines"}], 3 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}], 4 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 5 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}]}}, :lc_gt => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count", :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 1 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 2 => [{"name" => "3 lines"}, {"name" => "4 lines"}], 3 => [{"name" => "4 lines"}], 4 => []}}, :lc_gte => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_count", :expected_results => {0 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 1 => [{"name" => "1 line"}, {"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 2 => [{"name" => "2 lines"}, {"name" => "3 lines"}, {"name" => "4 lines"}], 3 => [{"name" => "3 lines"}, {"name" => "4 lines"}], 4 => [{"name" => "4 lines"}], 5 => []}}} it_behaves_like 'a line filterable target set', 'outlines', {:exact_line => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_filter", :expected_results => {'all match' => [{"name" => "sc1"}, {"name" => "sc2"}], 'green eggs and ham' => [{"name" => "sc1"}], 'no match' => []}}, :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/line_filter", :expected_results => {/all/ => [{"name" => "sc1"}, {"name" => "sc2"}], /green/ => [{"name" => "sc1"}], /will not be found/ => []}}} it_behaves_like 'a name filterable target set', 'outlines', {:exact_name => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/name_filter", :expected_results => {'name1' => [{"name" => "name1"}]}}, :regexp => {:fixture_location => "#{CQL_FEATURE_FIXTURES_DIRECTORY}/scen_outlines/name_filter", :expected_results => {/name/ => [{"name" => "name1"}, {"name" => "name2"}, {"name" => "name3"}], /name1/ => [{"name" => "name1"}]}} } # # Example count end