For some reason the order is in address state here instead of cart state when adding customer details. There's a conditional in the view which loads the customer selection dropdown that was not being triggered, so a customer could not be selected (and their existing address was not being filled out in the form).
Fixes:
1)
As an administrator
I want to manage orders
filling customer details
Failure/Error: expect(order.ship_address.lastname).to eq @customer.ship_address.lastname
NoMethodError:
undefined method `lastname' for nil:NilClass
# ./spec/features/admin/orders_spec.rb:179:in `block (2 levels) in <top (required)>'
Add the scoping from the search filters for reports into the logic of building sets like `editable_line_items` before combining them into the query to reduce the number of `line_item` ids in the IN clause.
The `:focus` selector meant that every link that was clicked on was
still highlighted after going back or forward in the browser history. We
don't need that selector because tabs you click on are then active and
are highlighted anyway.
The login modal changes the URL to `#/login` which interfers with our
shop pages. In order to show the right shop page, we need to know which
pages are valid and where we have been before we clicked on Login.
The include directive was listening to all $location paths including
`#login` which is unrelated to the shop tabs. Angular tried to load the
template `shop/login.html` which doesn't exist.
We now whitelist the templates that can be included by having an include
tag for each shop tab/page.
The broadcasting of notifications didn't update properly and I couldn't
find a way to listen to $location updates. I replaced the three
intertwined directives with one controller and a bit more HTML code. Now
we have only one scope that listens to $location and all browser actions
like the back button is reflected in the page.
As nice side-effect, the menu links have now the right destination so
that you can copy the link and paste it into another browser window.
40 lines less code.