###BeginCaseStudy###
Case Study: 2
Scenario 2
Background
You are developing an online shopping web application.
Business Requirements
• A user is not required to provide an email address. If a user enters an email
address, it must be verified to be a valid email address.
• Information about the first product on the product page must fade out over
time to encourage the user to continue browsing the catalog.
• Administrators must be able to edit information about existing customers.
• Administrators also must be able to specify a default product on the product page.
Technical Requirements
General:
• The web store application is in a load-balanced web farm. The load balancer
is not configured to use server affinity.
• The web store application is an ASP.NET MVC application written in Visual
Studio 2012.
• Products:
• The value of the productId property must always be greater than 0.
• The Products page for mobile devices must display to mobile users. The
Products page for desktop devices must display to desktop users.
Storage:
• The data must be stored in a serialized XML data format.
• Serialized objects must be schema-independent.
Exception handling:
• Exceptions originating from IIS must display a page with support contact
information.
• Some page links expire, and users who access these links encounter 404
errors.
• Exceptions must be logged by using the WriteLog method of the Utility class.
Browser and device support:
• The application must support image format conversions from .bmp to .jpeg for
mobile devices.
• The application must support image format conversions from .bmp to .png for
desktop devices.
Application Structure
###EndCaseStudy###
You need to modify the application to meet the productId requirement. What should you do?
A.
Modify the RegisterGlobalFilters method of the Global.asax.es file as follows.
Contract.Assume<ArgumentException>(productId != 0);
B.
Modify the GetDealPrice method of ProductController as follows.
Contract.Requires<ArgumentException>(productId > 0);
C.
Modify the RegisterGlobalFilters method of the Global.asax.es file as follows.
Contract.Requires<ArgumentException>(productId > 0);
D.
Modify the GetDealPrice method of ProductController as follows.
Contract.Assume<ArgumentException>(productId > 0);
Explanation:
The Contract.Requires(Of TException) method specifies a precondition contract for the
enclosing method or property, and throws an exception if the condition for the contract fails.
Syntax:
‘Declaration
Public Shared Sub Requires(Of TException As Exception) ( _
condition As Boolean _
)
Type Parameters
TException
The exception to throw if the condition is false.
Parameters
condition
Type: System.Boolean
The conditional expression to test.
Reference: Contract.Requires(Of TException) Method (Boolean)
C
Why C?
Why not C?
P.S. It’s C
B is the correct one as you the productId variable will be undefined at Global.asax.cs file