require 'spec/spec_helper' require 'spec/helpers/nested_tag_helper' # # Tests for shop order tags module # describe Shop::Tags::Cart do dataset :pages, :shop_orders it 'should describe these tags' do Shop::Tags::Cart.tags.sort.should == [ 'shop:cart:if_cart', 'shop:cart:unless_cart', 'shop:cart', 'shop:cart:id', 'shop:cart:status', 'shop:cart:quantity', 'shop:cart:weight', 'shop:cart:price'].sort end before :all do @page = pages(:home) end before :each do @order = shop_orders(:several_items) end context 'cart tags' do describe '' do context 'success' do it 'should render' do mock(Shop::Tags::Helpers).current_order(anything) { @order } tag = %{success} expected = %{success} @page.should render(tag).as(expected) end end context 'failure' do it 'should render' do tag = %{success} expected = %{success} @page.should render(tag).as(expected) end end end describe '' do context 'success' do it 'should render' do mock(Shop::Tags::Helpers).current_order(anything) { @order } tag = %{success} expected = %{success} @page.should render(tag).as(expected) end end context 'failure' do it 'should render' do mock(Shop::Tags::Helpers).current_order(anything) { nil } tag = %{failure} expected = %{} @page.should render(tag).as(expected) end end end describe '' do context 'success' do it 'should render' do mock(Shop::Tags::Helpers).current_order(anything) { nil } tag = %{success} expected = %{success} @page.should render(tag).as(expected) end end context 'failure' do it 'should render' do mock(Shop::Tags::Helpers).current_order(anything) { @order } tag = %{failure} expected = %{} @page.should render(tag).as(expected) end end end describe 'simple attributes' do before :each do mock(Shop::Tags::Helpers).current_order(anything) { @order } end it 'should render ' do tag = %{} expected = @order.id.to_s @page.should render(tag).as(expected) end it 'should render ' do tag = %{} expected = @order.status @page.should render(tag).as(expected) end it 'should render ' do stub(@shop_order).quantity { 1 } tag = %{} expected = @order.quantity.to_s @page.should render(tag).as(expected) end it 'should render ' do tag = %{} expected = @order.weight.to_s @page.should render(tag).as(expected) end end describe '' do before :each do mock(Shop::Tags::Helpers).current_order(anything) { @order } stub(@order).price { 1234.34567890 } end it 'should render a standard price' do tag = %{} expected = %{$1,234.35} @page.should render(tag).as(expected) end it 'should render a high precision price' do tag = %{} expected = %{$1,234.34567890} @page.should render(tag).as(expected) end it 'should render a custom format' do tag = %{} expected = %{%1+234-35} @page.should render(tag).as(expected) end end end end